Today — diagnosis() (crates/launchbound-prune/src/runner.rs:140-143) keeps the stderr lines that starts_with("error:"). rustc's primary diagnostics begin error[E0583]: — a code in brackets before the colon — so they do not match, and what survives is cargo's summary line and reconverge's generic hint. Measured against 2.0.0, with the module-directory kernel from #43:
# what rustc printed in the scratch copy
error[E0583]: file not found for module `util`
error: could not compile `reduce-flip` (lib) due to 1 previous error
# what the tool error carries
TOOL ERROR (hard stop): cargo reconverge exited 2:
error: could not compile `reduce-flip` (lib) due to 1 previous error
error: `cargo check` under the reconverge driver failed (see the errors above). If rustc reported real build errors, fix those and rerun; if the driver itself failed to start …
"See the errors above." The one that was above is the one the filter removed.
Why it is worth fixing — #19 put this filter in because the tail-six heuristic "reliably picked the wrong six", and the fix was to take the marked lines however far from the end they are. The marker it chose is the secondary form. Every compile error rustc reports carries a code, and a compile error is the common case of a gate tool error on a kernel that has one — so the message the filter was built to preserve is the message it drops, for exactly the class of failure a kernel author actually hits. reconverge's own error: lines — a bad --cc, the setup hint — still come through: the filter works for the analyzer and fails for the compiler.
Fix — accept error followed by either : or [: line.starts_with("error:") || line.starts_with("error["). One line, plus a test beside the_marked_line_is_taken_however_far_from_the_end_it_is that feeds an error[E0583]: line followed by cargo's summary and asserts both survive. Cargo's summary line on its own is never the diagnosis.
Done when — the tool-error detail for a scratch compile failure includes rustc's error[E…]: line(s); the new test passes; #19's test still passes.
Today —
diagnosis()(crates/launchbound-prune/src/runner.rs:140-143) keeps the stderr lines thatstarts_with("error:"). rustc's primary diagnostics beginerror[E0583]:— a code in brackets before the colon — so they do not match, and what survives is cargo's summary line and reconverge's generic hint. Measured against 2.0.0, with the module-directory kernel from #43:"See the errors above." The one that was above is the one the filter removed.
Why it is worth fixing — #19 put this filter in because the tail-six heuristic "reliably picked the wrong six", and the fix was to take the marked lines however far from the end they are. The marker it chose is the secondary form. Every compile error rustc reports carries a code, and a compile error is the common case of a gate tool error on a kernel that has one — so the message the filter was built to preserve is the message it drops, for exactly the class of failure a kernel author actually hits. reconverge's own
error:lines — a bad--cc, the setup hint — still come through: the filter works for the analyzer and fails for the compiler.Fix — accept
errorfollowed by either:or[:line.starts_with("error:") || line.starts_with("error["). One line, plus a test besidethe_marked_line_is_taken_however_far_from_the_end_it_isthat feeds anerror[E0583]:line followed by cargo's summary and asserts both survive. Cargo's summary line on its own is never the diagnosis.Done when — the tool-error detail for a scratch compile failure includes rustc's
error[E…]:line(s); the new test passes; #19's test still passes.