fix(auth): mosaic-managed auth lives under the data root, never ~/.pi (#48)
Owner direction: the stack must never impact default harness usage. Correction to M19 as shipped (nothing had been created in ~/.pi — the move breaks nothing). - Mosaic-managed accounts: <dataRoot>/auth/<account>.json, perms 0600 enforced (loose perms flagged in listings, refused by --auth — mirrors gitea-api.sh credential hygiene). - ~/.pi is read-only to the stack, permanently; the only interaction remains the existing read-only container mount of the default credential. Recorded as a ROADMAP standing decision. - auth.sh is now config-driven (data root from config.json, fail closed, consistent with every other tool); status reports both sources labeled. - agent.sh --auth resolution moved after load_config (needs the data root); missing/symlinked/non-0600 accounts refuse. - test-auth.sh: 15 no-Docker cases (accounts-create-nothing, loose-perms refusal, invalid-config refusal added). Test-authoring correction recorded in BUILD-LOG (fixture-state mismatch caught before running). Suites 24/15/90/14/17 + verify green.
This commit is contained in:
@@ -553,3 +553,31 @@ Auth is checkpointable without exposing credentials, and multi-account has
|
||||
a per-launch path. Suites 24/90/14/17/13 + verify green. The agreed
|
||||
ROADMAP sequence M16–M19 is complete; M20 (packages/* restructure +
|
||||
unified CLI) is owner-gated.
|
||||
|
||||
## Phase 24 follow-up: auth ownership corrected — data root, never ~/.pi (#48)
|
||||
|
||||
- Owner correction after M19 review: mosaic-managed named accounts must
|
||||
not live inside ~/.pi — the stack must never impact default harness
|
||||
usage. Recorded as a ROADMAP standing decision: the stack never writes
|
||||
to default harness config locations; ~/.pi is read-only to the stack.
|
||||
- Correction noted honestly: M19 as shipped placed accounts beside
|
||||
~/.pi/agent/auth.json. Nothing had been created there (accounts reported
|
||||
none), so the move breaks nothing.
|
||||
- auth.sh is now config-driven (data root from config.json, fail closed —
|
||||
consistent with every other tool); status reports both sources labeled:
|
||||
default harness credential (read-only to the stack) + mosaic-managed
|
||||
accounts.
|
||||
- Accounts live at <dataRoot>/auth/<account>.json, perms 0600 enforced:
|
||||
loose perms flagged in listings and refused by agent.sh --auth
|
||||
(mirrors scripts/gitea-api.sh credential hygiene).
|
||||
- Test-authoring correction: the first suite rewrite asserted "(none)" in
|
||||
cases whose fixtures had already created accounts; caught on review
|
||||
before any run, assertions rewritten to match fixture state.
|
||||
- auth.sh suite: 13 → 15 cases (accounts-create-nothing, loose-perms
|
||||
refusal, invalid-config refusal added).
|
||||
|
||||
## Result
|
||||
|
||||
Suites 24/15/90/14/17 + verify green. Default harness usage is untouched
|
||||
by design; all mosaic-managed credentials live inside the governed data
|
||||
root.
|
||||
|
||||
Reference in New Issue
Block a user