docs(plan): mark v5.4.0 Feature 3 DONE — Session B complete [skip-docs]

CA-SET autoMode shipped (3633571). All 3 Session B features built+pushed;
suite 936->949. Premise #3 confirmed against primary source (per-file-scope
gate passed). Next: Session C release (needs operator GO).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ter3E2JSi1Khgmuf2kady8
This commit is contained in:
Kjell Tore Guttormsen 2026-06-19 22:15:26 +02:00
commit d77c18aa53

View file

@ -94,7 +94,14 @@ must be pinned before coding). Checkpoint STATE + this plan after each feature.
- **Tests:** fixture `skills: ["valid-dir", "points-to-file.md", "missing", "../escape"]` → one
finding per bad entry, none for `valid-dir`; fixture with no `skills:` key → not flagged.
### Feature 3 — SET autoMode structure + dead-config (`CA-SET-NNN`)
### Feature 3 — SET autoMode structure + dead-config (`CA-SET-NNN`) ✅ DONE (commit `3633571`)
- **Premise CONFIRMED against primary source** (`code.claude.com/docs/en/auto-mode-config`) — the
plan was correct this time (unlike #1/#2). 4 sub-keys verbatim; `"$defaults"` valid; exact scope
exclusion quote confirmed. **Per-file-scope gate PASSED:** `ConfigFile` already carries `scope`
(`classifyScope``'project'` for shared `.claude/settings.json`), so the dead-config sub-check
shipped (no fallback to structure-only needed). SET is in the orchestrator → **SC-5 re-checked,
byte-equal** (snapshot fixture has no autoMode). +5 tests (944→949), suite green, self-audit A/A,
count 13, gitleaks clean. Fixtures force-added (`.claude/` gitignored).
- **What (two sub-checks):**
1. **Structure validation**`autoMode`, if present, must be an object whose only keys are
`environment`, `allow`, `soft_deny`, `hard_deny`, each a **string array** (entries are prose