fix(1101): strip passing-test lines before classify() lint check; remove diagnostic
The merge gate classifier was matching trigger keywords like `missing_doc_comments` inside passing-test name lines (e.g. `test agents::gates::tests::classify_lint_from_missing_doc_comments ... ok`), causing every gate failure to be mis-classified as Lint and bounced back to a fixup coder. Strip `test … … ok` lines before scanning for lint triggers. Also removes the temporary diagnostic block in runner.rs that confirmed the bug. Applied directly to master because the 1101 feature branch carried stale work from an earlier incarnation of the story that semantically conflicted with master's later diagnostic commit (`is_fixup` deleted on the branch, referenced on master). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -186,50 +186,6 @@ impl AgentPool {
|
||||
.map(|k| k.is_self_evident_fix())
|
||||
.unwrap_or(false);
|
||||
|
||||
// Bug 1101 diagnostic: log the classified failure_kind and the
|
||||
// matched classifier-trigger substring with surrounding context,
|
||||
// so we can confirm whether classify() is incorrectly matching
|
||||
// a passing-step stdout substring (e.g. "Diff in " inside a
|
||||
// failing test's panic message) and bouncing the story to a
|
||||
// fixup coder. Remove once the fix lands.
|
||||
if let Ok(r) = report.as_ref()
|
||||
&& let crate::agents::merge::MergeResult::GateFailure {
|
||||
output: gate_output,
|
||||
failure_kind: Some(k),
|
||||
} = &r.result
|
||||
{
|
||||
const TRIGGERS: &[&str] = &[
|
||||
"CONFLICT (content):",
|
||||
"Merge conflict:",
|
||||
"Diff in ",
|
||||
"would reformat",
|
||||
"missing-docs direction",
|
||||
"error[clippy::",
|
||||
"warning[clippy::",
|
||||
"missing_doc_comments",
|
||||
"error[E",
|
||||
];
|
||||
let matched = TRIGGERS
|
||||
.iter()
|
||||
.find_map(|t| gate_output.find(t).map(|i| (*t, i)));
|
||||
let (trigger, context) = match matched {
|
||||
Some((t, i)) => {
|
||||
let start = i.saturating_sub(30);
|
||||
let end = (i + t.len() + 60).min(gate_output.len());
|
||||
let ctx = gate_output
|
||||
.get(start..end)
|
||||
.unwrap_or("<context unavailable>")
|
||||
.replace('\n', " ");
|
||||
(Some(t), ctx)
|
||||
}
|
||||
None => (None, String::from("<no trigger matched>")),
|
||||
};
|
||||
slog!(
|
||||
"[merge] classify diagnostic for '{sid}': failure_kind={k:?} \
|
||||
is_fixup={is_fixup} trigger={trigger:?} context='{context}'"
|
||||
);
|
||||
}
|
||||
|
||||
if is_no_commits {
|
||||
let reason = kind.display_reason();
|
||||
if let Err(e) = crate::agents::lifecycle::transition_to_blocked(&sid, &reason) {
|
||||
|
||||
Reference in New Issue
Block a user