Skip to content

Attested REQ Whose Subject a Later Ruling Retired

Canonical expansion for the binding bullet in AGENTS.md § OBPI Acceptance Protocol (in governance-core.md § Non-negotiable rules until that rule was folded into the root contract, 2026-09-17). Authored under GHI #823 after the transition had been resolved correctly twice from first principles and recorded nowhere an agent would find it. Home ruled by the operator 2026-08-18: the binding bullet lives in governance-core.md (then) because it was the only rule whose paths: scope (**/*) loads for both known instances — one edited tests/**, the other edited a JSON data file, and a tests/**-scoped rule would have missed the second by construction.

The transition

An attested REQ asserts something about a surface. A later doctrine ruling retires that surface's subject. The REQ's parent ADR is terminal and cannot be amended.

The population is bounded and non-empty: every terminal ADR carrying attested REQs whose subject a later ruling can retire. ADR-0.0.37 alone produced two instances in sixteen days.

Why the usual repair is unavailable

Ordinary doctrine drift is repaired by amending the artifact that carries the claim. Here that move is unavailable by construction — a terminal ADR (ADR-0.0.37 § Terminal Disposition, "Split-and-Supersede", 2026-07-18) cannot accept an amendment, and its permanently-withdrawn OBPIs cannot accept new work. So the disposition has to live somewhere other than the ADR, which is what makes this a distinct class rather than an instance of doc drift.

Note where an agent is actually standing when this fires: in tests/, or in data/, or wherever the retired surface lives — not in docs/design/adr/**. Nobody edits a terminal ADR, because it is terminal. A rule scoped to the ADR tree would never load.

The two wrong answers

Both are locally plausible, which is why this needs writing down:

Wrong answer Why it fails
Delete the covering test / retire the file Orphans an attested REQ. The attestation record then claims proof that no longer exists — the record is falsified, not updated.
Keep it unchanged The surface now asserts retired doctrine. The suite fails, or the fence encodes a claim the codebase has ruled against.

The disposition (binding)

  1. Read what the REQ literally asserts — not what its surface currently demonstrates, and not what you assume it was for. These routinely differ, and the difference is the whole procedure.
  2. Repair the surface so that literal assertion stays true. The surface is repairable; the attested assertion is the invariant.
  3. Preserve the proof-channel binding. The @covers tag, the ledger citation, or the ## Boundary Invariants entry stays attached. Moving or dropping it is the delete answer wearing a repair's clothes.
  4. Record the amendment and its reason at the surface — the test docstring, the file, the commit body. A silent repair leaves the next reader deriving this again, which is the failure GHI #823 was filed on.

The discriminator — when this does NOT apply

The procedure works because in both known instances the REQ's literal assertion was doctrine-neutral: it survived the ruling untouched, and only the surface underneath it was stranded.

If a REQ literally asserts the retired doctrine, step 2 has nothing to repair toward — no rewriting of the surface can make a retired claim true. No procedure is claimed for it. The honest disposition is operator escalation: the attestation is a true historical record of what was decided on its date, the ruling is a true statement of what is decided now, and reconciling two true records on an unamendable artifact is a governance decision rather than an editing task. Do not stretch the procedure above to cover it. One instance has been escalated and ruled (§ Worked example 3); that ruling decided its own case and is not a procedure for the next one.

Worked example 1 — four @covers tests (GHI #819, da935dc35, 2026-08-17)

TestPerVendorTemperatureRouting carried four @covers tests for REQ-0.0.37-15-01 through -04, naming codex and claude as AgentContract consumers — which OBPI-0.35.0-09 retired. The commit body records the reasoning verbatim:

They cover REQ-0.0.37-15-01 through -04 on ADR-0.0.37, which is TERMINAL and cannot be amended, so the tests are repaired rather than deleted -- deleting them would orphan attested REQs.

The assertions were doctrine-neutral all along; only the vendor names were stranded

Step 1 is visible in that second sentence: the REQ asserted that the resolver routes, not that AgentContract routes per-vendor. REQ-15-01 was repointed to exercise two content types — Rule (genuinely per-vendor) and AgentContract (root-only) — proving the mechanism without asserting the retired claim.

Step 4 is visible too. REQ-15-04's docstring had reserved space for "the intended future where codex and claude are tuned to diverge"; the amendment records that the future is foreclosed rather than quietly deleting the sentence.

Worked example 2 — a JSON invariant seed file (2026-08-02)

The foundation-adr-registers-invariant entry in data/constitutional_invariant.json declared a structural witness that never existed, and the Foundation Sunset froze its subject set permanently. The reasoning, verbatim from docs/governance/build-to-1.0-campaign-2026-08-16.md:

The file is retained, not deleted — REQ-0.0.37-01-03 (attested, OBPI-0.0.37-01) asserts only that the three seed files exist, load via load_invariants, and validate against the schema, never that the claim text is true; rewriting claim + structural_witness preserves attested canon exactly, deleting the file would falsify it.

This is the instance that fixes the rule's home. It touched a JSON data file, not a test — so the @covers side of the transition was not where an agent was standing, and a tests/**-scoped rule would have been silent.

Note also "asserts only that … never that the claim text is true". That is step 1 performed explicitly, and it is the sentence to imitate.

Worked example 3 — a REQ that literally asserts the retired claim (GHI #1103, 2026-09-26)

The first instance of the discriminator case. REQ-0.0.29-02-06 (attested, OBPI-0.0.29-02, Completed) read: "Given no archetype rule matches a metric crossing, when the engine runs, then archetype=long_parameter_list (default) is bound and recommended_move is populated from the distilled-characteristics document, never from a fabricated string." The default named a real archetype for every unmatched crossing — 1178 of 2193 diagnoses over src/gzkit, one-parameter functions labelled Long Parameter List — so no repair of the surface could keep the literal assertion true and fix the defect. Step 2 had nothing to repair toward.

It was escalated with three choices: amend the REQ in place, leave the REQ as history and drop its @covers binding, or hold the fix. The operator ruled, verbatim: "fix 1103 with an explicit unclassified archetype" and "Amend in place (Recommended)". So:

  • the REQ line keeps its attested text and gains a dated Amended 2026-09-26 note quoting the ruling — the record of 2026-05-06 is not rewritten;
  • the covering test keeps @covers("REQ-0.0.29-02-06") and asserts the amended behaviour, with its docstring recording why;
  • the REQ's second clause (recommended_move never fabricated) was doctrine-neutral and kept its original covering test unchanged — step 1 applied clause by clause.

What this is not

  • Not GHI #611 (open) — that covers undoing agent or human error. Here the attestation was correct when made; a later ruling retired its subject. Nothing needs undoing. Same neighbourhood — append-only corrections to attested canon — different premise.
  • Not gz obpi repudiate or gz obpi withdraw. Per AGENTS.md § Gate Covenant (withdraw vs repudiate), repudiate is for a fraudulent or invalid completion and withdraw is for an OBPI that is no longer needed. This completion was neither.
  • Not an ADR amendment. The ADR is terminal. That is the premise, not an obstacle to route around.
  • GHI #823 — the class; this document is its discharge
  • GHI #819 — closed 2026-08-18; the instance the class was named in
  • GHI #611 — open; adjacent, see § What this is not
  • GHI #804 — open; adjacent on attested-REQ lifecycle (an attested deferred frontier with no owner)
  • ADR-0.0.37-constitutional-invariant-composition § Terminal Disposition — terminal 2026-07-18; the source of both known instances
  • docs/governance/req-scope-discipline.md — REQ kinds and proof channels at authoring time; this document covers the post-attestation case that one does not