Summary
On dev-resume, the autonomous-dev agent declares "nothing outstanding" and exits when the linked PR is already APPROVED + CI-green + mergeable, even when a new Review findings: comment with BLOCKING issues was posted to the issue after the approval — so late-arriving review findings are silently skipped.
Steps to Reproduce
- Run a feature issue through the pipeline to
pending-review; the review fleet (e.g. agy + codex) approves and the PR reaches APPROVED + mergeable. With no-auto-close, the pipeline stops before merge.
- After the approval, an operator (or a late/independent review) posts a new comment to the issue beginning with
Review findings: that contains BLOCKING (P1) issues, and moves the issue back to pending-dev.
- The dispatcher dispatches
dev-resume. The agent runs Resume Awareness.
Expected Behavior
The resume should treat the post-approval Review findings: comment as outstanding work: read it, address the BLOCKING items, and NOT exit early — regardless of the PR's current APPROVED/mergeable state. Resume Awareness (autonomous-mode.md) already lists "Read review feedback from issue comments" as step 5; that step should govern the exit decision.
Actual Behavior
The agent posts a "Resume check — nothing outstanding to address" comment citing: review = APPROVED (no inline comments / no change requests), CI = green, PR = MERGEABLE, then exits with no code changes. The standing APPROVED reviewDecision short-circuits the resume before the Review findings: issue comment is acted on. The operator had to manually dismiss the stale approval AND re-post the findings with the exact Review findings: marker to get the next resume to pick them up.
Environment
- Stage: autonomous pipeline (local execution backend),
GH_AUTH_MODE=app
- Relevant:
skills/autonomous-dev/references/autonomous-mode.md "Resume Awareness" (step 5: "Read review feedback from issue comments -- look for 'Review findings:' comments")
Severity
Degraded — blocking review findings can be silently dropped on an approved PR, so a PR with known P1 defects can sit in approved/awaiting-merge looking clean. Data-correctness P1s reached the awaiting-merge state in the observed case.
Possible Cause
Two compounding gaps in the resume decision:
- Approved-PR short-circuit. The resume treats
reviewDecision == APPROVED + green CI + mergeable as terminal ("nothing outstanding") and exits before fully evaluating issue comments. A newer Review findings: comment posted after the approval timestamp is not weighed against the approval.
- Brittle marker matching. Resume Awareness keys off the literal string
Review findings:. A findings comment that does not start with that exact marker (e.g. a heading like ## Codex review findings) is not recognized as actionable, even though it is clearly a request for changes. The contract depends on an exact magic string with no fallback.
Suggested direction:
- On resume, compare the newest
Review findings: (or change-request) comment timestamp against the latest approval timestamp; if findings are newer than the approval, do NOT treat the PR as done — even if reviewDecision == APPROVED.
- Broaden recognition beyond the exact
Review findings: prefix (e.g. also match a failed-substantive verdict marker, a [P1]/BLOCKING token, or a configurable set), OR document the exact-marker requirement prominently so operators post the right string.
- Optionally: when findings are detected post-approval, the resume could dismiss the stale approval itself so the PR's
reviewDecision reflects reality.
Testing Requirements
Mandatory: The dev agent MUST create tests that prevent regression of this bug.
Unit Tests
Acceptance Criteria
Dependencies
Summary
On
dev-resume, the autonomous-dev agent declares "nothing outstanding" and exits when the linked PR is already APPROVED + CI-green + mergeable, even when a newReview findings:comment with BLOCKING issues was posted to the issue after the approval — so late-arriving review findings are silently skipped.Steps to Reproduce
pending-review; the review fleet (e.g.agy+codex) approves and the PR reaches APPROVED + mergeable. Withno-auto-close, the pipeline stops before merge.Review findings:that contains BLOCKING (P1) issues, and moves the issue back topending-dev.dev-resume. The agent runs Resume Awareness.Expected Behavior
The resume should treat the post-approval
Review findings:comment as outstanding work: read it, address the BLOCKING items, and NOT exit early — regardless of the PR's current APPROVED/mergeable state. Resume Awareness (autonomous-mode.md) already lists "Read review feedback from issue comments" as step 5; that step should govern the exit decision.Actual Behavior
The agent posts a "Resume check — nothing outstanding to address" comment citing: review = APPROVED (no inline comments / no change requests), CI = green, PR = MERGEABLE, then exits with no code changes. The standing APPROVED
reviewDecisionshort-circuits the resume before theReview findings:issue comment is acted on. The operator had to manually dismiss the stale approval AND re-post the findings with the exactReview findings:marker to get the next resume to pick them up.Environment
GH_AUTH_MODE=appskills/autonomous-dev/references/autonomous-mode.md"Resume Awareness" (step 5: "Read review feedback from issue comments -- look for 'Review findings:' comments")Severity
Degraded — blocking review findings can be silently dropped on an approved PR, so a PR with known P1 defects can sit in
approved/awaiting-merge looking clean. Data-correctness P1s reached the awaiting-merge state in the observed case.Possible Cause
Two compounding gaps in the resume decision:
reviewDecision == APPROVED+ green CI + mergeable as terminal ("nothing outstanding") and exits before fully evaluating issue comments. A newerReview findings:comment posted after the approval timestamp is not weighed against the approval.Review findings:. A findings comment that does not start with that exact marker (e.g. a heading like## Codex review findings) is not recognized as actionable, even though it is clearly a request for changes. The contract depends on an exact magic string with no fallback.Suggested direction:
Review findings:(or change-request) comment timestamp against the latest approval timestamp; if findings are newer than the approval, do NOT treat the PR as done — even ifreviewDecision == APPROVED.Review findings:prefix (e.g. also match afailed-substantiveverdict marker, a[P1]/BLOCKINGtoken, or a configurable set), OR document the exact-marker requirement prominently so operators post the right string.reviewDecisionreflects reality.Testing Requirements
Unit Tests
Review findings:with a[P1]at time T2 > T1, the resume MUST classify the issue as having outstanding work (not "nothing outstanding").Review findings:prefix but carries a BLOCKING/[P1]token is still recognized (or, if exact-marker is kept by design, assert the documented contract and that non-matching comments are explicitly logged as ignored).Acceptance Criteria
dev-resumewhose PR is APPROVED + mergeable but which has a newer post-approvalReview findings:(BLOCKING) comment proceeds to address the findings instead of exiting "nothing outstanding".Dependencies