Repository navigation
Pkg7d/7e: the emitted compiler closure as a derived multi-crate workspace, built, with a dropped-dependency RED - #12214
Conversation
…nst the stage0 crate partition v1.compiler.emit_rust returns SemanticSourceReference edges beside the use-lines it renders (emit_imports, reference_derived_use_line_plan, service imports); they ride EmitResult and PipelineResult out to required-regen, where gunbc.stage0_emitted_edge_admission refuses an edge whose target crate the source crate does not reach (E0432 class) and names a module outside the seed as NotCovered. gunbc_rust_emitted_edge moves into the std-core unit, which the first partition build demanded. v1 touched as v2 self-host work (v1_seed_standing). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t_core_support names it at the crate root Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ed-module row) The REDs and controls execute over fixtures on every required run; the admission over the real seed emission still runs only at author regen, under gunbc.rung_drop witness_floor_off_the_required_gate. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…urces Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pace, built with a dropped-dependency red v2.workflow.emitted_crate_workspace derives crate rows from the closure's module DAG, the emission's returned edges and the transitive unit dependencies; v1.compiler.stage0_crates renders any row set with the one partition renderer; //gunbc/instruments:emitted-crate-workspace emits, renders, builds the workspace and requires a transitive-reduction dependency drop to fail naming its target module. The module filename rule moves to gunbc.rust_emitted_edge, the edge-endpoint authority. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nt names every member Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…erived producer no longer resolves it to a same-named declaration ExprVarClassification classify treated a dotted chain's head as a namespace segment only when no declaration anywhere shared its spelling, and reference_resolution_facts runs with no declaration index, so the head of every v2.std.* path fell to the free-reference default and resolved UniqueBare to test.claim.secret_rotation_witness fn v2(). A head whose chain names a declared module is now QualifiedChainHead; binders still outrank it and value chains keep their edges. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…n-lynx-90-pkg7e # Conflicts: # src/v1/stage0/src/v1_compiler_emit_rust.rs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ner spelling binds no module dag/std/primitives (import-free) annotates data with the kernel type String, and the producer resolved it UniqueBare to std.string_type. The census pull already skipped kernel and container spellings; that rule is now the named is_substrate_vocabulary and the reference-derived producer reads it too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…prose
reference_derived_use_line_plan admitted a candidate use-line when its name was among the emitted
source's identifier tokens, string literal contents included, so std.content_hash's prose mention of
v2.std.node.Hash emitted pub use crate::v2_std_node::{Hash} -- unused, and a reverse edge the crate
partition refuses. The token set now comes from rust_code_outside_string_literals. Across the seed
eleven dead prose-attested imports drop from six mirrors; the seed compiles and regen is a fixed point.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…stern-lynx-90-pkg7e # Conflicts: # src/v1/stage0/src/emitted_population.rs # src/v1/stage0/src/v1_compiler_emit.rs # src/v1/stage0/src/v1_compiler_emit_rust.rs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ates {...}, so {Hash} evaluated Hash
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v1/05_emit_rust.dag # src/v1/stage0/src/emitted_population.rs # src/v1/stage0/src/v1_compiler_emit_rust.rs
… origin/main Import edges were taken before dedupe_rust_import_lines, so a line dedupe dropped still reached the partition as an edge -- measured as EmitterReverseEdge std_content_hash -> v2_std_node over the v2.compiler.compile closure, with no such line in the emitted file. rust_use_line_edges_surviving keeps a typed edge only when a surviving line names its target module. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v1/stage0/src/v1_compiler_emit.rs # src/v1/stage0/src/v1_compiler_emit_rust.rs # src/v1/stage0/src/v1_compiler_infer.rs
…stern-lynx-90-pkg7e
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…no longer emits a Hash use-line Over the full v2.compiler.compile closure std_content_hash's derive of std::hash::Hash still attested a proposed Hash through the colon-splitting tokenizer. Segments after :: are marked so they never equal a candidate; path heads stay tokens. Seed regen reaches a fixed point; the seed compiles. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…stern-lynx-90-pkg7e # Conflicts: # src/v1/stage0/src/v1_compiler_emit_rust.rs # src/v1/stage0/src/v1_compiler_infer.rs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…they run over supplied inputs Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-pkg7e # Conflicts: # dag/gunbc/recurring_failure_mode/a_namespace_root_segment_resolves_as_a_bare_reference.dag # dag/test/claim/namespace_root_reference_edge_witness_test.dag # src/v1/stage0/src/cli_run.rs # src/v1/stage0/src/v1_compiler_infer.rs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…70840) gunbc.emitted_crate_workspace_seed_growth names every hand-authored declaration, the reason (effect boundary plus value transport, no partition decision), the owning lane and the capability trigger that retires it: host-effect emission making the instrument one .dag fold. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review 70840: fixed in the latest push. — sent from stern-lynx-90 |
…-pkg7e # Conflicts: # dag/gunbc/stage0/stage0_emitted_edge_admission.dag # src/v1/05_emit_core_support.dag # src/v1/05_emit_rust.dag # src/v1/stage0/src/gunbc_rust_emitted_edge.rs # src/v1/stage0/src/gunbc_stage0_emitted_edge_admission.rs # src/v1/stage0/src/v1_compiler_emit.rs # src/v1/stage0/src/v1_compiler_emit_core_support.rs # src/v1/stage0/src/v1_compiler_emit_go.rs # src/v1/stage0/src/v1_compiler_emit_python.rs # src/v1/stage0/src/v1_compiler_emit_rust.rs # src/v1/stage0/src/v1_compiler_infer.rs # src/v1/stage0/src/v1_compiler_stage0_crates.rs # src/v1/stage0/src/v1_tests_claim_reference_derived_disposition_census_witness_test.rs # src/v1/stage0_crates.dag # src/v2/workflow/required_floor.dag
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pkg7d/7e: the emitted compiler closure, rendered as a derived multi-crate workspace and built, with a dropped-dependency RED
Its stack has landed. #12171, #12190, #12200 and #12203 have all merged, and main is merged in, so the diff is now only the 7e change.
What it does
The plan:
v2.workflow.emitted_crate_workspaceemitted_workspace_plan. It partitions thev2.compiler.compileclosure into crate rows, from:emitted_closure_crate_partition);gunbc.rust_emitted_edge, merged with the typed reverse-edge refusal);rust_crate_partition_declared_core_target;derived_dep_packages, the Derive the stage0 edge-list disagreement, and enrol the fold that keeps it honest #12035 derivation).Nothing is read from the stage0 debt rows. The runtime is a fixed foundation crate.
Refusals, all typed:
ClosuresDisagree, naming every member.NoDiscriminatingEdge.One renderer.
v1.compiler.stage0_cratesnow renders any row set (partition_crate_boundary_emit_outcome_over). Its owner and dependency lookups read the set they are handed. The committed stage0 rows are one caller, and this workspace is another. There is no second manifest or lib.rs writer.One filename rule.
module_to_filename/rust_module_emit_filenamemove togunbc.rust_emitted_edge, the edge-endpoint authority. The emitter and the plan read the same function.The instrument:
gunbc test //gunbc/instruments:emitted-crate-workspace(parent condition 1)gunbc.instrument_targets,gunbc.target_bindingEmittedCrateWorkspaceProducer, hostcli_run::emitted_crate_workspace_host).Receipt, one remote dispatch, on the merged head
87b0cc9:The RED cannot be papered over by the facade (parent condition 2)
pub use <dep>::*can re-export it by a second road. The emitter must also have written that edge as a real use-line, so rustc has a path that has to stop resolving.RedNotAttributed, and a red that builds refuses asRedBuiltGreen. Neither counts as a pass.What this build does not prove (parent conditions 3 and 4)
crate::<module>::paths the expression emitter writes are not returned as edges (gunbc.guarantee_stallemitted_inline_crate_path_edges_unreturned_stall). The facade did not degenerate to the whole closure (facade_is_whole_closure=false), so this is a partition, not one crate split into files. It is not a minimal public surface either.v2.compiler.source_authoritymodule_storage_bindings_for_source_roots, the capability the existingInterfaceGroundingCapabilitydebt row already names, so no new row is added. A green therefore says the derived partition compiles through glob facades; it says nothing about per-crate interfaces.test.claim.emitted_crate_workspace_witnessare a row ofv2.workflow.required_floorrequired_gate_authored_modules(parent ruling). They runemitted_workspace_plan_overon a supplied three-module DAG and supplied edges, and never the live closure: RED selection, transitive re-exports,ClosuresDisagreeandNoDiscriminatingEdge. Measured cost, from the required floor run atdd59430([enrolment-margin]lines, observed CPU against a 302 ms budget; every claim planned and passed):the_chain_plans_three_crates_plus_the_runtime_with_transitive_reexportsthe_red_drops_an_edge_the_emitter_wrote_as_a_use_linea_single_crate_plan_refuses_for_want_of_a_discriminating_edgea_dag_module_the_emission_did_not_produce_refuses_by_namean_emitted_module_outside_the_dag_refuses_by_nameThe floor log prints no eval-step count for a passing claim, so CPU is the measurement given. None of the five re-runs the real closure.
What the build found, each fixed at its root in its own PR
v2inv2.std.*) resolved as a bare reference to a test module'sfn v2(). The live DAG had 24 modules the emission lacked.Stringinstd.primitives) resolved tostd.string_type. That left one module still in disagreement.std::hash::Hashpath segments. The result was a deadpub use crate::v2_std_node::{Hash}, a reverse edge the partition refused.v1 admission. This is v2 self-host work under
gunbc.v1_maintenance_standingv1_seed_standing. Hand Rust added:cli_run/emitted_crate_workspace_host.rs: the effect boundary plus value transport; it decides nothing about the partition);target_invocation_host.rs.The
stage0_cratesgeneralization is.dag, with regenerated mirrors; the seed regen is a fixed point.🤖 Generated with Claude Code