b3e3a0a335
When HOME environment variable is not set (common in cron jobs or other non-TTY environments), `shellexpand::tilde` returns the literal `~` unexpanded. This caused SOUL.md, IDENTITY.md, and other workspace files to not be loaded because the workspace_dir path was invalid. This fix adds `expand_tilde_path()` helper that falls back to `directories::UserDirs` when shellexpand fails to expand tilde. If both methods fail, a warning is logged advising users to use absolute paths or set HOME explicitly in cron environments. Closes #3819