Skip to content

fix(triage): chain rejected fixes straight into retriage - #60

Merged
matthewp merged 1 commit into
mainfrom
fix/retriage-after-fix-rejection
Nov 3, 2026
Merged

matthewp merged 1 commit into
mainfrom
fix/retriage-after-fix-rejection

Conversation

@matthewp

@matthewp matthewp commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

What

When FixVerifier classifies a candidate fix as rejected, the workflow now posts an acknowledgment comment and chains straight into retriage() with the same conversation, instead of swapping the label to triage: fix rejected and stopping.

Why

fixRejected is a retriageable label, so the old behavior silently parked the issue waiting for a second, separate human comment before RetriageJudge would ever run — even though the comment that caused the rejection almost always already contains the actionable info needed to decide whether to retriage (as seen on withastro/astro#18600, where a maintainer's regression report + suggested fix sat idle after being classified as a rejection).

How

  • Threaded credentials into verifyFix (previously only needed by triage/retriage).
  • On a rejected verdict: swap the label, post a short acknowledgment comment with the verdict's reasoning, then call this.retriage(...) with the issue's current label set to fixRejected so RetriageJudge evaluates the same conversation immediately.

Testing

  • tsc --noEmit clean.
  • vitest run: 425/427 pass; the 2 failing tests (tests/ai-gateway.test.ts) are pre-existing and unrelated (confirmed failing on main before this change too — stale model-catalog fixture).
  • No workflow-level integration tests exist for TriageWorkflow.run to extend (coverage here is via triage-fsm.test.ts/triage-labels.test.ts unit tests, which are unaffected).

Previously, when FixVerifier classified a candidate fix as rejected,
the workflow just swapped the issue to the `triage: fix rejected`
label and stopped silently. Since that label is retriageable, the
system would only pick up the rejection's feedback on a *second*,
separate comment on the issue -- the comment that triggered the
rejection was dropped on the floor even though it usually already
contains the actionable regression info needed to retriage.

Now the rejected branch posts an acknowledgment comment and chains
straight into retriage() with the same conversation, so a single
comment pointing out a regression in a fix branch is enough to kick
off a new triage attempt.
@matthewp
matthewp merged commit 5c6e8b8 into main Nov 3, 2026
1 check passed
@matthewp
matthewp deleted the fix/retriage-after-fix-rejection branch November 3, 2026 15:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant