GA-R structural rulings (grounding audit Phase 4)
Delivery per the operator's recorded directive (register, Phase-4 directives item 5): one draft per exchange, held until ruled; every RATIFIED ruling's Status quotes the operator's exact utterance (GA-R5 discipline, applied to its own drafting). Implementation of ratified rulings happens in Phase 5. Order: GA-R3, GA-R5, GA-R1, GA-R2, GA-R6, GA-R4, GA-R7, stage-status vocabulary A/B.
GA-R3 -- D-number admission criteria
Status: RATIFIED 2026-07-18 (operator, with amendments A1 + A2). Exact utterance: "Ratify with A1 and A2: Amendment A1 (sharpens 1(b)): '(b) a Roosevelt-delta implication, tested as: a future Roosevelt build session would need to grep this decision before touching a built surface. Mentioning Roosevelt, or recording a Roosevelt-era preference, does not qualify; changing what gets built or how it transfers does. Where a single entry mixes both (D-129: an OPS plugin install plus an ARCH transfer profile), the class follows the dominant purpose and the ARCH fragment is split into its own entry or an amendment to the governing ARCH decision.' ; Amendment A2 (completes rule 2): 'Operational choices whose configuration must outlive the stage are recorded in the relevant as-built document (the configuration-of-record authority per the GA-R1/GA-R2 division); the runbook carries the how, the as-built carries the what-is.'"
Ratified ruling text (as amended):
- A new D-number is admitted ONLY if the decision has at least one of: (a) architectural consequence beyond the current stage; (b) a Roosevelt-delta implication, tested as: a future Roosevelt build session would need to grep this decision before touching a built surface. Mentioning Roosevelt, or recording a Roosevelt-era preference, does not qualify; changing what gets built or how it transfers does. Where a single entry mixes both (D-129: an OPS plugin install plus an ARCH transfer profile), the class follows the dominant purpose and the ARCH fragment is split into its own entry or an amendment to the governing ARCH decision; (c) supersession or material amendment of an existing D-number.
- Everything else -- tool options, service settings, plugin lists, host conveniences, process notes -- is an OPERATIONAL choice: it gets a runbook edit or (until GA-R2 lands) a changelog line, and NEVER a new D-number. Operational choices whose configuration must outlive the stage are recorded in the relevant as-built document (the configuration-of-record authority per the GA-R1/GA-R2 division); the runbook carries the how, the as-built carries the what-is.
- Every register entry gains a mandatory one-word class tag: ARCH or OPS. New entries are ARCH by construction (rule 1); the tag exists so the back-catalog stays findable.
- One-time review (Phase 5): D-121..D-129 are class-tagged in place. OPS candidates per the charter: D-126, D-127, D-128, D-129. Numbers are append-only and are KEPT regardless of tag. Per amendment A1, the D-129 ARCH fragment (the Roosevelt metal-edge transfer profile) is split into its own entry or an amendment to the governing ARCH decision during this review.
- Doubt resolves DOWN: if admission is arguable, it is OPS -- a runbook line can be promoted to a D-number later; a diluted register cannot be un-diluted.
Implementation (Phase 5): class-tag sweep of the register template + D-121..D-129 one-time review (incl. the A1 D-129 split); skill sweep carries the admission test.
GA-R5 -- Ruling gate discipline
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.'"
Ratified ruling text (as amended):
- 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.
- 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.
- 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).
- 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. 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.
- An ambiguous or template-form utterance (unfilled brackets, placeholders) rules NOTHING: the recorder stops and asks; nothing is 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.
GA-R1 -- Single source of truth (status), size budget, rotation, as-built division
Status: RATIFIED 2026-07-18 (operator, with amendments C1 + C2). Question as presented (2026-07-18): "Adopt GA-R1 as written -- including the 360-line cap accounting (body + signature section), same-commit rotation, the Phase-5 demotions list, and signature-replacement rule 7 -- or with what amendment?" Operator answer (2026-07-18), exact utterance: "Ratify with C1 and C2: Amendment C1 (new rule): 'Any commit that changes a status CURRENT-STATE.md carries -- a gate's state, a capture's currency, a pin, the decision queue -- updates CURRENT-STATE.md in that same commit. A status-changing commit that does not touch it is defective by construction. Phase-5 implementation: repo-lint gains a check flagging commits that modify state-bearing surfaces (captures, ga-rulings, design-decisions Status lines, ledger gate rows) without touching CURRENT-STATE.md.' ; Amendment C2 (extends rule 1): 'CURRENT-STATE.md is authoritative over other documents, never over measurement. Where a fresh capture or live measurement contradicts it, the measurement wins: the document is corrected in the same commit as the new capture, and the divergence is noted rather than silently harmonized.'"
Ratified ruling text (as amended; rule 1 extended by C2, rule 8 added by C1):
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. CURRENT-STATE.md is authoritative over other documents, never over measurement. Where a fresh capture or live measurement contradicts it, the measurement wins: the document is corrected in the same commit as the new capture, and the divergence is noted rather than silently harmonized.
- 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.
- 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).
- 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.)
- 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.
- 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.
- 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.
- Any commit that changes a status CURRENT-STATE.md carries -- a gate's state, a capture's currency, a pin, the decision queue -- updates CURRENT-STATE.md in that same commit. A status-changing commit that does not touch it is defective by construction. Phase-5 implementation: repo-lint gains a check flagging commits that modify state-bearing surfaces (captures, ga-rulings, design-decisions Status lines, ledger gate rows) without touching CURRENT-STATE.md.
GA-R2 -- Changelog consolidation
Status: DRAFT (delivered 2026-07-18; awaiting operator ruling).
Proposed ruling text:
- Changelogs are session-scoped scratch: they record what a session did. They are NEVER citable as status authority (Phase 1 proved they lie -- GA-F14; standing wording per the charter).
- On stage close, per-stage consolidation (the proven v1 do-doc pattern): the stage's changelogs collapse into ONE consolidated per-stage record; the individual files are preserved in git history via the consolidation commit and removed from the working set.
- Consolidation ROUTES content to its durable home per the as-built division (GA-R1 rule 6): configuration-of-record detail to the relevant as-built; traps and invariants to platform-traps/the skill; ruling material to design-decisions; narrative history to the consolidated stage record (or docs/archive/). Status content is CURRENT-STATE.md's alone and is not copied anywhere.
- Working-set target: docs/ under 25 files. The one-time Phase-5 sweep consolidates the existing 95 changelogs per stage to reach it, history preserved.
- A changelog is named and scoped to its session and stage; nothing in a changelog outlives consolidation except by moving to a durable home (rule 3). No new doc class is created to work around this.
Drafts not yet delivered: GA-R6, GA-R4, GA-R7, stage-status vocabulary A/B (in that order).