Repository navigation
emit-build: the probe's cargo spawn asks for plain text, so its discriminating red is attributable in CI - #12105
Closed
gunbai-bot[bot] wants to merge 3 commits into
Closed
gunbai-bot[bot] wants to merge 3 commits into
gunbai-bot[bot] wants to merge 3 commits into
Conversation
…err, so its cause is located EmittedBuildNotDiscriminating said only that no diagnostic named EMIT_COMPILE_MUTATION_PROBE; the faulted cargo run's own output, already captured as stderr_tail, was dropped, so the refusal named the class without locating the cause. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ed fault's refusal is attributable in CI The witnesses workflow sets CARGO_TERM_COLOR=always; the probe's cargo inherited it, every error header began with an ANSI escape, attributed_diagnostic (a line starting 'error') matched nothing, and every CI emit-build refused EmittedBuildNotDiscriminating although the fault was refused exactly as intended (E0308 at EMIT_COMPILE_MUTATION_PROBE, located by the previous commit). CARGO_TERM_COLOR is modeled in extdeps.rust.cargo beside the names the spawn already binds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Installed from the regen candidate and at a fixed point on a second regen; the only mirror this change names. Other drift the regen reports is main's own stale mirrors (the #12089 import-surface widening, owned separately) and is not installed here. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Superseded by #12091, already merged, which fixes the same EmittedBuildNotDiscriminating through the probe's own argv ( The one thing this PR carried that #12091 does not: the unattributed-refusal message includes the faulted cargo run's own stderr tail (already captured in — sent from smart-tern-891 |
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.
emit-build's discriminating red is attributable in CI: the probe's cargo spawn asks for plain text.
Symptom
With E0573 cleared by #12089, main's emit-build (merge_group runs 35808874746 and 35807367813) built the emitted v2 compile crate clean. It then refused
EmittedBuildNotDiscriminating: "the faulted arm refused, but no diagnostic names EMIT_COMPILE_MUTATION_PROBE".Cause, located by execution
stderr_tail, but dropped). Run 35811281201 then showed that the fault WAS refused exactly as intended:error[E0308]atpub const EMIT_COMPILE_MUTATION_PROBE: u8 = ....^[[1m^[[91merror[E0308]. The witnesses workflow setsCARGO_TERM_COLOR: alwaysand the probe's cargo inherited it, so every error header began with an ANSI escape.attributed_diagnosticrecognises a header as a line startingerror, so nothing was ever attributable in CI. Locally there is no colour, so the defect only appears in CI, and it stayed hidden while E0573 stopped every run one step earlier.Repair: the earliest unjustified boundary is the spawn
The spawn already owns every channel cargo reads (RUSTFLAGS, the encoded flags, RUSTC, the wrappers), because the verdict is read from its output. The output encoding was the one channel it left ambient. The spawn now sets
CARGO_TERM_COLOR=never(cargoterm.color). The variable name is modeled inextdeps.rust.cargoCargoEnvironmentVariable(CargoTermColorEnv) beside the names the spawn already binds, andextdeps_cargo.rsis regenerated from it.Evidence
discriminating red established — Discriminatedfor BOTHv2_compiler_compileandv2_cli_compile_cli, each attributing the injected line. All five checks pass.a_coloured_refusal_is_unattributable_and_a_plain_one_is_attributedfeeds CI's verbatim refusal to the parser in both renderings. Plain is attributed; coloured is not.the_probe_cargo_spawn_binds_flags_compiler_and_wrappers_and_the_receipt_names_that_spawnnow assertsCARGO_TERM_COLOR=neveron the Command's own environment table.extdeps_cargo.rsreaches a fixed point on a second regen, and the diff is exactly the variant, its name arm and its marker. Other drift the regen reports is main's own stale mirrors (the Use-line planner sees a unit variant two applications deep, so its import binds the marker type (E0573 PointerWidth) #12089 import-surface widening, owned separately) and is not installed here.Rung (DESIGN §4b)
This is rung 2, mechanically preventable. The attribution still depends on the spawn setting the variable and on the unit pair staying enrolled. The refusal also now carries the faulted arm's stderr, so any future unattributed red is located rather than only named.
🤖 Generated with Claude Code