diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 517d675..aaf75d0 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -208,7 +208,7 @@ | # | Gate | What closes it | Owner | Evidence of current state | |---|------|----------------|-------|---------------------------| | G1 | Audit Phase 3: fresh-agent grounding test | 3 clean-context probes score the 7-question set against this doc; holes map made | session | CLOSED 2026-07-18: 3 probes, 21/21 PASS, holes H1 (amended into G9) + H2 (no action) -- `docs/audit/phase3-grounding-test-20260718.md` | -| G2 | Audit Phase 4: GA-R1..R7 structural rulings + the stage-status vocabulary A/B | operator rules each individually | operator | IN PROGRESS: GA-R3, GA-R5, GA-R1, GA-R2, GA-R6 RATIFIED 2026-07-18 (`docs/audit/ga-rulings.md`); GA-R4 draft delivered; GA-R7, vocabulary A/B pending | +| G2 | Audit Phase 4: GA-R1..R7 structural rulings + the stage-status vocabulary A/B | operator rules each individually | operator | IN PROGRESS: GA-R3, GA-R5, GA-R1, GA-R2, GA-R6, GA-R4 RATIFIED 2026-07-18 (`docs/audit/ga-rulings.md`); GA-R7 draft delivered; vocabulary A/B pending | | G3 | Audit Phase 5: repair sweep of GA-F01..F14 (incl. memory hygiene GA-F05..F08, skill sweep) | operator-gated fix batches, each commit naming its GA-F | operator + session | FREEZE in effect; zero fixes applied (charter section 1) | | G4 | The two D-130 verifications (charter-exempt, read-only/throwaway): (v7) v0.9.8 volume-replace-under-running-domain on a throwaway domain; (v8) lifecycle ignore_changes suppression of the forced replacement | run them, capture output | session | TO RUN (`docs/audit/env-snapshot-20260718.md:47-49`) | | G5 | D-130 mechanism ruling (seed-volume durable fix) | operator rules in Phase 5, quoting G4's captured output | operator | D-130 unassigned; next-free D confirmed 130 (`ledger-scan` run 2026-07-18; no `^## D-130` in design-decisions.md) | diff --git a/docs/audit/ga-rulings.md b/docs/audit/ga-rulings.md index 5c35539..6eff166 100644 --- a/docs/audit/ga-rulings.md +++ b/docs/audit/ga-rulings.md @@ -301,29 +301,97 @@ ## GA-R4 -- Ledger rotation -**Status: DRAFT (delivered 2026-07-18; awaiting operator ruling).** +**Status: RATIFIED 2026-07-18 (operator, with amendments F1 + F2 + F3).** +Question as presented (2026-07-18): "Adopt GA-R4 as written -- with the +15-line per-session cap and 300-line live-ledger cap as proposed -- or +with what amendment (including different cap numbers)?" Operator answer +(2026-07-18), exact utterance: "Ratify with F1, F2, and F3: Amendment F1 +(cap semantics): 'The 300-line cap binds at session close: after writing +the close summary, rotate oldest closed-session summaries until under +cap. An OPEN session's in-flight section is never rotated (nothing moves +out from under a live session) but counts toward the cap -- a +long-running session forces older summaries out rather than being +truncated itself.' ; Amendment F2 (new rule): 'A session finding an +orphaned in-flight section (no close bookend, session verifiably ended) +closes it post-hoc: a summary marked "closed post-hoc by ; +original did not bookend", body archived per rule 2. Post-hoc summaries +carry no status weight -- they record that the session happened, not that +its work is durable.' ; Amendment F3 (extends rule 5): 'The SEC register +of record is docs/security-ledger.md; the session ledger's +machine-derived block may carry a pointer and a scan-derived count, never +row-level dispositions. Phase 5 repoints ledger-scan's SEC reporting (and +G14's evidence cell) at security-ledger.md accordingly.'" -**Proposed ruling text:** +**Ratified ruling text (as amended; rule 3 extended by F1, rule 5 +extended by F3, rule 7 added by F2):** 1. Session close writes a BOUNDED summary to `docs/session-ledger.md`: hard cap 15 lines per closed session. 2. The closed session's full body moves to `docs/archive/` (dated file) in the same close commit; the ledger keeps the summary plus a one-line pointer to the archived body. -3. The ledger's live working set stays under 300 lines total. If a close - would exceed it, the oldest closed-session summaries rotate to the - archive in the same commit. +3. The ledger's live working set stays under 300 lines total. The cap + binds at session close: after writing the close summary, rotate oldest + closed-session summaries until under cap. An OPEN session's in-flight + section is never rotated (nothing moves out from under a live session) + but counts toward the cap -- a long-running session forces older + summaries out rather than being truncated itself. 4. Fence discipline is unchanged: the `--fences` validation and section ownership rules stay exactly as they are; the machine-derived section remains machine-owned. 5. The ledger records SESSION narrative only (what happened, in what order, what was handed off). Status remains CURRENT-STATE.md's alone (GA-R1): a ledger line touching status is a pointer, never a claim. + The SEC register of record is `docs/security-ledger.md`; the session + ledger's machine-derived block may carry a pointer and a scan-derived + count, never row-level dispositions. Phase 5 repoints ledger-scan's + SEC reporting (and G14's evidence cell) at security-ledger.md + accordingly. 6. One-time Phase-5 rotation: the current ~1142-line ledger is rotated per rules 1-3 (bodies to archive, bounded summaries retained), history preserved in git. +7. Orphaned sessions (F2): a session finding an orphaned in-flight + section (no close bookend, session verifiably ended) closes it + post-hoc: a summary marked "closed post-hoc by ; original did + not bookend", body archived per rule 2. Post-hoc summaries carry no + status weight -- they record that the session happened, not that its + work is durable. --- -Drafts not yet delivered: GA-R7, stage-status vocabulary A/B (in that -order). +## GA-R7 -- Memory governance + +**Status: DRAFT (delivered 2026-07-18; awaiting operator ruling).** + +**Proposed ruling text:** + +1. Auto-memory (the project MEMORY.md index and its topic files) may + record OBSERVATIONS and CONVENTIONS: measured facts, environment + traps, repeatable techniques, naming/layout conventions. It may NEVER + record operator policy, standing instructions, priorities, or + postures. +2. Policy and standing instructions live in the REPO with quoted + provenance per GA-R5. If a memory-worthy insight is actually policy, + it is PROPOSED to the operator for a repo ruling -- not memorized. +3. Any memory entry claiming operator intent ("operator wants...", + "operator ruling...", "prioritize X over Y") is PROPOSED-only until + the operator confirms the claim verbatim. Unconfirmed intent claims + are removed on discovery and registered as findings. +4. Every memory entry carries its origin scope: session, date, and the + task the observation came from. An instruction observed in one task is + recorded as scoped to THAT task unless the operator states otherwise + (this is the GA-F06 mechanism killer: a one-time instruction can no + longer generalize itself into a standing rule). +5. Memory is subordinate to the repo: on any divergence the repo wins and + the memory entry is corrected or deleted (the skill's divergence rule, + extended to memory). +6. Chartered Phase-5 hygiene under this ruling: correct or remove + `review-after-each-step.md` and `project-posture-closed-test.md` per + the operator's recorded provenance rulings (GA-F06/GA-F07), update the + MEMORY.md index (GA-F08), fix the stale hostname in + `multi-workstation-remote-control.md` (GA-F05), and add the skill + line: "Claude Code sessions launch from the repo root, always." + +--- + +Drafts not yet delivered: stage-status vocabulary A/B (last item).