Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 63 additions & 6 deletions dag/gunbc/emitted_closure_compile_seed_growth.dag
Original file line number Diff line number Diff line change
Expand Up @@ -144,12 +144,17 @@ import gunbc.seed_growth { SeedGrowthJustification }
// the mandatory emitted-crate cargo check refuses it' -- a claim about a fixture the entry roster
// cannot reach. This arm is where that claim EXECUTES instead of being asserted.
//
// ATTRIBUTION IS PART OF THE RED. The red fixture's closure is hundreds of modules and a bare
// non-zero status could come from any of them, so the pair passes only when a diagnostic line
// NAMES the fixture's own emitted module; otherwise the report reads 'unattributed' and the pair
// FAILS rather than crediting a red the fixture did not cause. run_cargo's attribution symbol is
// therefore a parameter of the caller rather than the injected mutation's constant: the required
// phase attributes its own fault, the fixture route attributes the fixture.
// ATTRIBUTION IS PART OF THE RED, AND IT IS TWO FACTS RATHER THAN ONE. The red fixture's closure
// is hundreds of modules and a bare non-zero status could come from any of them, so the pair
// requires a diagnostic line NAMING the fixture's own emitted module; otherwise the report reads
// 'unattributed' and the pair FAILS rather than crediting a red the fixture did not cause.
// run_cargo's attribution symbol is therefore a parameter of the caller rather than the injected
// mutation's constant: the required phase attributes its own fault, the fixture route attributes
// the fixture. THAT LOCATION SAYS WHERE AND NOT WHAT, so it is joined by the rustc ERROR CODE the
// class renders as (E0308, mismatched types) read from the diagnostic header GOVERNING that
// location -- without which the pair passed on any refusal reported in the right file, including
// refusals that are not this class at all. The correction is recorded in full beside the roster
// below.
//
// WHERE IT EXECUTES, STATED HONESTLY BECAUSE IT IS NOT THE MERGE PATH. The pair's ONE consumer is
// `v1.compiler.compiler_tests_rust` `fixture_closure_rustc_discrimination`, emitted into
Expand Down Expand Up @@ -347,6 +352,50 @@ import gunbc.seed_growth { SeedGrowthJustification }
// and cargo-actuation boundary; owning_dissolution_lane remains v1-hand-queue-drain, and the whole
// selection surface deletes when those two effects are modeled and actuated.

// HAND-RUST RECEIPT FOR THE RED ARM'S ERROR-CLASS CORRECTION (2026-09-02). Additions: EIGHT exact
// declarations, enumerated rather than counted -- attributed_diagnostic,
// cargo_verdict_probe_diagnostic, fixture_closure_attributed_diagnostic,
// FIXTURE_RED_EXPECTED_RUSTC_CODE, and the four unit tests
// the_attributed_diagnostic_is_the_header_governing_the_attributed_line and
// an_unnamed_symbol_attributes_nothing_rather_than_the_first_diagnostic and
// a_warning_naming_the_file_does_not_attribute_the_refusal and
// a_red_of_the_wrong_error_class_does_not_pass_the_pair. Modified rather than
// added: CargoVerdict (Completed gains probe_diagnostic), run_cargo (the scan moves into the pure
// function), fixture_discrimination_passed, fixture_discrimination_report, and the unit test
// a_green_baseline_does_not_pass_without_the_discrimination (one constructed variant). The roster
// below therefore stands at 83 rows. WHY RUST IS STILL NEEDED, owning lane, deletion trigger and
// current boundary are unchanged: the subject is still the cargo actuation boundary.
//
// WHAT THE CORRECTION IS, RECORDED BECAUSE IT IS A CLAIM THIS FILE PREVIOUSLY OVERSTATED. The pair
// passed on ANY rustc refusal reported in the red fixture's own emitted module -- attribution was
// a location, and a location says WHERE and never WHAT. A fixture edited into a syntax error, an
// emitter regression producing an unresolved path, or an arity fault would each have reddened the
// arm in the right file and been reported PASSED, while the text-boundary class the arm names had
// stopped being its subject. The arm now additionally requires the rustc error code the class
// renders as (`E0308`, cited from the rustc error index), attributed to the diagnostic GOVERNING
// that location rather than to any header in the run. Nothing here changes where the arm executes
// or what it may be cited as: it is still `#[ignore]`d candidate evidence, and the paragraphs
// above about rungs stand unaltered. The one thing that now executes on every push is the PARSE
// the red arm rests on, through the two unit tests above -- which is why the scan was factored out
// of run_cargo rather than left inside a function that can only run by spawning a toolchain.
//
// THE CODE WAS MEASURED BEFORE IT WAS REQUIRED, not inferred from the class description. The
// instrument is the arm's own enrolled invocation -- `cargo test --release -p v1-compiler --lib
// fixture_closure_rustc_discrimination -- --ignored --nocapture` -- run on the pre-change tree,
// where the red arm's diagnostic in the fixture's own emitted module is `E0308`. Re-derive it
// there rather than trusting this sentence; a constant naming a code the fixture does not produce
// would turn the arm permanently red, which is the failure mode this measurement rules out. THE
// CODE AND NOT THE WORDING, and that is measured too rather than preferred: across the two runs
// taken here the same E0308 arrived once as `mismatched types` and once as `arguments to this
// function are incorrect`. A constant matching rustc's prose would have been red on the second
// run without anything about the emitter changing; the error index code is the part of the
// diagnostic rustc governs as an identity.
// A SECOND NARROWING RIDES WITH THE FIRST, and it is about which diagnostics may attribute at
// all: only an `error` does. An emitted module routinely collects warnings, they are printed
// above the error that stopped the build, and a red attributed to one would name a line that
// refused nothing -- so a file named only by warnings is unattributed rather than attributed to
// an error elsewhere in the run that does not govern it.

