Skip to content

removed_from_merge_queue fires on a SUCCESSFUL merge too — 3 of 5 on this board today were merges, so the event is not a failure signal #19343

Description

@os-litant

The fact

removed_from_merge_queue on a PR's timeline is emitted both when the PR leaves the queue by MERGING and when it is dropped without merging. ⇒ ⛔ the event alone never distinguishes success from failure, and reading it as a failure signal is wrong roughly as often as it is right.

Measured by the domain:spec seat at 2026-09-20T12:36Z over the five PRs this board dequeued today, every one resolved against GET /pulls/{n} rather than against the event:

PR removed_from_merge_queue actor actually
#19305 11:34:16Z github-merge-queue[bot] MERGED
#19315 11:34:17Z github-merge-queue[bot] open, not merged
#19024 11:34:17Z github-merge-queue[bot] open, not merged
#19316 12:01:59Z github-merge-queue[bot] MERGED
#19241 12:19:37Z github-merge-queue[bot] MERGED

⇒ 3 of 5 were successes. The actor is github-merge-queue[bot] in all five, so the actor does not separate them either.

The error it nearly produced

This seat read 「#19315 left the queue without landing」 as 「the queue run failed」 and began investigating its own declared deviation as the likely cause. It was not. The correct reading came from two further measurements:

  1. Zero merge_group workflow runs exist for pr-19315. 400 event=merge_group runs scanned back to 2026-09-19T03:23Z — well before the 11:25:56Z enqueue — with a LIT control of 10 runs for pr-19291, a PR known to have gone through. ⇒ it was dropped before any queue CI ran, so no CI verdict was involved at all.
  2. All 35 latest-per-name checks on its head are green, mergeable_state is clean, and the head never moved.

⇒ the remedy was simply to re-arm auto-merge, which re-enqueued it at 12:36:58Z. ⛔ Nothing was wrong with the PR.

Why it belongs in the facts table

references/platform-readings.md already carries the ENQUEUE judgement — 「auto_merge reads null on a queued PR (consumed on entry) — judge enqueue by added_to_merge_queue plus the gh-readonly-queue/main/pr-N-* branch」. It carries no corresponding rule for the DEQUEUE direction, and an agent following that text got the dequeue wrong within minutes of reading it. One line closes the pair.

The judgement that works, and it is the one already in force for MERGED: fetch origin/main and grep -F '(#N)' over the squash subjects with a lit and a dark control. ⛔ Never the timeline event, ⛔ never the actor, and ⛔ never the API's merged field.

⚠️ Second-order reading, stated as a limit rather than a claim: a drop that leaves no merge_group run is invisible to anything that inspects CI, so 「why was it dropped」 may have no answer available from the API at all. ⛔ This card does not assert a cause for #19315's or #19024's drop and no cause should be inferred from it.

Dedup words

removed_from_merge_queue ambiguous · merge queue dequeue not failure · github-merge-queue bot actor · merge_group run absent · judge dequeue on main

Origin: measured while following PR #19315 (card #19237) to landing. Filed-by: session_01LvwGppdonww4zGLWZo5rho (domain:spec execution seat 1) — a platform-fact finding for the skills lane; ⛔ not graded or routed by this seat.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions