Skip to content

Self-host receipts link only emitted bytes: delete the stale hand shims behind self_host_03 - #12275

Merged
gunbai-bot[bot] merged 3 commits into
mainfrom
session/quick-fox-743
Sep 25, 2026
Merged

gunbai-bot[bot] merged 3 commits into
mainfrom
session/quick-fox-743

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

What was wrong

self_host_03_normalize_behavioral_receipt_holds was red on main: 13 E0308 at rejected_with_pending(d1.clone(), ..). It was briefed as a seed-emitter value/Rc defect. It was not. At 043c22b the emitted 03_normalize closure (gunbc compile --entry src/v2/compiler/03_normalize.dag, 113 files) passes cargo check cleanly, and a planted type error reds as a control. The emitter writes Diagnostics (None | Some { NonEmptyDiagnostics }) as Option<Rc<NonEmptyDiagnostics>>, the same way at signature and call site.

The witness never built that crate. Its roster row overwrote v2_std_diagnostic.rs with the hand-authored dag/gunbc/instruments/self_host_std_bridge_shims/v2_std_diagnostic.rs, last touched in #10929, which still declared enum Diagnostics and rejected_with_pending(pending: Rc<Diagnostics>, ..). So the earliest unjustified boundary (§6b) was a second, hand-maintained copy of v2.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.

row emitted closure builds driver without shims
03_normalize yes PASS after driver repair (below)
03_body_producer yes PASS after fixture repair (below)
parse_engine_hooks yes PASS, fault run FAIL, unchanged driver
use_site_verdict yes PASS, fault run FAIL, unchanged driver

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 shim lib.rs files. 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-dir interface 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 (SeedLinkedAssembly is now nullary), emit_subject_clean_frontier, and product_receipt_stage. The bridge's own dissolution trigger had already fired. So had that of the seed_closed_vocabulary_wildcard_census row about the v2_std_node shim, which is removed.

What the shims were hiding, now fixed

  • body_producer fixture was malformed. The Transform body had zero edges. v2.std.node behavior_edges_conform requires count(children) >= 1 for 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.

    The driver now checks the .dag contract 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.rs

The stub's only consumer was this witness. I proved that by building, not by grep:

  • the file, its lib.rs line, and its stage0_crate_layout / seed_retention_frontier rows are removed;
  • v1-compiler builds locally (gunbc, claim_executor, cssl_assemble);
  • ctrl-build --remote -- cargo clippy --workspace --all-targets -- -D warnings is clean;
  • the required floor is left to this PR's CI.

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:

    03_normalize plain --inject-fault
    correct PASS FAIL (fault detected)
    emitted well_formed forced true (accept-all) FAIL PASS, so the harness refuses
    emitted well_formed forced false (reject-all) FAIL FAIL
    body_producer plain --inject-fault
    correct PASS FAIL (fault detected)
    emitted body_producer_dispatch_structured_body accepts everything FAIL PASS, so the harness refuses
  • Stage0 regen fixed point: claim_executor --required-regen → first_generation_equal=true, 161/161. Generated layout artifacts were regenerated via generated_artifact_gate.dag main_wet, which also covers the derived .gitattributes line.

  • 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 under gunbc run --claim-run.

Known main reds this PR does not touch (pre-existing)

In the same srv1 run, 8 other self_host_*_behavioral rows FAIL. None of them ever carried a shim (their shim_writes were already empty), so their assembly path is unchanged apart from the unused --std-bridge-dir argument going away. The only seed module this PR removes is v2_compiler_normalize.

  • 02_parse, 03_ingest, materialization_carriers. E0432 on v1_compiler::v2_compiler_{parse,ingest,materialization_carriers}. These seed modules are absent from src/v1/stage0/src/lib.rs on origin/main as well, so each driver names a seed oracle that no longer exists.
  • 04_infer. The driver calls infer_arrow_domain_binding_heuristic_note, which the emitted module no longer carries: a stale driver.
  • program_partition, discovery_enumeration, target_carriers. Emitted-crate rustc errors (E0308, E0223, im::Vector::Empty). These are emitter-side defects to be chain-derived.
  • 03_resolve, program_assembly, source_authority. Red with no rustc error in the summary; cause not read.

Trigger for all of them: the rfm row's next rung, where the oracle is the interpreter over the same .dag rather than a hand seed module. Owner: to be dispatched by neat-boar-16.

Recurring failure mode

This PR adds gunbc.recurring_failure_mode hand_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 .dag entry.

🤖 Generated with Claude Code

gunbc-ci-auto-heal and others added 3 commits September 25, 2026 04:35
…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
gunbai-bot Bot added this pull request to the merge queue Sep 25, 2026
Merged via the queue into main with commit 4838129 Sep 25, 2026
5 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/quick-fox-743 branch September 25, 2026 23:50
@briansrls
briansrls restored the session/quick-fox-743 branch September 25, 2026 23:54
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants