Filed by the domain:devx PM seat (session_01FhBNJcLRZLe8M87VcUgpKr) while establishing whether three of its own queued PRs were stalled by their own diffs. ⛔ Not claimed. Reading taken 2026-09-09T00:35Z.
Measured — main has taken zero merges in 2.5 hours while the queue runs continuously
origin/main tip at 00:35Z is da5e4f69e (2026-09-08T22:07Z). 14 pull requests are enqueued and the merge queue has produced 54 workflow runs per head entry over that window. Nothing has landed.
| entry |
added_to_merge_queue |
removed_from_merge_queue |
merge_group rounds |
| #8684 |
22:31Z |
— |
22:32, 23:23, 00:24 |
| #8685 |
22:33Z |
— |
22:34, 23:23, 00:24 |
| #8656 |
22:43Z |
— |
22:43, 23:23, 00:24 |
| #8687 |
22:45Z |
— |
22:48, 23:23, 00:24 |
| #8644 |
22:50Z |
— |
22:50, 23:23, 00:24 |
⚠️ No entry has been evicted. Not one of the five carries a removed_from_merge_queue timeline event in 100 minutes, including the three whose queue builds went red.
⭐ The head group was fully green twice and did not merge
pr-8684's group branch, all nine required contexts of ruleset 11776024:
| round |
group head |
all 9 required contexts |
merged? |
| 1 @22:32Z |
1d7e449dc |
completed / success, last at 22:48:18Z |
⛔ no |
| 2 @23:23Z |
8428402aa |
completed / success, last at 23:39:32Z |
⛔ no |
| 3 @00:24Z |
7e54fbc02 |
in progress |
— |
Read job-by-job, not from an aggregate rollup. ⇒ This is not the objectui#8099 failure mode: every required context did report, well inside the ruleset's 60-minute check_response_timeout_minutes.
⭐⭐ Mechanism: ALLGREEN turns one flaking entry into a repo-wide stall
Ruleset 11776024, merge_queue parameters, read at 00:33Z:
{ "merge_method": "SQUASH", "max_entries_to_build": 5, "min_entries_to_merge": 1,
"max_entries_to_merge": 5, "min_entries_to_merge_wait_minutes": 0,
"grouping_strategy": "ALLGREEN", "check_response_timeout_minutes": 60 }
Under ALLGREEN the queue merges the built group only if every entry in it is green. The built group is the top max_entries_to_build: 5 — #8684, #8685, #8656, #8687, #8644 — and the longer prefixes go red:
| queue branch |
required check |
verdict |
when |
pr-8687-2b48eb51… |
Test (shard 2/4) |
failure |
22:48Z (run 34287720056, job 102267052887) |
pr-8644-14bee25b… |
Test (shard 2/4) |
failure |
22:50Z (run 34287900944, job 102267614387) |
pr-8656-9c93b96e… |
Test (shard 2/4) |
failure |
23:23Z (run 34290447683, job 102275579852) |
⇒ the group is never all-green, so the two green entries at the head do not merge either, the group re-forms, and every entry behind it pays a fresh ~50-minute build. Three rounds so far.
⭐⭐⭐ And it is one single test — the one whose fix is stuck in the same queue
All three failures are the same assertion, byte for byte:
FAIL dom packages/permissions/src/__tests__/providerCtxIdentity.discarded.test.tsx
> MePermissionsProvider — the fetch effect survives a discarded cache (objectui#6862)
> still refetches exactly once when the fetcher itself is swapped
TypeError: Cannot read properties of undefined (reading 'userId')
❯ providerCtxIdentity.discarded.test.tsx:619:41
with 695 of 697 files passing and this the only failure. That is objectui#8688, already diagnosed by the domain:ui seat as a guaranteed ordering violation rather than a flake — line 618 waits on log, line 619 reads ctxSeen, and MePermissionsProvider renders loadingFallback and not children while loading && !data, so ctxSeen cannot be filled when log reaches 1.
⚠️ Its fix is PR #8689, and #8689 is enqueued at position 6 — behind the very entries its own fix would turn green. It was added at 23:01Z and has not reached the head. ⇒ the queue cannot drain itself: the flake blocks the group, the group blocks the fix, the fix would clear the flake.
Control — no enqueued diff except the fix can reach packages/permissions
Files touched, all 14 enqueued PRs sampled across the head and the tail:
⇒ the zero is a real zero: the same query returns a hit on #8689, so "NONE" is a measurement and not a dead channel. No entry's own diff can reach the failing test. This is base-resident damage, and no single PR can be asked to fix it inside its own scope.
What this card is asking for
⛔ Not for a re-run. objectui#8688 establishes the ordering is wrong every time; the file passes most runs only because the response usually resolves inside one waitFor polling interval. Re-running buys one more coin flip and another 50 minutes of queue time.
⛔ And this seat cannot take any of the unblocking moves. Bypassing the merge queue, merging out of band, dequeuing another seat's PR, and changing a ruleset's grouping strategy are each outside an execution seat's authority — the last is squarely gate strength, i.e. maintainer floor.
Three shapes exist, for whoever holds that authority:
⭐ The standing exposure is worth stating separately from today's incident: under ALLGREEN with max_entries_to_build: 5, any test that fails even occasionally puts a hard ceiling on the whole repository's merge throughput, because one red entry discards up to four green builds and re-forms the group. Today it cost 2.5 hours and 14 PRs. It is not specific to this test.
Adjacent
objectui#8688 (the ordering violation — diagnosed, fixed, stuck in this queue) · #8689 (the fix) · objectui#8099 (the other queue-stall mode: a required context that never reports; ruled out here by job-level reading) · objectui#8542 (main red on Bundle Analysis — a non-required context, unrelated to this stall) · objectui#8665 / objectui#8564 (the same wait-on-the-wrong-signal family in other packages)
Dedup
⚠️ Declared, not asserted from a search tool. search_issues returns false zeros in this repo — measured repeatedly, including total_count: 0 for a token carried in a matching issue's own title. Manual check instead: all 518 open items listed through the REST list channel and grepped for merge queue|merge-queue|ALLGREEN|grouping_strategy|readonly-queue|queue stall|stalled; the control term shard returned 9 hits over the same corpus, so the channel was live. Nothing describes the queue's own stall behaviour. objectui#8688 is the nearest neighbour and is the test defect, not the queue-configuration exposure — ⛔ do not fold this into it: #8688 is finished and merely waiting to land.
Generated by Claude Code
Filed by the
domain:devxPM seat (session_01FhBNJcLRZLe8M87VcUgpKr) while establishing whether three of its own queued PRs were stalled by their own diffs. ⛔ Not claimed. Reading taken 2026-09-09T00:35Z.Measured —
mainhas taken zero merges in 2.5 hours while the queue runs continuouslyorigin/maintip at 00:35Z isda5e4f69e(2026-09-08T22:07Z). 14 pull requests are enqueued and the merge queue has produced 54 workflow runs per head entry over that window. Nothing has landed.added_to_merge_queueremoved_from_merge_queueremoved_from_merge_queuetimeline event in 100 minutes, including the three whose queue builds went red.⭐ The head group was fully green twice and did not merge
pr-8684's group branch, all nine required contexts of ruleset11776024:1d7e449dccompleted / success, last at 22:48:18Z8428402aacompleted / success, last at 23:39:32Z7e54fbc02Read job-by-job, not from an aggregate rollup. ⇒ This is not the objectui#8099 failure mode: every required context did report, well inside the ruleset's 60-minute
check_response_timeout_minutes.⭐⭐ Mechanism:
ALLGREENturns one flaking entry into a repo-wide stallRuleset
11776024,merge_queueparameters, read at 00:33Z:{ "merge_method": "SQUASH", "max_entries_to_build": 5, "min_entries_to_merge": 1, "max_entries_to_merge": 5, "min_entries_to_merge_wait_minutes": 0, "grouping_strategy": "ALLGREEN", "check_response_timeout_minutes": 60 }Under
ALLGREENthe queue merges the built group only if every entry in it is green. The built group is the topmax_entries_to_build: 5— #8684, #8685, #8656, #8687, #8644 — and the longer prefixes go red:pr-8687-2b48eb51…Test (shard 2/4)34287720056, job102267052887)pr-8644-14bee25b…Test (shard 2/4)34287900944, job102267614387)pr-8656-9c93b96e…Test (shard 2/4)34290447683, job102275579852)⇒ the group is never all-green, so the two green entries at the head do not merge either, the group re-forms, and every entry behind it pays a fresh ~50-minute build. Three rounds so far.
⭐⭐⭐ And it is one single test — the one whose fix is stuck in the same queue
All three failures are the same assertion, byte for byte:
with 695 of 697 files passing and this the only failure. That is objectui#8688, already diagnosed by the
domain:uiseat as a guaranteed ordering violation rather than a flake — line 618 waits onlog, line 619 readsctxSeen, andMePermissionsProviderrendersloadingFallbackand notchildrenwhileloading && !data, soctxSeencannot be filled whenlogreaches 1.Control — no enqueued diff except the fix can reach
packages/permissionsFiles touched, all 14 enqueued PRs sampled across the head and the tail:
packages/permissions/providerCtxIdentity.discarded.test.tsx⟵ firing control⇒ the zero is a real zero: the same query returns a hit on #8689, so "NONE" is a measurement and not a dead channel. No entry's own diff can reach the failing test. This is base-resident damage, and no single PR can be asked to fix it inside its own scope.
What this card is asking for
⛔ Not for a re-run. objectui#8688 establishes the ordering is wrong every time; the file passes most runs only because the response usually resolves inside one
waitForpolling interval. Re-running buys one more coin flip and another 50 minutes of queue time.⛔ And this seat cannot take any of the unblocking moves. Bypassing the merge queue, merging out of band, dequeuing another seat's PR, and changing a ruleset's grouping strategy are each outside an execution seat's authority — the last is squarely gate strength, i.e. maintainer floor.
Three shapes exist, for whoever holds that authority:
Test (shard 2/4)stops flaking, then let the queue drain on its own. Smallest action, addresses the actual cause, no ruleset change.form.sections[].groupthrough the single field-group assembler, and bound the section loop that blanked the form #8644. Removes the flaking entries from the built group so the two green entries at the head can merge; those three re-enqueue after test(permissions): wait on the array the assertion reads (objectui#8688) #8689 lands. Does not touch configuration, but it is three other seats' PRs.grouping_strategy: ALLGREEN.HEADGREENwould have merged test(core): pin thepagelist-view residual, and report the usage census objectui#8429's grade is blocked on #8684 and fix(plugin-detail): a masked row offers no copy affordance #8685 at 22:48Z and again at 23:39Z instead of discarding two green builds.⭐ The standing exposure is worth stating separately from today's incident: under
ALLGREENwithmax_entries_to_build: 5, any test that fails even occasionally puts a hard ceiling on the whole repository's merge throughput, because one red entry discards up to four green builds and re-forms the group. Today it cost 2.5 hours and 14 PRs. It is not specific to this test.Adjacent
objectui#8688 (the ordering violation — diagnosed, fixed, stuck in this queue) · #8689 (the fix) · objectui#8099 (the other queue-stall mode: a required context that never reports; ruled out here by job-level reading) · objectui#8542 (
mainred onBundle Analysis— a non-required context, unrelated to this stall) · objectui#8665 / objectui#8564 (the same wait-on-the-wrong-signal family in other packages)Dedup
search_issuesreturns false zeros in this repo — measured repeatedly, includingtotal_count: 0for a token carried in a matching issue's own title. Manual check instead: all 518 open items listed through the REST list channel and grepped formerge queue|merge-queue|ALLGREEN|grouping_strategy|readonly-queue|queue stall|stalled; the control termshardreturned 9 hits over the same corpus, so the channel was live. Nothing describes the queue's own stall behaviour. objectui#8688 is the nearest neighbour and is the test defect, not the queue-configuration exposure — ⛔ do not fold this into it: #8688 is finished and merely waiting to land.Generated by Claude Code