fix(ccb): the live-schema table still pinned the three classes 2c-E moved - #830
Conversation
…oved main is red. ccb_conformance's live_schemas_match_the_registry_and_none_is_burned asserts every encodable class's live (class, schema) pair against a hardcoded table, and that table still said 0x000B, 0x0033 and 0x000E were at schema 1. The schema-2 cut moved all three, so the test failed with "TradeIntent: (0x000b, 2) is not the registry's live pair". My fault, and the cause is precise: I swept for tests that pin BYTES, found none outside the conformance file, and did not sweep for tests that pin SCHEMA NUMBERS. That test is the registry-versus-code cross-check and it did exactly its job. It also proves itself load-bearing without a deliberate mutation control. The mutation was accidental and real — the code moved to schema 2 while the table did not — and CI turned this named test red on it. That is stronger evidence than a staged control. Dependent sweep redone properly, by class name rather than by byte literal. Five test files reference the affected classes, and all five are now green: ccb_conformance 11/11 (this fix) settlement_bundle_conformance 12/12 economic_dlv_settle_provenance 15/15 dlv_successor_conformance 5/5 (the one I had not run) common/indep_ccb (helper, already cut) The coverage log also shows the dsm library at 1786/0 before it aborted, so nothing in the library moved. Coverage stops at the first failing binary, which is why the run proved less than its length suggested. make lint green; production safety checks green including TLA+.
|
Both of #829's failures — Rust and Coverage — have this same single root cause. Confirmed from both job logs: one failing test, The other panics in those logs ( A caveat worth stating plainly: neither job proved as much as its runtime suggests. So this PR fixes the one confirmed failure, and the argument that nothing else broke is the dependent sweep rather than that run: five test files reference the three affected classes and all five are green locally. CI on this PR is what will actually clear the rest. |
mainis red. This fixes it.What broke
ccb_conformance'slive_schemas_match_the_registry_and_none_is_burnedasserts every encodable class's live(class, schema)pair against a hardcoded table. That table still said0x000B,0x0033and0x000Ewere at schema 1. The schema-2 cut in #829 moved all three:Why I missed it
Precisely, so it is fixable as a habit: I swept for tests that pin bytes, found none outside the conformance file, and did not sweep for tests that pin schema numbers. That is a different dependent class and I did not look for it.
The test is the registry-versus-code cross-check, and it did exactly its job.
It proves itself load-bearing, without a staged control
The mutation here was accidental and real — the code moved to schema 2 while the table did not — and CI turned this named test red on it. That is stronger evidence than a control I set up myself.
Dependent sweep, redone properly
By class name rather than by byte literal. Five test files reference the affected classes, all now green:
ccb_conformancesettlement_bundle_conformanceeconomic_dlv_settle_provenancedlv_successor_conformancecommon/indep_ccbThe coverage log also shows the
dsmlibrary at 1786/0 before it aborted, so nothing in the library moved.Worth noting for future triage: coverage stops at the first failing binary, so that run proved less than its 10-minute length suggested. Suites after
ccb_conformancenever executed.Verification
make lintgreen; production safety checks green including TLA+.