Skip to content

[aw] PR Code Quality Reviewer + Test Quality Sentinel — 100% AR (CLI hang-on-exit) #44298

Description

@github-actions

PR Code Quality Reviewer and Test Quality Sentinel — 100% AR cluster (Jul 8)

Both review workflows are failing with 100% action_required in the current window. Based on the identical pattern in Impeccable Skills Reviewer (issue #44243), the root cause is the Copilot CLI hang-on-exit after completing a review.

Evidence

Impact

  • All 4 PR-review agents (Impeccable, PR Code Quality Reviewer, Test Quality Sentinel, Matt Pocock) are producing 0 useful review signals for open PRs
  • False-negative AR results obscure whether actual review work completed

Recommended Fix

  1. Merge PR fix: reduce post-completion idle watchdog and add cleanup timeouts to prevent Copilot CLI hang on exit #44254 — reduces idle watchdog timeout and adds cleanup timeouts to prevent hang
  2. After fix: reduce post-completion idle watchdog and add cleanup timeouts to prevent Copilot CLI hang on exit #44254 merges, validate that all 4 review workflows produce success conclusions
  3. If Matt Pocock Skills Reviewer still fails after fix: reduce post-completion idle watchdog and add cleanup timeouts to prevent Copilot CLI hang on exit #44254, evaluate prompt redesign or deprecation

Do not re-file

This issue covers both PR Code Quality Reviewer and Test Quality Sentinel. Track resolution via PR #44254.

Related: #44243, #44234


Fresh evidence (2026-07-10) — still red after the previous sweep

The post-result idle-watchdog SIGTERM recurred on PR Triage Agent §29094180267: agent completed tool calls, then post-result watchdog terminating idle process after 20548ms (SIGTERM)failureClass=partial_execution, hasOutput=true, all 3 retries exhausted. audit-diff vs the nearest successful run §29076495188 shows no firewall/domain regression (0 anomalies) and the failed run consumed only 9 core API calls vs 246 — the agent was killed mid-work, not blocked by environment drift. This confirms the watchdog class persists into 2026-07-10 and PR #44254 remains insufficient; keep this issue OPEN.

Generated by ⚡ Agent Performance Analyzer - Meta-Orchestrator · 99.4 AIC · ⌖ 13 AIC · ⊞ 10.6K ·

  • expires on Jul 10, 2026, 5:24 AM UTC-08:00


🔴 Fresh evidence (2026-07-09, 6h failure sweep): merged fix #44254 did NOT resolve this — reopen the fix

Action: the post-result watchdog still SIGTERMs completed Copilot runs — raise/gate it on hasOutput, or treat partial_execution with output as success. PR #44254 merged 2026-07-08T14:05:28Z, but the identical hang-on-exit signature is still killing runs 15+ hours later.

Confirmed watchdog signature (run §29001405167, PR Triage Agent — all 4 attempts identical)

[copilot-harness] attempt N: post-result watchdog armed inactivityTimeout=20000ms
[copilot-harness] attempt N: post-result watchdog terminating idle process after ~20s (SIGTERM)
[copilot-harness] attempt N failed: exitCode=1 failureClass=partial_execution hasOutput=true
[copilot-harness] all 3 retries exhausted — giving up (exitCode=1)  totalDuration=10m 36s

The agent completes its work (hasOutput=true, 184 allowed api.githubcopilot.com calls, non-empty stderr) and is then killed by the 20s post-result inactivity watchdog → exitCode=1. Every completed run is marked failed. stdout=0B on every attempt.

Still-red Copilot workflows in the last 6h (same Execute GitHub Copilot CLI step failure)

Workflow Run
PR Triage Agent §29001405167 (watchdog confirmed)
PR Code Quality Reviewer §28997020433
Daily Sub-Agent Model Resolution Audit §28999198666

Recommended follow-up fix (supersedes "track via #44254")

  1. When hasOutput=true and failureClass=partial_execution, do not re-run — treat as success (the result was already produced).
  2. Raise the inactivityTimeout well above the 20000ms that PR fix: reduce post-completion idle watchdog and add cleanup timeouts to prevent Copilot CLI hang on exit #44254 left in place, or disarm the post-result watchdog once the final result JSON is captured.
  3. Add a regression test asserting a Copilot run that emits output then idles exits 0, not SIGTERM→1.

Keep this issue OPEN. The premise "resolves once #44254 merges" is invalidated by fresh 2026-07-09 evidence.

Sweep: §29003066156

Generated by 🔍 [aw] Failure Investigator (6h) · 224.6 AIC · ⌖ 35.7 AIC · ⊞ 5.2K ·

Generated by 🔍 [aw] Failure Investigator (6h) · 205.7 AIC · ⌖ 17.7 AIC · ⊞ 5.2K ·



🔴 Fresh evidence (2026-07-12, 6h failure sweep): watchdog hang-on-exit now hitting scheduled daily cron workflows

Ship the already-specified fix now — gate the 20s post-result watchdog on hasOutput (or treat partial_execution + hasOutput=true as success). The bug has spread from PR-triggered reviewers to scheduled daily-report workflows. This is the dominant failure class in the last 6h: 4 of 6 hard-failing runs share the identical signature already documented above.

Confirmed watchdog signature — 4 runs, 2026-07-12
Workflow Run Signature
PR Triage Agent §29203936538 watchdog SIGTERM after 20319ms, partial_execution, hasOutput=true, all 3 retries exhausted
Daily Formal Spec Verifier §29198701813 watchdog SIGTERM after 20859ms, partial_execution, hasOutput=true
Daily Security Observability Report §29199584830 watchdog SIGTERM after 20882ms, all 3 retries exhausted, totalDuration 13m 15s
Daily Issues Report Generator §29196809707 same failing Execute GitHub Copilot CLI step; identical cleanup-only log tail
[copilot-harness] attempt N: post-result watchdog armed inactivityTimeout=20000ms
[copilot-harness] attempt N: post-result watchdog terminating idle process after ~20s (SIGTERM)
[copilot-harness] attempt N failed: exitCode=1 failureClass=partial_execution hasOutput=true isCAPIError400=false isAuthError=false isModelNotSupportedError=false isMCPPolicyError=false
[copilot-harness] all 3 retries exhausted — giving up (exitCode=1)

Each agent completes its tool calls (non-empty stderr, hasOutput=true, stdout=0B) and is then killed by the 20000ms post-result inactivity watchdog — not CAPI/auth/model/MCP errors. Consistent with this issue's prior audit-diff finding (no firewall/domain regression; agent killed mid-work, not blocked by environment drift). The 20000ms timeout PR #44254 left in place is still firing.

What changed since the 2026-07-10 update: the failure is no longer confined to PR-review/triage agents — it now also fails scheduled daily cron workflows (Formal Spec Verifier, Security Observability, Issues Report), widening blast radius to the daily automation surface.

Do not re-file — this remains the single tracker for the Copilot post-result watchdog hang-on-exit class. Smoke CI's separate EACCES chroot hosts failure this window is tracked in #44827.

References: §29203936538 · §29198701813 · §29199584830

Generated by 🔍 [aw] Failure Investigator (6h) · 228.9 AIC · ⌖ 34.3 AIC · ⊞ 5.2K ·



Fresh evidence (2026-07-13) — watchdog SIGTERM recurred on PR Triage Agent

The post-result idle-watchdog kill persists into 2026-07-13 — PR #44254 remains insufficient. Keep this issue OPEN.

  • Run: §29275650494 (PR Triage Agent, 2026-07-13 18:54–18:56 UTC)
  • Signature: agent completed a batch of bash/gh api tool calls, then [copilot-harness] attempt 4: post-result watchdog terminating idle process after 20929ms (SIGTERM)failureClass=partial_execution, hasOutput=true, retriesRemaining=0all 3 retries exhausted — giving up (exitCode=1).
  • Class match: identical to the 2026-07-10 recurrence already documented here (§29094180267, 20548ms). The agent was killed mid-work after producing output, not blocked by environment drift.
  • Secondary noise: post-teardown [WARN] Rootless artifact permission repair failed for /tmp/gh-aw/sandbox/firewall/{logs,audit} — cosmetic, does not change the exit code.

Recommended next step: the fixed idle-watchdog threshold is still killing agents that legitimately pause between tool batches. Either raise the post-result idle threshold (currently ~20s) or reset the watchdog timer on each tool.execution_start/tool.execution_complete event so an actively-iterating agent is never treated as idle. Success criterion: PR Triage Agent produces success on a run with ≥1 post-completion tool batch.

Generated by [aw] Failure Investigator (6h) · analyzed run §29277430211

Generated by 🔍 [aw] Failure Investigator (6h) · 138.9 AIC · ⌖ 38.8 AIC · ⊞ 6.2K ·

Metadata

Metadata

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions