Repository navigation
Derive .dag harness Cargo manifests from the emitted manifest; delete the hand-authored dependency blocks (libc E0433) - #13057
Merged
Conversation
… the hand-authored dependency blocks The curated seed-linked harness, the emission entry instrument, the product receipt stage and both std.logic transports each overwrote the Cargo.toml the emission wrote with a literal [dependencies] roster. gunbc#12861 added libc to the emitted runtime and to two of those rosters and missed the curated one, so every behavioral transport row failed to build (E0433 libc, fleet run 37079504327: 15 of 15 no-verdict). tools.emitted_crate_harness_manifest reads the emitted manifest and appends only what a harness owns: its [lib]/[[bin]] target tables and, for a seed-linked build, the v1-compiler path dependency as its own subtable. No harness route names a registry crate any more, and an absent emitted manifest refuses. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… supply the reading The floor's hermetic route has no arm for Mktemp.Dir, so the two claims that derived a manifest on a real directory never reached their subject. The read-or-refuse decision is now plan_harness_manifest over a supplied reading; derive_harness_manifest_in_place performs the read and writes only on the planned arm. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Follow-up receipt on main. Fleet run 37112143403, behavioral-equivalence instrument at
The sha is a verification-branch merge, not a main sha, so this is not the persisted receipt (fierce-cat-838 takes that once #13032 lands). — sent from neat-seal-675 |
This was referenced Oct 3, 2026
Merged
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
The emitter writes
Cargo.tomlinto the output crate from the dependency demand of what it emitted (v1.compiler.emit_rustemit_cargo_toml). Six.dagharness sites then overwrote that file with a hand-authored[dependencies]roster. gunbc#12861 addedlibcto the emitted runtime and to two of those rosters; the curated seed-linked harness roster was missed, so every module on the behavioral transport roster failed to build — fleet run 37079504327, 15/15 no-verdict onE0433(libc).This is the existing class
gunbc.recurring_failure_modeprobe_manifest_overwrites_emitted_dependency_demand. Its first repair closed the Rust probe writer only; the.dagroutes carried the same overwrite.The repair
New module
tools.emitted_crate_harness_manifest(dag/gunbc/instruments/emitted_crate_harness_manifest.dag):derive_harness_manifest_in_placereads the manifest the emission wrote and appends only what a harness owns:[lib] name = "v1_compiled"(the name witness drivers address; the package table is left as emitted),[[bin]] witnessfor the witness target,[dependencies.v1-compiler](path) for a seed-linked build — nothing forSeedAbsent.Each addition is its own TOML table, so the overlay is position-independent and needs no reader of the emitted text; if the emitter ever declares one of those tables, cargo refuses the duplicate. The read-or-refuse decision is the pure
plan_harness_manifest: an unread or empty emitted manifest refuses (EmittedManifestUnreadable) — there is no fallback roster — and the write exists only on the planned arm.No
.dagharness route names a registry crate any more. Deleted in the same change (replacement migration):cssl_v1_compiled_cargo_deps_block,…_package_header,…_cargo_toml,…_probe_lib_cargo_tomltools.self_host_curated_seed_linked_harnessslb_cargo_tomltools.self_host_logic_behavioral_transportslbu_cargo_tomltools.self_host_logic_seed_unavailable_transporttools.self_host_curated_probe_cargoConsumers moved to the derivation: the curated harness,
tools.emission_entry_instrumentmeasure_cargo_half,v2.workflow.product_receipt_stageproduct_receipt_cargo_tail(new refusal causeEmittedCargoManifestUnreadable), and bothstd.logictransports.Rows updated: the RFM row gains this incident's receipt, repair and control;
gunbc.v1_consumer_censusnames the new renderer of the seed path dependency;gunbc.guarantee_stallself_host_hand_authorized_cargo_toml_stallis narrowed to what is still true (see below).Behavior changes worth knowing
ureq(andclap/tokio/reqwestwhen the emission demands them). The hand rosters omittedureqand always carriedclap.[workspace]table; the hand manifests had none. All sites stage the crate outside the repository, so this is inert there.v1_compiler, notv1_compiled; the[lib]name pin keeps the library addressable asv1_compiled. Checked on a toy crate (packagev1_compiler+ path dependencyv1-compiler+ pinned lib name builds and runs); not exercised on a real pipeline emission.Evidence
Executed locally, seed binary
/cargo-target/cool-lynx-851/release/gunbc(the change is.dag-only):test.claim.emitted_crate_harness_manifest_witness— six claims, all over supplied values, all hold. Mutation pairs: replacing the emitted text with a literal roster inharness_manifest_over_emittedredsa_dependency_only_the_emission_declared_reaches_every_harness_manifest; dropping the empty-manifest refusal inplan_harness_manifestredsan_unread_or_empty_emitted_manifest_refuses_instead_of_planning_the_overlay_alone. (The first push carried two claims that derived on a real temp directory; the floor refused them as a route gap — the hermetic route has no arm forMktemp.Dir— so the decision was split out as a pure function rather than enrolling the gap as debt.)slbu_seed_unavailable_runend to end underRUSTFLAGS=-D warnings— real emit ofdag/std/logic.dag, manifest derived from the emitted file,cargo build --release(18 s), witness passes.std/logic,cfg-if = "1"appended to the emitted manifest, derivation run withSeedLinked— the derived manifest carriescfg-if(andlibc, from the emitter) with no harness edit.Fleet result and what is still not covered:
Control (2) as amended by calm-boar-904 (the owning manager): "E0433 gone in every row" — met. The brief originally asked for all 15 rows to produce verdicts; 11 do, and the amendment records that the remaining 4 fail for unrelated, previously hidden reasons (table below). The three driver rows are the follow-up item for this lane; the emitted-library row is routed to the text-wall lane (gunbc#12512).
Control (2), fleet run 37092365386: 11 of 15 rows hold; 4 still have no verdict, none of them for a dependency. The base run (37079504327) was 15 of 15 no-verdict on
E0433libc. In this runE0433does not occur,libccompiles in every row's crate, and every row's manifest was derived from the emitted one. The four that remain are defects the libc failure had been hiding:04_infer.dagsrc/main.rsE0308: driver passesRc<Node>toinfer, which now takesRc<ResolvedTree>07_target_carriers.dagsrc/main.rsE0599: no variantNamedonEdgeLabelprogram_partition.dagsrc/main.rsE0599: no variantNamedonEdgeLabeldiscovery_enumeration.dagsrc/std_string_type.rsE0308×8:v1_rt::string_length(&str)called with&Rc<Vector<i64>>Three are hand-written witness drivers that no longer match the emitted API; one is in the emitted library itself (the text-representation crossing). None is in scope here and none is fixed here.
What this run measured: commit
27b05448onverify/neat-seal-675-with-13032— this PR at337c89bmerged with gunbc#13032's branch (the instrument label only exists there), plus that branch's generated.gitignoreand dispatch YAML. It predates01ac484(the pureplan_harness_manifestsplit) and the merge of main, so it is not an exact-head receipt; the read-success path it exercised is unchanged by either. A first dispatch (37091945689) refused in six minutes on a dirty tree because the verification branch lacked that.gitignoreprojection; it says nothing about this change.Control (1), red on base: taken from fleet run 37079504327 (on Self-host behavioral equivalence: fleet-dispatchable, instrument-label wall (receipt follows at a main sha) #13032's branch, which carries the hand block). I did not re-run it.
Typecheck of the seed-linked harness, emission entry instrument, product receipt stage, census and stall modules: not run locally (both available seed binaries predate main). The floor on the first push (run 37091914831) reached adjudication with those modules in its plan and blocked only on the two route-gap claims above; the floor on the current head is the standing check.
The seed-linked curated harness built 11 real emissions through the derived manifest in that fleet run. The emission entry instrument's probe-lib route has not been executed.
Residue, named
extdeps.languages.tomlcannot render[[bin]]or a dotted sub-table header (TomlTable.namegoes throughtoml_render_key, which quotes a dotted name). The stall row now says exactly that and names it as its trigger.v2.workflow.product_receipt_stagematerializes onlysrc/lib.rsfrom the v2 emission, so its candidate has no emitted manifest; B6 now refuses there withEmittedCargoManifestUnreadableinstead of building under a roster the harness made up. (B5 assembly already refuses earlier on that candidate for the missing population manifest, so this changes no reachable verdict.) The v2 route carrying a dependency-demand fact is the missing model. No rung-drop or frontier row is filed for it: B6 was never a passing, enrolled check (nothing executes the stage, anddocs/plans/unconsumed-module-residue-disposition.mdlistsv2.workflow.product_receipt_stageas STILL-UNCONSUMED), so its disposition belongs to that residue program.Coordination: gunbc#13032 was going to add this incident as the RFM row's second receipt; it is added here, so that PR should not add it again.
🤖 Generated with Claude Code