Repository navigation
Repair the derived stage0 partition: five unrostered modules; retire the extdeps-base tier the chain could not express - #7641
Conversation
…the extdeps-base tier the chain could not express v1-stage0-std-core has been red on main (6 E0432/E0433) with no CI visibility: four flat-crate modules gained partitioned consumers without roster rows (std_occurrence_identity, the three extdeps_units_* rows, plus latent std_trait_derive_shape and v1_compiler_infer_occurrence_binding found by a full reference sweep), and the units trio exposed a chain-order defect: std_measure (std-core) consumes extdeps.units.*, whose deps sat in stage0_extdeps_base above std-core - a sanctioned std-cites-extdeps grounding (DESIGN 3, 2026-07-24) the linear hand chain could not express. The grounding cluster (extdeps_uri, extdeps_external_authority, three units modules) moves into std-core by its actual dependency tier; the emptied extdeps-base crate row retires (declared targets 8->7 / 7->6 in the same authority); std_trait_derive_shape -> std_surface; v1_compiler_infer_occurrence_binding -> v1-infer (witness member pin 6->7). Authority edit + main_wet + two-generation regen_stage0; no generated file hand-edited; regen --verify divergence 0. cargo check -p v1-stage0-std-core and --workspace green; fmt clean; partition + drift witnesses 26/26 PASS by execution. CI compile-gate enrollment for partition crates stays an operator decision - nothing enrolled here. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
CI note: the ci job's single failure is 'extdeps_scope_placement_gate_passes returned Bool(false)' - the repo-wide floor red inherited from the #7571 gate x #7573 unenrolled-file merge race, not this change (build/regen/heal all pass; regen confirms the self-host fixed point). The standalone enrollment repair is #7640 (green, 2 approvals, awaiting operator merge). I will integrate main and refresh CI here once it lands. - sent from clever-ferret-451 |
…ccurrence-identity
Unit-id decls take main's CompilationUnitId casts (#7480 ContentHash family) minus the retired extdeps_base row; #7480's new extdeps_container_oci_digest joins the std-core roster beside the moved grounding cluster (deps: external_authority/uri/content_hash, all std-core members). Generated partition files pending main_wet regeneration - blocked on the inherited main red (extdeps.transports.rest imports ContentHash from std.types; standalone repair PR #7650), rerun after it lands. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ore emission main_wet + two-generation regen_stage0 over the merge resolution; no generated file hand-edited; regen --verify divergence 0. Workspace check and fmt green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ccurrence-identity
|
CI red on this head is the inherited main red, not this diff: the floor's compile-clean refuses |
…dration + #7665 seed mint layer) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PR body — stage0 derived-partition repair
Title: Repair the derived stage0 partition: five unrostered modules, and the extdeps-base tier the chain could no longer express
What broke
cargo check -p v1-stage0-std-corehas been red on main ("6 previous errors") with none of it CI-visible:DagCompileCleanGateis dag-only and the release build is-p v1-compiler(the flat seed crate), which the partition crates are not dependencies of — the same hole classci_v1_compiler_tests_compile_gate_notedocuments forv1-compiler-tests. Two distinct defects, one carrier:1. Membership rot (4 modules, 3 crates). Flat-crate modules gained partitioned consumers without ever being added to a partition roster in
src/v2/workflow/rust_crate_partition.dag:std_occurrence_identity— re-exported byv1_std_coresince Add shared authored-occurrence identity transport #7352 (220b556) → 3 of the 6 std-core errorsextdeps_units_dimensionless/extdeps_units_iec_80000_13/extdeps_units_iso8601— re-exported bystd_measure→ the other 3std_trait_derive_shape— used byextdeps_languages_rust_emit; latent (crate aborts earlier today)v1_compiler_infer_occurrence_binding— used byinfer_env/infer_sigs; latent likewiseThe latent two were found by a full sweep (every
crate::Xreference from every partitioned member checked against the partitioned universe), not by iterating compile errors, so this closes the absence class in one pass.2. A chain-order defect the units trio exposes. The crate chain is strictly linear (
runtime ← std_core ← std_surface ← extdeps_base ← …), butstd_measure(std-core) consumesextdeps.units.*, which needextdeps_uri/extdeps_external_authority— rostered instage0_extdeps_base, above std-core. A std surface citing the extdeps rows that ground it is the sanctioned direction (DESIGN §3, layer-DAG deletion 2026-07-24); the hand-drawn chain predates it and cannot express it. No pure roster row fixes this: the units modules must sit at-or-below their consumer and at-or-above their deps, and the chain puts those in the wrong order.The fix
By each module's actual dependency set,
extdeps_uri(needsstd_types+runtime) andextdeps_external_authority(needsstd_decl_ref/std_roster_frontier/std_types/extdeps_uri) are std-core-tier facts — so the whole grounding cluster (extdeps_uri,extdeps_external_authority, the three units modules) moves into the std-core roster, beside their consumerstd_measure. That empties theextdeps_baseunit, so its crate row is retired rather than shipped hollow: declared targets move 8→7 physical / 7→6 module-bearing in the same authority (the derived-vs-declared witnesses compare both sides honestly), downstreamreexport_packagesdrop the package, andsrc/v1/stage0_extdeps_baseis deleted. Placements for the other two:std_trait_derive_shape→ std_surface (std module, core-only deps, consumed from extdeps-languages above);v1_compiler_infer_occurrence_binding→ v1-infer beside its consumers (member pin 6→7 updated in the witness). Six edge-census rows added mirroring the existing style (std_measure→units,rust_emit→trait_derive_shape,infer_env/sigs→occurrence_binding).Then the derived chain — no generated file hand-edited:
gunbc run --entry dag/tools/generated_artifact_gate.dag --function main_wet→dag/gunbc/stage0_crate_partition_generated.dagregen_stage0(regen → rebuild → regen) →gunbc_stage0_crate_partition_generated.rs, crate roots, workspace members regionregen_stage0 --verifyclean at the fixed pointVerification
cargo check -p v1-stage0-std-core— the exact main repro flips greencargo check --workspacegreen (all partition crates, including the two latent instances)cargo fmt --all --checkclean;regen_stage0 --verifydivergence 0rust_crate_partition_witness_test.dag(18 fns) +generated_artifact_drift_test.dag(8 fns)Deliberately out of scope (operator decisions, not silently taken)
ci_v1_compiler_tests_compile_gate_notefmt-amendment pattern applied here, e.g.cargo check --workspaceor per-partition-crate checks) would have caught all of this weeks ago; enrolling it is a CI-cost decision that belongs to the operator. This PR repairs and enrolls nothing.src/v1/stage0_coreandsrc/v1/stage0_crates.dag(the earlier split) remain tracked on disk and are not workspace members; noticed during the sweep, left as found.🤖 Generated with Claude Code