diff --git a/docs/audit/ga-rulings.md b/docs/audit/ga-rulings.md index e3a0604..d85e145 100644 --- a/docs/audit/ga-rulings.md +++ b/docs/audit/ga-rulings.md @@ -66,26 +66,91 @@ ## GA-R5 -- Ruling gate discipline -**Status: DRAFT (delivered 2026-07-18; awaiting operator ruling).** +**Status: RATIFIED 2026-07-18 (operator, with amendments B1 + B2).** +Question as presented (2026-07-18): "Adopt GA-R5 as written (rules 1-5), +or with what amendment?" Operator answer (2026-07-18), exact utterance: +"Ratify with B1 and B2: Amendment B1 (extends rules 2 and 5): 'The Status +block quotes both the single question as presented and the operator's +answer, each with date. An answer that does not resolve the question as +presented rules nothing -- responsiveness failure is treated identically +to template-form ambiguity: the recorder stops and asks (D-123 precedent). +For operator-initiated rulings, where no question was presented, the +recorder restates the decision as understood in one line, the operator +confirms, and both the original utterance and the confirmed restatement +are quoted.' ; Amendment B2 (extends rule 4): 'The draft text presented +for ruling is itself committed (marked DRAFT) before or with its +presentation. The as-ratified text must be diffable in git history against +the presented draft, so that any consolidation of amendments is +mechanically auditable rather than trusted.'" -**Proposed ruling text:** +**Ratified ruling text (as amended):** 1. Rulings are gated like mutations: ONE decision presented and ruled per operator exchange. Batch adoptions ("adopt all of the above") are invalid; each decision gets its own exchange. 2. Every ruling's Status line quotes the operator's exact utterance and its date. A Status line without the quoted utterance is not a ruling. + The Status block quotes both the single question as presented and the + operator's answer, each with date. 3. Scope: D-number rulings and amendments, GA-R ratifications, SEC-row dispositions, and any standing policy or preference recorded on any surface (including memory surfaces, per GA-R7 when ratified). 4. A ruling exists only when committed: an in-session operator answer is written to its Status line and pushed in the same session, before any - dependent work proceeds. An unrecorded ruling is not a ruling. + dependent work proceeds. An unrecorded ruling is not a ruling. The + draft text presented for ruling is itself committed (marked DRAFT) + before or with its presentation. The as-ratified text must be diffable + in git history against the presented draft, so that any consolidation + of amendments is mechanically auditable rather than trusted. 5. An ambiguous or template-form utterance (unfilled brackets, placeholders) rules NOTHING: the recorder stops and asks; nothing is - inferred from it. + inferred from it. An answer that does not resolve the question as + presented rules nothing -- responsiveness failure is treated + identically to template-form ambiguity: the recorder stops and asks + (D-123 precedent). For operator-initiated rulings, where no question + was presented, the recorder restates the decision as understood in one + line, the operator confirms, and both the original utterance and the + confirmed restatement are quoted. --- -Drafts not yet delivered: GA-R1, GA-R2, GA-R6, GA-R4, GA-R7, stage-status +## GA-R1 -- Single source of truth (status), size budget, rotation, as-built division + +**Status: DRAFT (delivered 2026-07-18; awaiting operator ruling).** + +**Proposed ruling text:** + +1. `docs/CURRENT-STATE.md` is the ONLY status authority. A status claim + (stage state, gate state, plan count, version pin, deploy readiness, + decision-queue state) is hand-written NOWHERE else; every other surface + either points at CURRENT-STATE.md or is history. +2. CURRENT-STATE.md itself asserts nothing unevidenced: every claim cites + captured command output (dated capture files under `docs/audit/`, or a + quoted command + output), a path:line, or a commit hash. +3. Demotions (implemented in Phase 5): the workflow doc's stage table + keeps stage IDENTITY and links only; `dc0-deploy-readiness.md` demotes + to a checklist citing the plan capture, its fresh-session banner + replaced by a one-line pointer to the G9 canonical entry path (GA-F02 + scope addition); README, opentofu/README, and the skill drop every pin + and status CURRENT-STATE.md owns (pointers allowed). +4. Size budget: hard cap 360 lines total -- ~350 for the body (sections + 1-10) plus the standing signature section. If a proposed edit would + exceed the cap, the edit is wrong, not the cap. (At drafting: 356.) +5. Rotation: anything that stops being CURRENT -- a closed gate, a + resolved decision, a superseded capture, a historical measurement -- + moves OUT in the SAME commit that closes it: configuration-of-record + detail to the relevant as-built; narrative history to the archive. At + most a one-line pointer remains. +6. Division of authority: CURRENT-STATE.md = STATUS (what IS, what is + OPEN). As-built documents (one per site/surface, the + vr1-office1-as-built pattern) = CONFIGURATION-of-record for completed + surfaces (what WAS BUILT and HOW, with evidence). Neither duplicates + the other; they point. +7. The operator must be able to read the document in full before any + signature. Each new signature REPLACES the signature section (git + history keeps the old ones); signature blocks do not accumulate. + +--- + +Drafts not yet delivered: GA-R2, GA-R6, GA-R4, GA-R7, stage-status vocabulary A/B (in that order).