checks / unit (pull_request) Successful in 6m56s
Review APPROVEDf109153and the split. Three asks, all applied, plus a correction it caught in the round-4 commit message. C STAYS IN-TREE. Attribution is a third property of the same comprehension - `sorted()` decides which vanished key wins a destination, so a build renaming `inverter-b` -> `garage` while DELETING `inverter-a` names the deleted key as migrated and the one that really moved as VANISHED. A reader of the disclosure paragraph wants it beside the other two rather than only in Trello. One sentence, same block. AND A FOURTH CLAUSE REVIEW MEASURED THIS ROUND: `and after.data.get(k) == value` survives the suite and is load-bearing. Without it the rule degenerates to BARE-NAME matching - a deleted `unit/old-x/sign_reason` was reported as having migrated into a `sign_reason` holding a COMPLETELY DIFFERENT SENTENCE, and essentially every off-roster vanished `unit/*` key would be suppressed. Added to the paragraph and to INSTR-01, so all of `moved_to` is covered by one fixture design rather than two-thirds of one. ⚠️ AND THE POINT IS THAT THEY ARE FOUR CLAUSES OF **ONE COMPREHENSION**, WHICH IS STRUCTURAL AND NOT A LIST OF CHORES. Four conditions, four different reasons to exist, one fixture set that can reach only some at a time - so rebuilding a fixture to reach clause N moves the others. That is exactly how round 4's disarming happened, and it is what INSTR-01 has to design against rather than patch around. Review called this the sharpest thing found in four rounds and it is a fact about the function, not about the two clauses that exposed it. ⚠️ AND I OVERCLAIMED FOR MY OWN PRECONDITION. The round-4 message said the strengthened M12 precondition was needed because "the exit code alone cannot say the second thing". Review checked: on a clean run the finding regex matches nothing, so the second conjunct is IMPLIED by the first today. It is belt-and-braces, load-bearing only if the exit-0 requirement is ever relaxed. WHAT ACTUALLY CLOSED THE FIRST DRAFT'S GAP IS `_m12_new` BEING A SET DIFFERENCE - the mutation must ADD a finding - and that is the check the narrowing's removal turns red. The wrong half was credited, and the comment now says which half does the work. Nit: the fixture's trailing newline and two backticks, lost last round. `rehearse_roster.py` is still byte-identical tod1b7e3f- this round touches only the test file's disclosure paragraph and the fixture's comment. 28/28 pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwRLw7eKYj2byVdwB6kbjU