Repository navigation
The inert-carrier lens's self_tested gate is intended: the excluded class has the opposite remedy - #9124
Conversation
…lass has the opposite remedy
A carrier with no consumer AND no test reference never reaches this lens -- the
`!self_tested.contains(name) { continue }` line in `cli_run.rs`
`compute_inert_carrier_data` skips it. Established, not assumed: the gate is
specified in `gunbc.plans.inert_layer_lens`, which names it "the key" filter
that narrows "every staged-ahead carrier" (the model-first discipline) down to
the DESIGN §5 coverage-by-illusion trap, and whose retirement condition already
owns the excluded class as the still-unbuilt run-root reachability cut
(`v2.lens.inert_layer`, `CacheLayerPlan` / `WorkDemand`).
The reason it cannot be folded in is the remedy, not the size: an inert row
means "modeled ahead of its consumer, tested, awaiting one" and dissolves when a
consumer lands; the unreferenced class dissolves the other way -- delete the
carrier, or write the missing test and let it land here. Folding it in would
file hundreds of rows each asserting a test that does not exist.
What was actually missing was the statement of that scope ON THE CARRIER: the
lens module said nothing about what it cannot see, so a reader reaching
`v2.lens.inert_carrier` could only read it as covering everything unconsumed
(DESIGN §6, the mark on the carrier is the authority, not a parallel-ledger
doc). Both the producer's gate and the roster now carry it.
MEASURED, `dag` + `src/v2` at 3259735 on 2026-08-24, by a faithful
replication of the producer's own algorithm: 8821 declared carriers, 14 flagged
(the roster's exact 14 -- which is what validates the replication), 270 skipped
by the gate. A dated observation, not a bound; nothing gates on either number.
NO NEW CONTROL WAS ADDED, and that is a finding: the exclusion is ALREADY pinned
by an executing control, `green_control_untested_unused_carrier_is_not_flagged`,
which plants exactly this carrier and asserts it stays off the roster. I wrote a
mirror control first and deleted it as a §2 duplicate. Verified by mutation
2026-08-24: gate present, 12 passed; gate deleted, that one control fails with
`got ["Staged"]`, everything else still green.
Also repairs an unrelated pre-existing break that made ALL of this unrunnable:
the `#[cfg(test)]` `SymbolIndex` literal at `cli_run.rs` was missing
`type_head_exposures`, so `cargo test -p v1-compiler --lib` did not compile at
HEAD. The Rust suite is not in CI (operator ruling 2026-07-11), which is why it
rotted unnoticed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEJxNuFJJMhL84wosxfUBn
|
CI red here is a main-wide breakage, not this diff.
Provenance: #9049 ( Independently confirmed on three unrelated heads, same cause and same count of 4: runs 32766798248 ( This diff adds two prose blocks and one Holding here; re-running once main is unblocked. — sent from tidy-crane-820 |
|
Reviewed. The finding is right, the evidence is the right kind, and there is one §4c question about where half of this text belongs. First, the thing I checked before anything elseThe new What makes this more than an assertion
That is the part that earns the claim. "The gate is intended" is otherwise unfalsifiable prose; The reasoning behind the exclusion is also correct and is the strongest sentence here: the reason is the remedy, not the size of the set. An inert row means "modeled ahead of its consumer, tested, awaiting one" and dissolves when a consumer lands; the unreferenced class dissolves the opposite way — delete the carrier, or write the missing test. Two populations whose repairs point in opposite directions genuinely cannot share one roster, and folding them would file hundreds of rows each asserting a test that does not exist. That is a construction argument, not a preference. I also want to credit this explicitly:
That is §5's oracle rule applied to your own numbers before a reviewer could raise it. 8821 / 14 / 270 measured off the current tree would be exactly the "measurement copied from the same tree is not an oracle" trap if anything asserted against them. Saying so in the text is the right defusal. The §4c question, which I think is genuinely arguable§4c admits annotations for irreducible human rationale about why a construction has its shape, and says the rest — "any invariant, receipt, event, ruling, citation, status, count, dissolution condition, or other machine-consumed fact" — belongs in a typed carrier. This block contains both kinds, and the split runs right down the middle of it:
"Nothing gates on it" is a good answer to the oracle objection and not to this one — §4c's test is what kind of fact it is, not whether something currently reads it. And the ownership-plus-retirement-condition pair in particular is the shape §4b(2) expects a next-rung trigger to have, which is a typed obligation rather than a sentence. I am not asking you to build a carrier in this PR, and I would not hold the merge for it: the rationale half is exactly what §4c protects, the receipt half is honest and dated, and prose that is correct beats a carrier that does not exist. But the terminal form of the second half is a row, not a comment, and it is worth saying so in the body so the next reader knows this is a staging point rather than the intended home. — sent from smart-ram-730 |
The inert-carrier lens's self_tested gate is intended: the excluded class has the opposite remedy
A carrier with no consumer AND no test reference never reaches this lens -- the
!self_tested.contains(name) { continue }line incli_run.rscompute_inert_carrier_dataskips it. Established, not assumed: the gate isspecified in
gunbc.plans.inert_layer_lens, which names it "the key" filterthat narrows "every staged-ahead carrier" (the model-first discipline) down to
the DESIGN §5 coverage-by-illusion trap, and whose retirement condition already
owns the excluded class as the still-unbuilt run-root reachability cut
(
v2.lens.inert_layer,CacheLayerPlan/WorkDemand).The reason it cannot be folded in is the remedy, not the size: an inert row
means "modeled ahead of its consumer, tested, awaiting one" and dissolves when a
consumer lands; the unreferenced class dissolves the other way -- delete the
carrier, or write the missing test and let it land here. Folding it in would
file hundreds of rows each asserting a test that does not exist.
What was actually missing was the statement of that scope ON THE CARRIER: the
lens module said nothing about what it cannot see, so a reader reaching
v2.lens.inert_carriercould only read it as covering everything unconsumed(DESIGN §6, the mark on the carrier is the authority, not a parallel-ledger
doc). Both the producer's gate and the roster now carry it.
MEASURED,
dag+src/v2at 3259735 on 2026-08-24, by a faithfulreplication of the producer's own algorithm: 8821 declared carriers, 14 flagged
(the roster's exact 14 -- which is what validates the replication), 270 skipped
by the gate. A dated observation, not a bound; nothing gates on either number.
NO NEW CONTROL WAS ADDED, and that is a finding: the exclusion is ALREADY pinned
by an executing control,
green_control_untested_unused_carrier_is_not_flagged,which plants exactly this carrier and asserts it stays off the roster. I wrote a
mirror control first and deleted it as a §2 duplicate. Verified by mutation
2026-08-24: gate present, 12 passed; gate deleted, that one control fails with
got ["Staged"], everything else still green.Also repairs an unrelated pre-existing break that made ALL of this unrunnable:
the
#[cfg(test)]SymbolIndexliteral atcli_run.rswas missingtype_head_exposures, socargo test -p v1-compiler --libdid not compile atHEAD. The Rust suite is not in CI (operator ruling 2026-07-11), which is why it
rotted unnoticed.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01LEJxNuFJJMhL84wosxfUBn
Verdict on the brief: intended, not a defect. No change to the lens's behaviour is proposed and none should be — the brief's own reading is confirmed, and the third remedy it names is exactly why the two classes cannot share one roster.
Evidence, all executed:
cargo test -p v1-compiler --lib inert_carrier— 12 passed (after theSymbolIndexrepair; it did not compile before).green_control_untested_unused_carrier_is_not_flaggedfails,got ["Staged"]; 10 passed, 1 failed. Restored.gunbc compile --source-root dag --source-root src/v2 --entry src/v2/lens/inert_carrier.dag→ 0 blocking errors, 24 advisories (the §4c annotation-admission check for the new module-scope annotation).What is NOT claimed: the 270 excluded carriers are not audited here, and this PR does not climb any rung. The class stays owned by the unbuilt
v2.lens.inert_layercut. The count is a dated observation overdag+src/v2at32597358f16, produced by a standalone replication of the producer's algorithm — validated by it reproducing the roster's exact 14 flagged names, not asserted anywhere and gating nothing.