Skip to content

PR Review Agent — failures detected 2026-07-19 #1320

Closed

Description

@github-actions

1. Executive Summary

Status: HEALTHY
Period: 2026-07-18T20:33:05Z → 2026-07-19T08:13:38Z (~12 hours)
Result: 2 of 60 active runs failed (3.3%) — 40 additional runs correctly skipped by idempotency guards, 7 cancelled by concurrency group

Key findings:

  • Both failures (#57189, #57190) fired at the identical timestamp (02:49:39Z), indicating a single trigger event caused two concurrent runs to fail simultaneously
  • Recovery was immediate: #57192 succeeded 30 seconds later (02:50:09Z), ruling out a persistent infrastructure issue
  • No error log content was returned for the failed runs — root cause cannot be confirmed from logs alone; the pattern is consistent with a transient API or rate-limit spike
  • Cancellations cluster in two bursts (20:34–20:35Z × 4 runs, 00:48:34Z × 2 runs) — normal concurrency-group churn from rapid push sequences, not failures
  • Skipped run #57191 at 02:49:40Z (one second after the two failures) is the expected idempotency short-circuit

Action required: Retrieve and inspect the step-level logs for runs #57189 and #57190 to confirm the transient root cause before the next release promotion to pr-review/stable.


2. Failure Breakdown

Failure Category Affected Runs Example Error Message
Transient / unknown (logs unavailable) #57189, #57190 (Step logs not captured in this report — see §3)
Concurrency cancellation (expected) #57179, #57178, #57158, #57116, #57115, #57114, #57110 N/A — cancelled by newer run in same concurrency group
Idempotency skip (expected) #57191 and ~39 others N/A — PR already reviewed at head SHA or not eligible

3. Error Patterns

No error log content was provided for the two failed runs. The "Failed Run Logs" section in the input was empty. The following analysis is therefore pattern-based only:

Observed pattern — simultaneous dual failure at 02:49:39Z

  • Both #57189 and #57190 failed at the exact same second, which corresponds to a multi-event trigger (the workflow fires on check_suite, pull_request, and pull_request_review — a single PR action, such as a force-push, can fire several of these at once).
  • The most common causes for coincident failures of this type in pr-review/next ring-0 runs are:
    • Transient GitHub API 5xx during gh pr view or gh pr list enumeration in engine.sh
    • Claude/Copilot engine rate-limit burst (HTTP 429) when two reviews attempt the same model call simultaneously
    • A pr-review/next tag pointing to a bad commit between the previous successful run (#57188 at 02:43:54Z) and these failures
  • Recovery to success in 30 seconds (#57192 at 02:50:09Z) is most consistent with a transient API/rate-limit spike, not a code defect.

Action: Run gh run view 57189 --log-failed and gh run view 57190 --log-failed to retrieve the actual step-level error output.


4. Token Scope Analysis

Scopes confirmed present (from workflow permissions: block):

Scope Level Source
contents: read job pr-review-trigger.yml L55
pull-requests: write job pr-review-trigger.yml L56
checks: read job pr-review-trigger.yml L57
secrets: inherit job passed to reusable

Scopes that cannot be confirmed missing (no gh auth status output in logs):

  • No auth errors are evident from the run summary alone. Given that 51 runs succeeded in the same window with the same permissions, auth/scope is unlikely to be the failure cause.

Recommendation:

  • No scope changes indicated at this time. If log retrieval (§3 action) reveals a 403 or "Resource not accessible by integration" error, add the missing scope to the permissions: block in pr-review-trigger.yml and the corresponding block in pr-review.yml.

5. Recommendations

  1. [HIGH] Retrieve failed run logs before promoting pr-review/next to pr-review/stable.

    • What: gh run view 57189 --log-failed and gh run view 57190 --log-failed in petry-projects/.github-private
    • Why: The ring-0 canary purpose is to catch regressions before fleet promotion. An unexplained dual failure — even transient — should be understood before scripts/cut-release.sh advances the stable tag.
    • Expected impact: Confirms or rules out a code defect in pr-review/next; if transient, no action needed; if a bug, prevents fleet regression.
    • Urgency: HIGH
  2. [MEDIUM] Confirm concurrency group is configured in pr-review.yml (the called reusable).

    • What: Verify that pr-review.yml@pr-review/next sets concurrency: group: pr-review-${{ github.event.pull_request.number || github.event.check_suite.id }} with cancel-in-progress: true.
    • Why: The cancellation bursts (4 runs at 20:34–20:35Z, 2 runs at 00:48:34Z) are healthy if concurrency groups are intentional, but noisy if they are not. Confirming the config documents expected behavior.
    • Expected impact: No functional change if already present; reduces confusion in future health reports.
    • Urgency: MEDIUM
  3. [LOW] Add step-level log upload for failed runs as a workflow artifact.

    • What: In pr-review.yml, add an if: failure() step that uses actions/upload-artifact to capture engine.sh and review-one-pr.sh output.
    • Why: The empty "Failed Run Logs" section in this report is a direct consequence of logs not being surfaced. Future health checks would have concrete error messages rather than pattern inference.
    • Expected impact: Eliminates the ambiguity in §3 for all future failure events.
    • Urgency: LOW

6. Health Score

Health: 8.5/10 — Two simultaneous transient failures in a 12-hour window, self-recovered within 30 seconds; root cause unconfirmed due to missing logs but no systemic issue evident.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    automated-reportCreated by automated workflowhealth-checkAutomated health check report

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions