Fix the resolve_pull_request_review_thread safe-output handler in PR Sous Chef — it fails the whole Process Safe Outputs job on every scheduled run.
PR Sous Chef's agent succeeds, but the safe_outputs job then aborts because its review-thread resolution requests fail. This recurred twice in the 6h window (~50 min apart), so it is a persistent pattern, not a transient blip.
Problem statement
The Process Safe Outputs step fails with:
##[error]Failed to resolve review thread: Request failed due to following response errors:
##[error]✗ Message 5 (resolve_pull_request_review_thread) failed: Request failed due to following response errors:
##[error]✗ Message 6 (resolve_pull_request_review_thread) failed: Request failed due to following response errors:
##[error]2 safe output(s) failed:
The agent job concludes success (12 turns, 54.7k tokens); the failure is isolated to safe-output processing. audit-diff vs the nearest successful baseline shows no firewall or tooling regression — the baseline "success" was a 0-turn no-op, while these runs did real work and failed only at the GraphQL resolve step.
Affected workflows and run IDs
| Workflow |
Run |
Result |
| PR Sous Chef |
30022071713 |
representative — Msgs 5 & 6 failed |
| PR Sous Chef |
30018005233 |
second occurrence, same signature |
| PR Sous Chef |
30014223483 |
baseline success (no-op, 0 turns) |
Probable root cause
The safe-output handler issues resolveReviewThread GraphQL mutations against thread IDs that the API rejects — most likely already-resolved threads, stale/invalid thread IDs, or threads on a PR whose state no longer accepts resolution. The handler treats any non-2xx GraphQL response as a hard error and fails the job instead of tolerating an already-resolved / non-resolvable thread.
Proposed remediation
- Make
resolve_pull_request_review_thread idempotent: treat "thread already resolved" / "thread not found" GraphQL responses as success (no-op), not job failure.
- Log the raw GraphQL error body per failed message so the actual API error (currently truncated as "following response errors") is captured for diagnosis.
- Consider not failing the aggregate
Process Safe Outputs job when only optional review-thread resolutions fail — downgrade to a warning while still surfacing counts.
Success criteria / verification
- PR Sous Chef scheduled runs complete with
safe_outputs job success when the only issue is an already-resolved/stale review thread.
- The full GraphQL error body is present in logs for any genuinely failed resolution.
- No recurrence of the
2 safe output(s) failed signature across a subsequent 24h window.
Parent: #47525. Analyzed runs: 30022071713, 30018005233, 30014223483.
Related to #47525
Generated by 🔍 [aw] Failure Investigator (6h) · age00 · 131.7 AIC · ⌖ 33.1 AIC · ⊞ 5.2K · ◷
Fix the
resolve_pull_request_review_threadsafe-output handler in PR Sous Chef — it fails the wholeProcess Safe Outputsjob on every scheduled run.PR Sous Chef's agent succeeds, but the
safe_outputsjob then aborts because its review-thread resolution requests fail. This recurred twice in the 6h window (~50 min apart), so it is a persistent pattern, not a transient blip.Problem statement
The
Process Safe Outputsstep fails with:The agent job concludes
success(12 turns, 54.7k tokens); the failure is isolated to safe-output processing.audit-diffvs the nearest successful baseline shows no firewall or tooling regression — the baseline "success" was a 0-turn no-op, while these runs did real work and failed only at the GraphQL resolve step.Affected workflows and run IDs
Probable root cause
The safe-output handler issues
resolveReviewThreadGraphQL mutations against thread IDs that the API rejects — most likely already-resolved threads, stale/invalid thread IDs, or threads on a PR whose state no longer accepts resolution. The handler treats any non-2xx GraphQL response as a hard error and fails the job instead of tolerating an already-resolved / non-resolvable thread.Proposed remediation
resolve_pull_request_review_threadidempotent: treat "thread already resolved" / "thread not found" GraphQL responses as success (no-op), not job failure.Process Safe Outputsjob when only optional review-thread resolutions fail — downgrade to a warning while still surfacing counts.Success criteria / verification
safe_outputsjobsuccesswhen the only issue is an already-resolved/stale review thread.2 safe output(s) failedsignature across a subsequent 24h window.Parent: #47525. Analyzed runs: 30022071713, 30018005233, 30014223483.
Related to #47525