data emitted_closure_compile_seed_growth_justification: SeedGrowthJustification = SeedGrowthJustification {
hand_authored_declarations: [
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "REQUIRED_EMIT_COMPILE_ENTRIES_DATA_NAME", field: WholeDeclaration },
Expand All @@ -359,6 +408,7 @@ data emitted_closure_compile_seed_growth_justification: SeedGrowthJustification
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "cargo_verdict_compiled", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "cargo_verdict_summary", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "cargo_verdict_probe_line", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "cargo_verdict_probe_diagnostic", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "cargo_verdict_stderr_tail", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "entry_own_subject", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "MutationSubject", field: WholeDeclaration },
Expand All @@ -380,18 +430,21 @@ data emitted_closure_compile_seed_growth_justification: SeedGrowthJustification
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "probe_crate_dir", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "write_probe_crate", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "run_cargo", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "attributed_diagnostic", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "write_probe_crate_files", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "FixtureClosureOutcome", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_closure_compiled", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_closure_reached_rustc", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_closure_attributed_line", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_closure_attributed_diagnostic", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_closure_summary", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_rust_module", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_closure_rustc_verdict", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_arm_diagnostic_lines", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "FixtureDiscrimination", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "FIXTURE_GREEN_PATH", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "FIXTURE_RED_PATH", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "FIXTURE_RED_EXPECTED_RUSTC_CODE", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_arm_verdict", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "run_fixture_closure_discrimination", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "fixture_discrimination_passed", field: WholeDeclaration },
Expand Down Expand Up @@ -427,6 +480,10 @@ data emitted_closure_compile_seed_growth_justification: SeedGrowthJustification
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "the_probe_root_does_not_exist_without_runner_temp", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "a_failed_restore_is_not_masked_by_a_non_terminal_fault_verdict", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "a_green_baseline_does_not_pass_without_the_discrimination", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "the_attributed_diagnostic_is_the_header_governing_the_attributed_line", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "an_unnamed_symbol_attributes_nothing_rather_than_the_first_diagnostic", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "a_warning_naming_the_file_does_not_attribute_the_refusal", field: WholeDeclaration },
DeclarationRef { module_path: "v1_compiler.emitted_closure_compile_host", decl_name: "a_red_of_the_wrong_error_class_does_not_pass_the_pair", field: WholeDeclaration },
],
reason: "WHY RUST IS STILL NEEDED, and it is a REACHABILITY limit rather than a modeling gap. The subject is a required CI phase: it must run inside claim_executor, which is the only witness-executing consumer in the tree, and its stages are host effects -- writing an emitted tree to disk and spawning cargo over it. The required floor's hermetic envelope REFUSES host effects during preparation, so a .dag witness whose subject is a subprocess exit status is counted executed while its assertion never runs; DESIGN's Building-&-checks section records that boundary in as many words, and records that mocking the refusal would pass the witness against a fabricated exit status. So the phase has to live where the effects do, exactly as required_regen_host and partition_crate_boundary_host do.\n\nWHY IT IS ADMITTED AGAINST THE v1 FREEZE, ON PRECEDENT RATHER THAN ANALOGY. gunbc.v1_maintenance_standing v1_seed_standing admits a change by PURPOSE -- does it serve the v2 self-host program -- and the purpose test reaches the INSTRUMENT that measures that program, not only the program. This is that instrument in the most direct available sense: the self-host claim IS that the emitted tree compiles and behaves, and until now nothing on the merge path compiled an emitted tree at all. gunbc.floor_non_verdict_enrollment and gunbc.declaration_index_seed_growth are both admitted on that same footing. Classified against the five refused classes: NewLanguageBehavior -- no, the compile pipeline is byte-untouched, no diagnostic is added, moved or removed. NewCompatibilityObligation -- no, nothing is kept working for an old caller. NewEscapeHatchOrAdmissionRow -- no, and the direction is opposite: this adds a wall and adds no flag, env var or mode that skips it. SeedFeatureCompletion -- no, the seed compiler gains no capability; it compiles exactly what it compiled before. PublicSurfaceGrowth -- the nearest, and the test is a diff over THE EMITTED SEED'S EXPORTED DECLARATIONS: the file is wired by #[path] mod inside cli_run.rs exactly as declaration_index.rs, phase_profile.rs and partition_crate_boundary_host.rs are, so it contributes no pub mod line to the emitted lib.rs and its SeedRetainedIntrinsicRegistration carries has_pub_mod: false.\n\nWHAT IS NOT CLAIMED. This phase is not a compile of the corpus and must not be read as one: gunbc.whole_corpus_compile_admission refuses a whole-bundle compile on the default runner and records two EXIT=137 kills behind that refusal, so the subject is a bounded roster of entries in gunbc.ci_layer_roots required_emit_compile_entries. It carries no diagnostic count, no baseline and no ratchet -- a merge-blocking comparison against a population measured on the current tree is the tree-copied oracle DESIGN 5 rejects.",
owning_dissolution_lane: "v1-hand-queue-drain" as RoadmapNodeId,
Expand Down
11 changes: 8 additions & 3 deletions src/v1/compiler_tests_rust.dag
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,11 @@ fn ct_fixture_closure_rustc_discrimination_test() -> String {
" /// THE PAIR IS THE SUBJECT, NOT EITHER ARM. The control must COMPILE, or a red below\n",
" /// proves only that something in the tree is broken. The red must be refused BY RUSTC and\n",
" /// ATTRIBUTED to the fixture's own emitted module, or a non-zero status from any of the\n",
" /// hundreds of modules in its closure would pass for the fixture's own defect.\n",
" /// hundreds of modules in its closure would pass for the fixture's own defect -- and the\n",
" /// attributed diagnostic must be the ERROR CLASS this arm claims (rustc E0308, mismatched\n",
" /// types), because a location says WHERE rustc refused and never WHAT. Without the code a\n",
" /// fixture edited into a syntax error, or an emitter regression producing an unresolved\n",
" /// path, reds in the right file and passes for the text-boundary subject it is not.\n",
" ///\n",
" /// #[ignore] AND WHY, STATED RATHER THAN LEFT TO BE DISCOVERED: this arm spawns cargo and\n",
" /// compiles two emitted crates, which is minutes rather than milliseconds, and\n",
Expand All @@ -328,10 +332,11 @@ fn ct_fixture_closure_rustc_discrimination_test() -> String {
" );\n",
" assert!(\n",
" crate::cli_run::fixture_discrimination_passed(&pair),\n",
" \"the control must compile and the meaning-level red must be refused by rustc and attributed to its own emitted module; control={} red={} attribution={:?}\",\n",
" \"the control must compile and the meaning-level red must be refused by rustc, attributed to its own emitted module, and carry the claimed error class; control={} red={} attribution={:?} diagnostic={:?}\",\n",
" crate::cli_run::fixture_closure_summary(&pair.green),\n",
" crate::cli_run::fixture_closure_summary(&pair.red),\n",
" crate::cli_run::fixture_closure_attributed_line(&pair.red)\n",
" crate::cli_run::fixture_closure_attributed_line(&pair.red),\n",
" crate::cli_run::fixture_closure_attributed_diagnostic(&pair.red)\n",
" );\n",
" }\n\n")
}
Expand Down
9 changes: 5 additions & 4 deletions src/v1/stage0/src/cli_run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40291,10 +40291,11 @@ pub use emitted_closure_compile_host::{
/// public surface merely because Rust needs a path to it.
#[cfg(test)]
pub(crate) use emitted_closure_compile_host::{
fixture_arm_diagnostic_lines, fixture_closure_attributed_line, fixture_closure_reached_rustc,
fixture_closure_rustc_verdict, fixture_closure_summary, fixture_discrimination_passed,
fixture_discrimination_report, run_fixture_closure_discrimination,
run_function_value_adapter_discrimination, FixtureClosureOutcome,
fixture_arm_diagnostic_lines, fixture_closure_attributed_diagnostic,
fixture_closure_attributed_line, fixture_closure_reached_rustc, fixture_closure_rustc_verdict,
fixture_closure_summary, fixture_discrimination_passed, fixture_discrimination_report,
run_fixture_closure_discrimination, run_function_value_adapter_discrimination,
FixtureClosureOutcome,
};

/// The authority's own declared module path, for consumers outside this module.
Expand Down
11 changes: 8 additions & 3 deletions src/v1/stage0/src/compiler_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,11 @@ mod compiler_tests {
/// THE PAIR IS THE SUBJECT, NOT EITHER ARM. The control must COMPILE, or a red below
/// proves only that something in the tree is broken. The red must be refused BY RUSTC and
/// ATTRIBUTED to the fixture's own emitted module, or a non-zero status from any of the
/// hundreds of modules in its closure would pass for the fixture's own defect.
/// hundreds of modules in its closure would pass for the fixture's own defect -- and the
/// attributed diagnostic must be the ERROR CLASS this arm claims (rustc E0308, mismatched
/// types), because a location says WHERE rustc refused and never WHAT. Without the code a
/// fixture edited into a syntax error, or an emitter regression producing an unresolved
/// path, reds in the right file and passes for the text-boundary subject it is not.
///
/// #[ignore] AND WHY, STATED RATHER THAN LEFT TO BE DISCOVERED: this arm spawns cargo and
/// compiles two emitted crates, which is minutes rather than milliseconds, and
Expand All @@ -492,10 +496,11 @@ mod compiler_tests {
);
assert!(
crate::cli_run::fixture_discrimination_passed(&pair),
"the control must compile and the meaning-level red must be refused by rustc and attributed to its own emitted module; control={} red={} attribution={:?}",
"the control must compile and the meaning-level red must be refused by rustc, attributed to its own emitted module, and carry the claimed error class; control={} red={} attribution={:?} diagnostic={:?}",
crate::cli_run::fixture_closure_summary(&pair.green),
crate::cli_run::fixture_closure_summary(&pair.red),
crate::cli_run::fixture_closure_attributed_line(&pair.red)
crate::cli_run::fixture_closure_attributed_line(&pair.red),
crate::cli_run::fixture_closure_attributed_diagnostic(&pair.red)
);
}

Expand Down
Loading
Loading