Problem
During the scheduled review run (run #25707852006), the single-review step invoked claude-opus-4-7 to confirm an approval for PR #129. The model ran for ~74 seconds and returned a non-JSON response, causing the entire batch session to abort — skipping all 35 remaining PR candidates.
Failure trace
[approve] triage cleared — running single confirmation (claude-opus-4-7)
##[error]single-review did not produce valid JSON
##[error]Review failed for .../pull/129 (exit code 1)
##[error]Session aborted early after failure on .../pull/129 (exit code 1). Skipped 35 remaining candidate(s)
Summary: 0 reviews posted, 0 no-ops skipped, 1 failures (processed 1/36 candidates) [SESSION ABORTED EARLY]
Root cause
The audit/confirmation model (claude-opus-4-7) did not return structured JSON — likely due to a verbose non-JSON response, a refusal, or a timeout/context-limit issue. The scripts/review-batch.sh script treats any per-PR failure as fatal and exits, aborting all remaining candidates.
Acceptance Criteria
Problem
During the scheduled review run (run #25707852006), the
single-reviewstep invokedclaude-opus-4-7to confirm an approval for PR #129. The model ran for ~74 seconds and returned a non-JSON response, causing the entire batch session to abort — skipping all 35 remaining PR candidates.Failure trace
Root cause
The audit/confirmation model (
claude-opus-4-7) did not return structured JSON — likely due to a verbose non-JSON response, a refusal, or a timeout/context-limit issue. Thescripts/review-batch.shscript treats any per-PR failure as fatal and exits, aborting all remaining candidates.Acceptance Criteria
single-review(or any review engine call) returns non-JSON output, the error is caught, logged with the raw output, and treated as a per-PR failure — not a fatal crash.single-reviewstep retries at least once (with a short delay) before marking the PR as failed, to handle transient model errors.SESSION ABORTED EARLYwhen only individual PRs fail.