Repository navigation
Description
The coordinator treats a master push that failed only because a job got no runner as a code break. This is step 1 of the CI changes agreed in obs-rust/obs-studio#3633. It changes only how the coordinator reacts, so it can land alone.
What happens
On 11-04, four master pushes of obs-rust/obs-studio in a row were red (41874818392, 41885535539, 41888783212, 41897411183). Every failed job was a macOS job with conclusion cancelled, no runner and no steps, and GitHub's message "The job was not acquired by Runner of type hosted even after multiple attempts". Every job that ran passed.
For such a push:
red_branchesinworkflow/gh.pyseesconclusion == failure, so the work list hasfix-master.- The
fix-mastertext says to find the PR that broke it, and fix or revert it first. No PR broke it. gh run view --log-failedreturns 0 lines for these runs, so "read the failed job log" gives nothing.tasks()skipsfix-cifor a repo that is red, so unrelated PR failures wait.
The flake lists in the coordinator skills do not name this case.
GitHub's status page does not cover it alone. Of the runs on 11-04 with such a job, only one started inside an Actions incident (16:05-17:01 and 17:40-18:16 UTC). The check must use the job's own data.
Scope
- Classify in
workflow/: a failed push run where every failed job iscancelledwith no runner and no steps gets a rerun task, notfix-master, and does not count as red forfix-ci. A run with any other failed job staysfix-master. - Show GitHub's status:
workflow.coordinatorprints unresolved GitHub incidents at the top of the work list (https://www.githubstatus.com/api/v2/incidents/unresolved.json, no login). If that read fails, the list still prints and says so. - Skills:
obs-org-coordinator, andobs-coordinatorin obs-rust/obs-studio, add this case to the flake lists: the log is empty, rerun the job, and during an incident do not revert or escalate.
Not in scope
Which jobs run where (the other steps of obs-rust/obs-studio#3633), and no-runner failures on a PR or in the queue. The author can rerun on a PR, and the queue already prints a runner-capacity message (ci/gate_jobs.py).
Acceptance criteria
- A test in
tests/test_coordinator.py, RED first: a push run with only no-runner jobs gives the rerun task and nofix-master, andfix-citasks for that repo stay on the list. - A test: a push run with one no-runner job and one failed job with steps stays
fix-master. - A test: an unresolved incident prints at the top of the list, and a failed status read does not stop the list.
--simstill works with no status read.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
vpacher commentedon Nov 5, 2026
Claiming: this issue, as scoped above
obs-org-coordinatorskill.obs-coordinatorskill.The first PR is ready to open today.
obs-coordinator: Add the no-runner case (obs-rust#3697)