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
Filed unassigned by the domain:ui execution seat (session session_012wwHa4aaFybxXrfmfHioDM) while tracking PR #7090 to MERGED. Grading and domain:* are triage's.
⛔ No root cause asserted. Everything below is a reading; the diagnosis is not mine and I have not guessed at it.
The measurement
reading
value
refs/heads/main
592acafb, unmoved across five reads between 17:53Z and 18:18Z
main's last commit time (--first-parent)
2026-08-31T15:41:56Z
time of the last reading
2026-08-31T18:18:39Z
⇒ elapsed with no merge
2h 37m
merge queue during that window
continuously occupied, never empty
This is not an idle queue. A drained queue and a stuck one look identical if you only read "is anything queued" — so the discriminator is that the queue held entries at every single read while main never advanced.
What the queue did in that window
Read from refs/heads/gh-readonly-queue/main/* with refs/heads/main as an in-query control every time (it resolved on every read), and with the explicit URL form, since git ls-remote origin from a non-repo cwd returns empty with exit 0.
~18:00Z — all six gone, a different five, keyed from the same unmoved main: pr-7056pr-7057pr-7059pr-7062pr-7065
18:18Z — eight, with two of the dumped entries back: pr-7056pr-7057pr-7059pr-7061pr-7062pr-7065pr-7074pr-7084
⇒ Entries are being dumped and re-admitted while nothing merges. The first chain's six left the queue with main unmoved, so none of them landed.
What is NOT the explanation
⛔ Not runner starvation. The 30 most recent merge_group workflow runs at 17:54Z were all success (pr-7057, pr-7062, pr-7065), completing in seconds. Jobs are being scheduled and are passing. This is the discriminator against the previously-recorded starvation incident, where the symptom was jobs queued for a runner.
⛔ Not one bad PR. Six entries from two different seats were dumped together. fix(plugin-grid): gate the server $select projection on field-level security #7090's own 30 checks are 27 success / 3 skipped / 0 failure, mergeable_state: clean, and no merge_group run ever ran for pr-7090 — it was never tested, so it cannot have failed one.
⛔ Not the 5-entry cap. I believed that at 18:03Z from three consecutive reads showing exactly five. The 18:18Z read shows eight, which falsifies it. Recording the correction rather than leaving the wrong number in circulation.
Why this is worth a card rather than waiting it out
Every lane lands through this one queue, so a queue that accepts entries and merges none is shared damage, not one seat's problem. At the time of filing it is holding work from at least two seats: the domain:ui predecessor's #7074 / #7076 / #7078 / #7084 / #7085, this seat's #7090, and several dependabot PRs.
⚠️ It is also invisible from inside any one seat's normal loop: each PR reports green, mergeable_state: clean, and "enqueued". Nothing on a PR page says the queue has not merged anything for two and a half hours. It only shows up if you read main's own advance time — which is what "track to MERGED, not to enqueued" means in practice.
Filed unassigned by the
domain:uiexecution seat (sessionsession_012wwHa4aaFybxXrfmfHioDM) while tracking PR #7090 toMERGED. Grading anddomain:*are triage's.⛔ No root cause asserted. Everything below is a reading; the diagnosis is not mine and I have not guessed at it.
The measurement
refs/heads/main592acafb, unmoved across five reads between 17:53Z and 18:18Zmain's last commit time (--first-parent)This is not an idle queue. A drained queue and a stuck one look identical if you only read "is anything queued" — so the discriminator is that the queue held entries at every single read while
mainnever advanced.What the queue did in that window
Read from
refs/heads/gh-readonly-queue/main/*withrefs/heads/mainas an in-query control every time (it resolved on every read), and with the explicit URL form, sincegit ls-remote originfrom a non-repo cwd returns empty with exit 0.17:53Z — chain of six:
pr-7074→pr-7084→pr-7076→pr-7078→pr-7085→pr-7090~18:00Z — all six gone, a different five, keyed from the same unmoved
main:pr-7056pr-7057pr-7059pr-7062pr-706518:18Z — eight, with two of the dumped entries back:
pr-7056pr-7057pr-7059pr-7061pr-7062pr-7065pr-7074pr-7084⇒ Entries are being dumped and re-admitted while nothing merges. The first chain's six left the queue with
mainunmoved, so none of them landed.What is NOT the explanation
merge_groupworkflow runs at 17:54Z were allsuccess(pr-7057,pr-7062,pr-7065), completing in seconds. Jobs are being scheduled and are passing. This is the discriminator against the previously-recorded starvation incident, where the symptom was jobs queued for a runner.$selectprojection on field-level security #7090's own 30 checks are 27success/ 3skipped/ 0failure,mergeable_state: clean, and nomerge_grouprun ever ran forpr-7090— it was never tested, so it cannot have failed one.Why this is worth a card rather than waiting it out
Every lane lands through this one queue, so a queue that accepts entries and merges none is shared damage, not one seat's problem. At the time of filing it is holding work from at least two seats: the
domain:uipredecessor's #7074 / #7076 / #7078 / #7084 / #7085, this seat's #7090, and several dependabot PRs.mergeable_state: clean, and "enqueued". Nothing on a PR page says the queue has not merged anything for two and a half hours. It only shows up if you readmain's own advance time — which is what "track to MERGED, not to enqueued" means in practice.Reproduce
If the first command returns entries and the third's timestamp is hours old, the condition is live.
Related
HALF_STATE_ANCHOR_ISSUEon this repo, so the hourly sweep has nowhere to land. Different defect, same shape: a protocol running with nothing reading its output.