fix(tools/_lib): /etc/mosaic host-level fallback for credential resolution #700

Merged
jason.woltje merged 2 commits from fix/credentials-system-fallback into main 2026-07-10 01:57:13 +00:00

2 Commits

Author SHA1 Message Date
Jarvis
c2099114a8 fix(tools/git): guard /etc fallback in detect-platform inline chain
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Review catch on #700: the inline chain switched to /etc/mosaic/
credentials.json unconditionally when the HOME file was absent, even if
/etc was also absent — diverging from _lib/credentials.sh, which keeps
the $HOME default when neither candidate exists. The /etc switch is now
guarded by existence, restoring lib/inline parity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RMoEx7hfdFGjUiCHuN1RRi
2026-07-09 20:31:31 -05:00
Jarvis
806b6f52e1 fix(tools/_lib): add /etc/mosaic host-level fallback to credential resolution
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Under HOME-redirected profile environments (e.g. Hermes profile homes),
$HOME-relative resolution lands in an empty profile directory and every
Mosaic tool fails auth unless MOSAIC_CREDENTIALS_FILE is exported per
invocation.

Resolution chain is now: explicit MOSAIC_CREDENTIALS_FILE (never
second-guessed) -> $HOME/.config/mosaic/credentials.json ->
/etc/mosaic/credentials.json. The resolved path is exported so sourcing
scripts (stack-health.sh) and subprocesses inherit it; the inline site
in detect-platform.sh gets the same chain.

Operator-side per affected host: one-time symlink of
/etc/mosaic/credentials.json to the canonical file. No operator-specific
paths enter the framework.

Closes #699

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RMoEx7hfdFGjUiCHuN1RRi
2026-07-09 16:44:54 -05:00