Ruled: fix, don't document. The argument that settled it — a red test on a
serving-path contract left with an explanatory note IS the H-8 failure mode, a
document acknowledging a gap instead of closing it, which becomes the next
assessor's finding.
Two distinct failures, and the second is the serious one.
1. THE CEREMONY PINS WERE STALE AGAINST CORRECT CODE (H-8e's class).
ChainRecord.polarity defaults to AFFIRMATIVE and is DELIBERATELY OMITTED
from affirmative rows (ADR-0264 R1; teaching/ratification.py:119). Both pins
built ChainRecord(**{k: row[k] for k in __slots__}), so they KeyError'd on
every correctly-serialized row. Now built from the row's own keys, letting
absent fields take their dataclass defaults — which RESTORES the guarantee
rather than weakening it. Consequence of the staleness: ratification-corpus
byte compatibility and unreviewed-status refusal were UNVERIFIED since
ADR-0264 R1 landed.
2. CLAIMS.md PUBLISHED A SUPERSEDED EVIDENCE DIGEST FOR A LICENSED CAPABILITY.
f9e9cc0c (2026-07-26, "the deduction lane hashes the prose it serves")
strengthened the lane, rewrote evals/deduction_serve/report.json, and moved
the authoritative pin in scripts/verify_lane_shas.py:60 to c855d55c —
recording the superseded 0b461a5a on line 56. It did NOT regenerate
CLAIMS.md. So for two days the published claim for deduction_serve_v1
pointed at evidence that no longer existed. The claim TEXT never changed;
only the pointer was wrong — which is exactly the failure a digest exists to
prevent. Regenerated; the diff is one line, the digest.
The drift had reached a THIRD artifact: this assessment's own
M3-comprehension-reasoning.md card cited the same stale 0b461a5a as its
would-fail-if-absent evidence. Corrected.
THE MECHANISM IS G-7's, AGAIN. One commit updated the lane, its verifier and
its lane test, and missed one downstream artifact — and the pin that guards
that artifact (tests/test_claims_md_is_current.py) EXISTED AND RAN ON NO GATE.
Nothing surfaced it until this arc ran the full tree once. Both it and
test_ratification_ceremony.py are now registered in TEST_SUITES["smoke"].
The membership ratchet caught the author a second time: promoting
test_claims_md_is_current.py onto the gate without removing its baseline line
failed test_baseline_has_no_stale_entries immediately. Baseline 748 -> 747.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4