The independent review of amendment 1 returned four findings, every one of
them in amendment 1's own text rather than in the implementation it ruled
on. Sweeping each finding's other sites turned up a fifth the review did
not reach. Five findings, four blocking.
1. Touch row 15 stages crates/epiphany-textproj/src/lib.rs while two other
clauses call that exact file deliberately absent and make gate 4 fail if
it is staged. The staged tree therefore failed the contract as amended,
and the execution report called gate 4 clean because it checked staging
against §2's table and not against the absence rule below it.
That file is where COMPANION_VERSION lives (:72), so its absence WAS the
mechanical guard on the ruling's "COMPANION_VERSION stays 0.14.0". Row 15
removed the guard silently. Fixed by splitting the absence sentence into
the two unrelated rules it conflated, and by adding gate 4a, which
compares the constant's value instead. Running it demonstrates why: the
constant moved from line 70 to 72, so any diff-keyed check reports a
change that did not happen.
Rule A is also now explicit that it covers ONE of M7's three edit sites.
serialize.rs and project.rs are staged under row 9, and absence cannot
test a file that is supposed to be present.
2. "Direct construction at all 23 sites" is 39. The 23 is exactly touch row
2's count of in-crate open sites in bundle.rs -- one file, one
constructor -- restated as a cross-crate total over three. Corrected, and
converted into a derivation from §0.4's surface so it can be rechecked
without hand-counting.
3. Row 13's "92 converted sites" is 60 open + 32 create: the
two-constructor figure, missing create_versioned's 3, inside the very
amendment added to close that omission. The count is deleted rather than
corrected -- the row needs "two crates", and any figure >= 1 makes the
re-export unavoidable. Complete pre-S27 surface is 95.
4. Found by the sweep, not the review: §7 item 5 still had the report
reconcile against open 60 + create 32. A report obeying it literally
would re-derive the incomplete surface and call it a match. Also marks
those figures pre-S27, since S27's own tests move the tree to 66/33.
5. "Touch rows 13 and 14" for the helper roots; they are 14 and 15.
Three of the five are count defects inside an amendment whose own subject
was a count defect, and two reproduce the exact omission it was written to
close. So amendment 2 deletes one count and derives the rest rather than
restating them more carefully; restating carefully is what rounds 1-7 tried.
Gate 4's earlier clean result is withdrawn -- measured against half of §2.
Gates 4, 4a and rules A/B re-run and pass. Gates 1-3 stand: the staged tree
is byte-identical to the one they ran against. Implementation still staged,
still not accepted; amendment 2 needs its own independent pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ps1szk2mSfgp4Cz21eVH9x