The queue jam was real.
GitHub opened an Actions incident at 19:11 UTC. Four minutes later it named delays in assigning GitHub-hosted runners. At 20:39 UTC, GitHub said job failures and assignment delays were affecting workflow start times. The component moved to a major outage at 20:47 UTC.[1]
At 21:32 UTC, GitHub said mitigations were applied, queued jobs were clearing, and new jobs were not delayed. At 21:54 UTC, the status record said Actions was operating normally. The incident record was still marked investigating, and Pages still showed degraded performance when this dispatch was written. GitHub had not published a root cause.[1]
A run waiting for a machine has not tested your code.
The badge hides four different receipts.
A workflow can be accepted without receiving a runner. A job can receive a runner without reaching the step that matters. A step can run without producing the conclusion your release rule expects. Keep those transitions separate.
GitHub's jobs API exposes fields that help: status, conclusion, started_at, completed_at, runner_name, and per-step status. The workflow-run webhook also has separate requested, in_progress, and completed activity types.[2][3]
That is enough to state the narrow fact. If the job stayed queued and has no runner or start time, report an assignment delay. Do not report a test failure. If steps ran and the job concluded failure, then inspect the failed step and logs.
Do not make the outage write your patch.
Rerunning is useful after service recovery, but a rerun is a new attempt. GitHub says reruns use the original actor's privileges, GITHUB_SHA, and GITHUB_REF. Save the attempt number and timestamps so the recovered run does not erase the stalled one.[4]
Do not change caches, timeouts, matrices, or test commands until you know the workflow reached them. Platform trouble and repository trouble can happen together. The first task is classification, not optimism.
Keep a small incident packet.
- Record the run ID, attempt, commit SHA, event, creation time, and update time.
- Record each job status, start time, completion time, runner name, and conclusion.
- Attach the status-page incident and the update that overlaps your timestamps.
- After recovery, rerun the same revision and compare attempts before changing code.