Repository navigation
PR Review Agent — failures detected 2026-07-23 #1361
Description
1. Executive Summary
Status: HEALTHY
Period: 2026-07-22T23:44:20Z – 2026-07-23T07:40:10Z (~8 hours)
Result: 1 of 100 runs failed (1.0%) — 57 succeeded, 19 cancelled, 23 skipped
Key findings:
- Single failure (#58056) has no recoverable log output; root cause is unconfirmed
- 19 cancellations are concurrency-driven auto-cancels from rapid push bursts (03:06–03:51 UTC cluster), not errors
- 23 skips are expected conditional exits (trigger fired but job
if:conditions not met — normal for check_suite / pull_request_review events on non-PR commits)
Action required: Retrieve and inspect logs for run #58056 to rule out a transient vs. recurring fault before closing.
2. Failure Breakdown
| Failure Category | Affected Runs | Example Error Message |
|---|---|---|
| Unknown / logs unavailable | 1 (#58056) | (no log output captured in report) |
| Concurrency auto-cancel (not a fault) | 19 | (workflow cancelled by newer run in same concurrency group) |
| Conditional skip (not a fault) | 23 | (job skipped — trigger event did not meet job conditions) |
3. Error Patterns
Run #58056 — failure @ 2026-07-23T00:57:42Z
No log content was included in the report for this run. The run is immediately adjacent to a cancelled run (#58057, same second) and a skipped run (#58058, 1 s later), which suggests it fired during the same push burst at ~00:57 UTC. Possible causes in order of likelihood:
- Transient GitHub infrastructure error — the run started and was interrupted before the called workflow (
pr-review.yml@pr-review/next) could initialise; no repeating pattern in surrounding runs supports a code-level fault. - Reusable workflow ref not found — if
pr-review/nexttag was absent or mid-move at that instant, theuses:line would fail immediately withCould not find uses reference. - Secret resolution failure —
secrets: inheritpropagation occasionally fails transiently if the secret backend is temporarily unavailable.
To confirm: run gh run view 58056 --log against petry-projects/.github-private.
Cancellation cluster (03:06–03:51 UTC)
18 of 19 cancellations occur in a tight burst. This is the expected behaviour of GitHub's built-in concurrency cancellation when many pull_request: synchronize or check_suite: completed events fire in rapid succession (e.g., a force-push or a stack of dependent PRs landing). No action needed unless the cancellations are causing reviews to be silently skipped on the final commit — the last run in each burst shows success, confirming the terminal run does complete.
4. Token Scope Analysis
Scopes granted in workflow source (permissions: block):
| Permission | Level | Purpose |
|---|---|---|
contents: read |
Read | Checkout, read repo files |
pull-requests: write |
Write | Post review comments, approve/request-changes |
checks: read |
Read | React to check_suite events, read check status |
Scopes absent / not assessed (no gh auth status output in logs):
| Scope | Why it may be needed | Recommendation |
|---|---|---|
statuses: read |
Some review engines read commit statuses (not checks) to detect CI pass/fail | Add if the engine script calls gh api /repos/.../statuses |
issues: read |
Needed if the agent resolves linked issues for context | Add if engine uses issue cross-references |
metadata: read |
Implicitly granted to all GitHub Apps / Actions tokens; not explicitly listed | No action needed |
No scope-related errors are present in available logs. The permissions block mirrors the documented requirements in pr-review.yml, so no changes are indicated at this time.
5. Recommendations
-
Retrieve and inspect failed-run logs for #58056
- Command:
gh run view 58056 --log --repo petry-projects/.github-private - Why: The single failure is unclassified; without log content it cannot be confirmed as transient. If the error is a reusable-ref resolution failure it would indicate a gap in the
pr-review/nexttag-move procedure. - Expected impact: Identifies whether a fix is needed or the failure can be closed as a one-off.
- Urgency: MEDIUM — failure rate is 1%; no evidence of recurrence.
- Command:
-
Verify
pr-review/nexttag integrity after everycut-release.shrun- File:
scripts/cut-release.sh - Why: The failure occurred at the same timestamp as a cancel/skip burst, which can coincide with a tag move. A lightweight post-move check (
gh api /repos/petry-projects/.github-private/git/ref/tags/pr-review/next) would catch a missing or mis-pointed tag before the next real PR triggers it. - Expected impact: Eliminates ref-not-found failures during release cuts.
- Urgency: LOW — no confirmed occurrence, purely preventive.
- File:
-
Consider adding a
concurrency:group topr-review-trigger.ymlwithcancel-in-progress: true(if not already inpr-review.yml)- Why: The cancellation burst confirms rapid-fire triggering. Making the cancellation policy explicit in the stub (scoped to
pr-${{ github.event.pull_request.number }}) prevents silent coverage gaps where neither the cancelled nor the successor run reviews a given commit. - Expected impact: Reduces noise cancellations and guarantees exactly one review per head SHA.
- Urgency: LOW — current behaviour appears to converge correctly (last run in each burst succeeds).
- Why: The cancellation burst confirms rapid-fire triggering. Making the cancellation policy explicit in the stub (scoped to
6. Health Score
Health: 9/10 — one undiagnosed isolated failure in an otherwise clean 8-hour window; no recurring errors, cancellations and skips are structurally expected.
Activity