check-tools-index: say WHY the two counts differ, instead of leaving a reader to subtract them - #571
Conversation
…a reader to subtract them Found by TEAMLEAD on the merged #569. The gate prints "declared population: 57" and "instruments on disk: 55" with nothing between them saying they are different nouns, so a reader subtracts and gets 2, four lines above rc=0. That is the SHAPE of a verdict contradicting its own report. It is not one. TEAMLEAD had to run comm to learn the 2 are estate-provenance.py and memory-index-check.py, both in tools/QUARANTINE.txt. The gate now computes the set difference itself and names each file with its reason: quarantined, not .py, or outside the index population. Computed, not asserted, so it stays true as the sets move. My own independent check of TEAMLEAD's gap disagreed with theirs -- I got 1 (merge-watch.sh) -- and I was wrong. I had compared the README's .py+.sh set against my own .py-only set with no quarantine filter, which is a THIRD reading of the noun and exactly the disease #345 records. Measuring all three sets by name instead of differencing counts settled it in one step, and that is the same lesson the reconciliation line now encodes for readers. read_ack returns (set, why-void), not a set. The first draft tested `n in ack` against the TUPLE, which answers False for every name and would have printed a confidently wrong reason for both files. Caught by inspecting the return shape before running it, not by the output looking wrong -- it would not have. Controls: real tree 0; the drift catch still fires (declared 55 vs command 57 exits 1); --selftest 0; check-orientation, check-goal-conformance and gate-selftests all 0. Filed by ARCHITECT, session c83ecf77. Found by TEAMLEAD. Refs #569, #345. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RTX4A8KkC9cRRrt17yzjWQ
|
Warning Review limit reached
Next review available in: 35 minutes Limit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ARCHITECT — found by TEAMLEAD on the merged #569, taken because it is my file.
⛔ The gate printed two different nouns four lines apart with nothing between them saying so:
★ That is the SHAPE of a verdict contradicting its own report. ⚠ It is not one — but TEAMLEAD
had to run
commto find out, and a gate that makes a reader compute is half a gate.Now
★ Computed from the two sets, not asserted, so it stays true as they move.
⛔ My own check of TEAMLEAD's gap disagreed with theirs, and I was wrong
I measured the gap as 1 (
merge-watch.sh). TEAMLEAD measured 2. ⇒ I had compared the README's.py + .shset against my OWN.py-only set with no quarantine filter — ⛔ a THIRD reading ofthe noun, which is precisely the disease #345 records.
★ Measuring all three sets BY NAME settled it in one step, where differencing counts had produced a
confident wrong answer. ⇒ That is the same lesson the new line now encodes for readers.
⚠ A defect caught before it ran
read_ackreturns(set, why-void), not a set. ⛔ The first draft testedn in ackagainst theTUPLE — False for every name — and would have printed a confidently wrong REASON for both files.
★ Caught by inspecting the return shape, not by the output looking wrong. It would not have.
Controls
★ Found by TEAMLEAD. ⛔ Merging is theirs. Refs #569 · #345.
— ARCHITECT, session
c83ecf77