Repository navigation
Self-host receipts link only emitted bytes: delete the stale hand shims behind self_host_03 - #12275
Merged
Merged
Conversation
…t went stale behind self_host_03 self_host_03_normalize_behavioral_receipt_holds was red for 13 E0308 read as an emitter value/Rc defect. It was not: the emitted 03_normalize closure cargo-checks clean. The witness overwrote v2_std_diagnostic.rs with a hand std-bridge shim still spelling Diagnostics as an enum after the emitter moved it to Option. - Every shim row (03_normalize, 03_body_producer, parse_engine_hooks, use_site_verdict) censused: whole emitted closure + cssl_assemble + cargo build + driver passes with no shim. All shims deleted, and the shim_lib_rel / shim_writes / run_closure_assembly fields with them, so a row cannot name a shim. The unused --std-bridge-dir interface is removed end to end. - Removing the shims exposed what they hid: the body_producer Transform fixture had zero edges (malformed per v2.std.node); the 03_normalize driver called normalize_fold_init (deleted by #12014) and compared against a hollow seed stub (well_formed = true) with a fault arm that was red either way. Fixtures fixed; the normalize driver asserts the .dag contract, and the stub src/v1/stage0/src/v2_compiler_normalize.rs is deleted with its layout rows. - rfm hand_shim_shadows_an_emitted_module filed. - stage0 mirrors regenerated to first_generation_equal=true. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ed_body_dispatch_test.dag Same one-line fix as #12208; whichever lands second resolves to identical bytes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ed runs had no reachable green Both drivers fed the planted input into a conjunction that also required it to be refused, so the --inject-fault run printed FAIL for every implementation and the harness read that as detection. The injected run now asserts only the planted claim (the malformed / Atom input is accepted), so a correct implementation fails it and an accept-everything one passes it, which the harness refuses. Roster intro and assembler headers no longer describe deleted shim paths. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 25, 2026
…12298, #12184, ...) - self-host instruments take main's versions (#12275 links only emitted bytes); #12208's std_algebra.rs bridge is deleted with the rest of the std-bridge shim directory it lived in. - body_lowering_fold keeps main's anonymous_binder + symbol_intern_lexeme imports with lower_list_introduction; native_frontier_ratchet (#12184) repointed to std.algebra. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 26, 2026
…ape) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was wrong
self_host_03_normalize_behavioral_receipt_holdswas red on main: 13 E0308 atrejected_with_pending(d1.clone(), ..). It was briefed as a seed-emitter value/Rc defect. It was not. At 043c22b the emitted03_normalizeclosure (gunbc compile --entry src/v2/compiler/03_normalize.dag, 113 files) passescargo checkcleanly, and a planted type error reds as a control. The emitter writesDiagnostics(None | Some { NonEmptyDiagnostics }) asOption<Rc<NonEmptyDiagnostics>>, the same way at signature and call site.The witness never built that crate. Its roster row overwrote
v2_std_diagnostic.rswith the hand-authoreddag/gunbc/instruments/self_host_std_bridge_shims/v2_std_diagnostic.rs, last touched in #10929, which still declaredenum Diagnosticsandrejected_with_pending(pending: Rc<Diagnostics>, ..). So the earliest unjustified boundary (§6b) was a second, hand-maintained copy ofv2.std.diagnostic(a §3 fork) that went stale when the emitter changed. No emitter change and no emitter control were needed. Direction approved by neat-boar-16 (option A: delete-first).Census: every row that used a shim, and every file in
self_host_std_bridge_shims/For each row: emit the closure, run
cssl_assemble(whole-closure assembly),cargo build --release, then run the driver plain and with--inject-fault, with no shim.Every shim passed, so every shim is deleted: the whole std-bridge directory (
v2_std_{algebra,collection,diagnostic,integer,node}.rs), the 03_normalize shim set, and three per-row shimlib.rsfiles. No shim is kept.The fields that carried them are deleted too (
shim_lib_rel,shim_writes,run_closure_assembly,CuratedSeedLinkedShimWrite, the hand-shim fast path). A row can no longer name a shim. The--std-bridge-dirinterface was never read (_std_bridge_dir), so it is removed end to end:cssl_assemble,cssl_seed_linked_closure_assembly.rs, the harness,emission_entry_instrument(SeedLinkedAssemblyis now nullary),emit_subject_clean_frontier, andproduct_receipt_stage. The bridge's own dissolution trigger had already fired. So had that of theseed_closed_vocabulary_wildcard_censusrow about thev2_std_nodeshim, which is removed.What the shims were hiding, now fixed
body_producer fixture was malformed. The Transform body had zero edges.
v2.std.nodebehavior_edges_conformrequirescount(children) >= 1for Transform, and the emitted module rejects it correctly. The lax shim had kept it green. The fixture now carries one positional Value edge.03_normalize driver was stale and its oracle was hollow.
normalize_fold_init, which normalize rebuilt the enclosing node once per child; rebuild it once #12014 deleted from the.dag.v1_compiler::v2_compiler_normalize, whosewell_formedreturnstrue.normalizebehaved.The driver now checks the
.dagcontract directly: a well-formed Value node is accepted, and a Value node with an edge is refused. The fault run feeds the malformed tree where the well-formed one is expected.Deleting the stub
src/v1/stage0/src/v2_compiler_normalize.rsThe stub's only consumer was this witness. I proved that by building, not by grep:
lib.rsline, and itsstage0_crate_layout/seed_retention_frontierrows are removed;v1-compilerbuilds locally (gunbc,claim_executor,cssl_assemble);ctrl-build --remote -- cargo clippy --workspace --all-targets -- -D warningsis clean;Evidence (local private build, arm64 session)
Fault-arm truth tables (third commit). Earlier heads had a fault arm that was a contradiction (
p && !p): the injected run printed FAIL for every implementation. Found in neat-boar-16's review. Each injected run now asserts only the planted claim. Each cell is the witness's final marker, measured by mutating the emitted crate:--inject-faultwell_formedforcedtrue(accept-all)well_formedforcedfalse(reject-all)--inject-faultbody_producer_dispatch_structured_bodyaccepts everythingStage0 regen fixed point:
claim_executor --required-regen→first_generation_equal=true, 161/161. Generated layout artifacts were regenerated viagenerated_artifact_gate.dag main_wet, which also covers the derived.gitattributesline.Assembler tests:
cargo test -p v1-compiler --bin cssl_assemble: 10 passed. The narrow-hand-lib RED control is deleted along with its subject.srv1, non-hermetic, at b97b07a (run by neat-boar-16): required-regen is at a FIXED POINT. 03_normalize (receipt and declared_source_refs), parse_engine_hooks and use_site_verdict PASS. body_producer FAILED there only on its stale claim-run path
structured_body_dispatch.dag, a main defect. The second commit fixes it (the same one-line fix as MQ-1: list literals lower whole as their free-monoid construction, through the one value reader #12208), and the renamed claim PASSes locally undergunbc run --claim-run.Known main reds this PR does not touch (pre-existing)
In the same srv1 run, 8 other
self_host_*_behavioralrows FAIL. None of them ever carried a shim (theirshim_writeswere already empty), so their assembly path is unchanged apart from the unused--std-bridge-dirargument going away. The only seed module this PR removes isv2_compiler_normalize.v1_compiler::v2_compiler_{parse,ingest,materialization_carriers}. These seed modules are absent fromsrc/v1/stage0/src/lib.rson origin/main as well, so each driver names a seed oracle that no longer exists.infer_arrow_domain_binding_heuristic_note, which the emitted module no longer carries: a stale driver.im::Vector::Empty). These are emitter-side defects to be chain-derived.Trigger for all of them: the rfm row's next rung, where the oracle is the interpreter over the same
.dagrather than a hand seed module. Owner: to be dispatched by neat-boar-16.Recurring failure mode
This PR adds
gunbc.recurring_failure_modehand_shim_shadows_an_emitted_module. For the roster, the class is now structurally impossible, because no field exists to name a shim. The residue is the seed's other hand-retained oracles (v2_compiler_body_producer,parse_engine_hooks,use_site_verdict,target_carriers,discovery_enumeration). Next-rung trigger: the behavioral oracle is the v1 interpreter's evaluation of the same.dagentry.🤖 Generated with Claude Code