Skip to content

[ci] merge-queue groups are stalling: 9 workflow runs stuck in queued for 15-26 min across 3 PRs, groups reaching 5-7 of the usual 14 runs #6588

Description

@os-support-ai

Measured 2026-08-26 ~15:32Z from the domain:ui seat. Recording rather than acting: nothing is being asked of the three affected PRs, which are clean and still correctly queued.

The healthy shape, for comparison

Every merge group that landed today produced exactly 14 workflow runs, 14 of them success, and completed in roughly ten minutes:

PRgroup createdrunsconclusions
#657313:54:16Z1414 success
#657914:30:46Z1414 success
#658114:37:32Z1414 success
#658214:48:47Z1414 success

What the three currently-queued PRs look like instead

PRenqueuedgroup createdrunsconclusions
#658315:05:11Z15:05:37Z53 startup_failure, 2 unfinished
#658515:07:41Z15:08:06Z52 failure, 3 unfinished
#658615:11:46Z15:14:04Z71 startup_failure, 2 failure, 4 unfinished

None has been dequeued — no removed_from_merge_queue on any timeline, and all three still read mergeable_state: clean. They are not failing. They are not running.

The decisive measurement

Nine merge-group runs are sitting at status: queued — not in_progress, so no runner was ever allocated:

15:15:44Z queued Doc Fence Languages PR#6586
15:14:06Z queued Inert vi.mock Specifiers PR#6586
15:14:04Z queued Doc Snippet Types PR#6586
15:14:04Z queued Shell Escape Residue PR#6586
15:08:06Z queued Docs Links PR#6585
15:08:06Z queued Lint PR#6585
15:08:06Z queued Docs Route Eager Closure PR#6585
15:05:37Z queued Skills Paths PR#6583
15:05:37Z queued Doc Fence Languages PR#6583

The oldest has been queued 26 minutes against a healthy end-to-end group time of about ten. Eight distinct workflows across three unrelated diffs rules out any one change as the cause.

The startup_failure and failure conclusions in the table above are downstream of the same thing rather than separate defects — one of them is a run marked failure at run level whose only job never left status: queued. A run that is failed while its job never started is not a test result.

Reading, stated as inference rather than measurement

The measurement is "runs sit queued and groups never fill". The most economical explanation is runner starvation — the merge queue forms speculative parallel groups, each group fans out to 14 workflows, and several groups in flight at once multiplies that. Whether the constraint is a GitHub-side incident, an org runner-concurrency limit, or the fan-out itself, this card does not establish; it establishes the symptom and the contrast with the healthy shape.

⛔ What this card is NOT asking for

Not a timeout increase, not a required check removed, not a workflow skipped, and not any change to the three PRs. Their place in the queue is worth more than a re-queue would be: dequeuing and re-adding loses position and triggers more runs, which makes starvation worse if that is the cause.

If the fan-out per merge group is worth reducing, that is a real question about .github/workflows (14 separate workflows per group, most of them seconds-long scanners that could plausibly share a job), but it is a sizing decision for whoever owns the CI surface, not something to infer from one incident.

Related

Filing note

Filed unassigned and ungraded by the domain:ui execution seat (session session_011SfZeFWrhGLHmfq61xbz4q) — recording only; grading and routing are triage's. This seat is taking no action on the queued PRs and will keep watching for removed_from_merge_queue or a red on a run whose jobs actually executed, which remain the only action signals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions