feat(agent): fail-closed seat resolution under MOSAIC_AGENTS_DIR override (#46)
Owner decision after live verification of M18: an explicit agents-dir override that cannot resolve the named seat now refuses the launch (exit 4, names the seat and dir) instead of launching seatless and unbounded. Unsetting the override keeps the M13 plain governed TUI. MOSAIC_ROLES_DIR needs no symmetric change - the M18 gate already refuses unresolvable role contracts. Task suite 88 -> 90 (refusal + refusal-names-the-seat). TOOLS.md Agent section documents the refusal. Suites 24/90/14/17 + verify green.
This commit is contained in:
@@ -499,3 +499,26 @@ tools/ tree; suites green at every gate.
|
||||
Seat roles are ceilings, not labels: the M15 role field now resolves to a
|
||||
versioned contract that seats cannot escalate past. Suites 24/88/14/17 +
|
||||
verify green.
|
||||
|
||||
## Phase 23 follow-up: fail-closed seat resolution under override (#46)
|
||||
|
||||
- Owner live-verified M18 (2026-09-03): ceiling narrowing note with the
|
||||
correct narrowed set, missing-contract refusal message, clean researcher
|
||||
launch, validator positives and negatives, tool-free note — all as
|
||||
expected.
|
||||
- The verification surfaced a governance gap: an explicit
|
||||
MOSAIC_AGENTS_DIR override that cannot resolve the named seat still
|
||||
launched — seatless, unbounded, no role ceiling to bind.
|
||||
- Owner decision: fail closed. agent.sh now refuses (exit 4, names the
|
||||
seat and the dir) when the override is set and no seat definition
|
||||
resolves; unsetting the override keeps the M13 plain governed TUI.
|
||||
MOSAIC_ROLES_DIR needs no symmetric change — the M18 gate already
|
||||
refuses unresolvable contracts.
|
||||
- Task suite 88 → 90 (refusal + refusal-names-the-seat); TOOLS.md Agent
|
||||
section documents the refusal.
|
||||
|
||||
## Result
|
||||
|
||||
Suites 24/90/14/17 + verify green. Seat resolution is now fail closed in
|
||||
every direction: unknown seat under override, declared role without
|
||||
contract, invalid contract, empty ceiling intersection.
|
||||
|
||||
Reference in New Issue
Block a user