The independent review of amendment 3 returned two findings; sweeping the row
adjacent to the second found a third. Three findings, all blocking.
1. Gates 1-3 were no longer evidenced against the final staged tree, and two
claims asserted otherwise. Amendment 1 corrected the false writer comment
IN CODE, after the gates had run. Amendment 3 then wrote both "the
implementation has survived all three reviews unchanged" and "gates 1-3
stand on an unchanged staged tree." Both false.
A comment cannot change behaviour, but the gate is specified over the
staged artifact, not over one a reader is invited to infer is equivalent.
This is the substitution CLAUDE.md forbids by name -- "reasoning that a
mutation would fail signs nothing" -- committed in the document whose
subject is a check that was a tautology because nobody had measured it.
Both claims corrected, and gates 1-3 re-run cold after cargo clean -p on
all four touched crates:
gate 1 1577 passed / 0 failed / 0 ignored, 42 suites, cargo exit 0
gate 2 1.95.0, exit 0, 0 warning/error lines, all four crates
observed re-Checking-ed, so not a cache replay
gate 3 1.95.0, exit 0
The 1577 is unchanged from execution, which is the expected outcome for a
comment fix -- but it is now measured rather than predicted, and that
distinction is the finding.
Method note: both re-runs were first captured through tail, which
truncated the aggregate counts and the Checking lines -- the same
truncated-evidence failure §0.4 records as its second instrument failure.
Caught and re-run with full capture before reporting. A gate result read
through tail is not a gate result.
2. Round 9's finding-1 disposition still gave M7's reference home as
epiphany-testkit, superseded in round 12 -- which found
render_text_document is pub(crate) to epiphany-textproj and pinned the
harness there. Supersession pointer added, following the convention round
8's cell already uses.
3. Sweep: round 9's finding-2 disposition had the same defect. Its clause
"with any difference enumerated and classified rather than assumed" was
superseded in round 10, which found a byte difference would have a third
cause outside both permitted classifications. Pointer added naming rounds
10, 11, 13 and 14 as the chain that replaced it.
Findings 2 and 3 are the shape amendments 2 and 3 kept finding: a statement
true when written, left standing unmarked once a later round overruled it. A
disposition column is a history; unmarked, it reads as instruction.
Gates 4, 4a and §2 rules A/B re-run rather than inferred: staged 21, gate 4
--check clean, parse.rs/vectors.rs/text_projection.tex absent,
COMPANION_VERSION (0, 14, 0) both sides.
Amendment 4 changed no pin, no gate mechanic, no touch row and no staging
rule. Implementation still staged, still not accepted.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ps1szk2mSfgp4Cz21eVH9x