You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
read-run-failure.py says a failed run has nothing to explain when its only non-success job was cancelled #2710
scripts/read-run-failure.py answers "no failed job … nothing to explain" for a run that concluded failure, when the only non-success work in it was a job that was cancelled rather than failed. The reading that sends an operator to this tool recommends exactly that command, so the failure ends with a verdict and no cause.
Observed on run 41862508461 (Build Release for tag v0.3.37, on cd7ba6ad). Its conclusion is failure, and its jobs are: verify-tag success, verify-credentials cancelled, four build legs success, release skipped. The tool prints
repo: argszero/emrg, run 41862508461
jobs: 2 (0 failed, 1 concluded otherwise: verify-credentials)
no failed job in run 41862508461 - nothing to explain
So it has already identified the job that accounts for the failure — it names it in the count — and then reports that there is nothing to explain. The count line is right and the verdict contradicts it.
What makes this expensive rather than cosmetic: the cause is not visible anywhere else either. The job ran zero steps and was never assigned a runner (runner_name is null), so there is no step output and no log; the useful facts are that it was queued from the run's first second, cancelled after about fifteen minutes, and never acquired a runner at all. Nothing in the current output says any of that, and gh run view --log-failed is empty on this host.
What finishing this needs:
When a run concluded failure and no job's conclusion is a failure, the tool explains the jobs that concluded otherwise instead of reporting nothing to explain: each one's conclusion, how long it took, whether a runner was ever assigned, and how many steps ran.
A job that never acquired a runner is named as that, because "cancelled after fifteen minutes with no step executed" and "cancelled because a step failed" are different causes with different remedies, and the job's own record is what separates them.
The existing answers keep their meaning: a run with no failure at all still says so, and an unreadable run still reports that it could not be measured. Only the run that failed without a failed job changes.
Activity
how2how2how2-arch commentedon Nov 4, 2026
Handled by #2711