What's wrong
claude-code-review.yml intermittently fails with no review comment posted at all -- not a stub (gha#185), not a hallucinated verdict (gha#295), not a quota skip. Both the initial attempt and the built-in stub-retry short-circuit, and require-review then fails on result: failure with nothing on the thread to explain it.
The tell in the job log is that both Run Claude Code Review composite invocations complete in ~20 ms with Install Bun reporting skipped:
##[start-action display=Run Claude Code Review;id=__c3a340dc-....run]
##[start-action display=Install Bun;id=__c3a340dc-....run.setup-bun]
##[end-action id=...setup-bun;outcome=skipped;conclusion=skipped;duration_ms=0]
##[end-action id=__c3a340dc-....run;outcome=success;conclusion=success;duration_ms=17]
The "Resolve final review outcome" step then reports the generic branch: "Claude review did not complete successfully and was not eligible for a stub-review retry."
Why it matters
The two documented no-verdict modes both have handling: a stub triggers the gha#185 same-prompt retry, and a quota skip is detected and reported. This one defeats both -- the retry runs and short-circuits identically -- so an ARDI loop gets a red required check with no findings to address and no signal distinguishing "the reviewer broke" from "the PR is bad".
Frequency, and the workaround that reliably clears it
Observed four times on one PR (#361) today, interleaved with runs that produced full, high-quality reviews:
| head |
outcome |
0e94400 |
crash, no verdict ($0.0000, 16 s) |
30e2932 |
genuine review, 6 findings |
ba76708 |
crash, no verdict -> manual rerun_failed_jobs produced a genuine review ($2.99) |
c79bb12 |
crash, no verdict |
The important datum is row 3: a separately-triggered re-run of the identical commit produced a complete review. So the failure is not deterministic in the diff, the head, or the prompt -- it is per-invocation, and re-running is a real (if manual and costly) workaround.
Suggested direction
Two things seem worth separating:
- Diagnosis. The resolve-outcome step currently cannot distinguish this from the other generic failures it reports. The near-instant
setup-bun: skipped on both attempts suggests the action exits before doing any work; capturing and surfacing why (the action's own early-exit reason, or the absence of an execution file vs. an empty one) would turn this from "review broke somehow" into something actionable.
- Recovery. Since an independent re-invocation demonstrably clears it, the existing gha#185 retry may simply need to cover this signature too -- but note the retry already runs here and short-circuits the same way, so a same-run retry may share whatever state causes it. A genuinely fresh invocation may be required, which is a different fix from the current retry.
Repro
PR #361. Crashing runs: 30490409834 (before re-run), 30491512349. The successful manual re-run of the first is in that same run's later attempt, which posted this review.
Filed from a session driving #361, where this cost several rounds of babysitting and two manual re-runs.
What's wrong
claude-code-review.ymlintermittently fails with no review comment posted at all -- not a stub (gha#185), not a hallucinated verdict (gha#295), not a quota skip. Both the initial attempt and the built-in stub-retry short-circuit, andrequire-reviewthen fails onresult: failurewith nothing on the thread to explain it.The tell in the job log is that both
Run Claude Code Reviewcomposite invocations complete in ~20 ms withInstall Bunreportingskipped:The "Resolve final review outcome" step then reports the generic branch: "Claude review did not complete successfully and was not eligible for a stub-review retry."
Why it matters
The two documented no-verdict modes both have handling: a stub triggers the gha#185 same-prompt retry, and a quota skip is detected and reported. This one defeats both -- the retry runs and short-circuits identically -- so an ARDI loop gets a red required check with no findings to address and no signal distinguishing "the reviewer broke" from "the PR is bad".
Frequency, and the workaround that reliably clears it
Observed four times on one PR (#361) today, interleaved with runs that produced full, high-quality reviews:
0e94400$0.0000, 16 s)30e2932ba76708rerun_failed_jobsproduced a genuine review ($2.99)c79bb12The important datum is row 3: a separately-triggered re-run of the identical commit produced a complete review. So the failure is not deterministic in the diff, the head, or the prompt -- it is per-invocation, and re-running is a real (if manual and costly) workaround.
Suggested direction
Two things seem worth separating:
setup-bun: skippedon both attempts suggests the action exits before doing any work; capturing and surfacing why (the action's own early-exit reason, or the absence of an execution file vs. an empty one) would turn this from "review broke somehow" into something actionable.Repro
PR #361. Crashing runs: 30490409834 (before re-run), 30491512349. The successful manual re-run of the first is in that same run's later attempt, which posted this review.
Filed from a session driving #361, where this cost several rounds of babysitting and two manual re-runs.