docs(pm-skill): correct the merge-queue membership reading — refs answer about BUILDS, the probes answer about membership - #12889
Merged
Conversation
Queue refs answer about queue BUILDS, not membership: a queued PR can carry no ref at all, so absence is a reading in neither direction. Replace the superseded ref-presence rule with the measured positive probes in cost order (update-branch refusal text, then the merge-call 405), the two response shapes of enable_pr_auto_merge, and the two observed dequeue causes. Net 0 lines against the 314-line ceiling: the superseded rows fund the correction. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
…eue-membership-reading
This was referenced Aug 28, 2026
os-zhuang
marked this pull request as ready for review
August 28, 2026 07:15
os-zhuang
approved these changes
Aug 28, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #12873
Governed surface (
.claude/**) — DRAFT, awaiting a human merge. No reviewer requested here; the skills-lane PM runs the ACCEPT four-piece.One file, one row rewritten, net 0 lines against a ceiling with headroom 0.
The correction
gh-readonly-queue/*answers about queue BUILDS, never about queue MEMBERSHIP. A PR can be queued and carry no ref at all, so the ref is evidence only when it is PRESENT — its absence is a reading in neither direction. The standing row read absence as weak-but-real counter-evidence and attributed it to a saturated queue not having built the branch yet; both measurements below show a queued PR with zero refs and two independent positives at the same moment.Old row to new row
update_pull_request_branchanswering "Branches that are queued for merging cannot be updated" = queued, and on a normal return it still flushes the dark conflict as a byproduct; (2)merge_pull_requestanswering 405 "Pull Request is in the merge queue" = queued, while 405 "Merge commits are not allowed" = not queued, so arm auto-merge instead. Plus: the two response shapes ofenable_pr_auto_mergeanswer about the CALL, not about membership; the no-interleaved-disable rule kept verbatim in effect; two dequeue causes recordedFacts carried in
enable_pr_auto_mergehas two response shapes. A timestamped one (this call did something) and an empty-field one (this call did nothing, seen on PRs already clean or already armed). Deliberately worded to say what each shape reports about the call, and no more: the same section already records a quota-exhausted success response with no arming behind it, and an empty-field response accompanying a perfectly real queue-path enqueue, so neither shape is effect evidence and the corrected row does not resurrect either inference.MERGE_CONFLICT; a missing required approval ⇒ the governed guard's merge_group leg reportsCI_FAILURE— a dequeue that reads like a flaky test and is not one. It sits directly above the existing signature-triage row.Cut ledger — what paid for it, and where each survivor lives
Net 0 lines (9 insertions, 9 deletions) against
platform-readings.mdat 314/314.Everything else in the file is byte-identical — confirmed by the diff being exactly the two hunks above.
Verification
Gate union derived mechanically from the changeset, not recalled:
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(8 families; re-derived after themainmerge from a non-stale tree). All verdicts below are from runs on the final commit8d2392eb7, exit codes captured before any pipe.Two of the eight could not be measured locally and are named rather than claimed:
check-governed-queue-guard.mjsis a workflow-event guard and refuses without an event payload (its--self-testruns here: 113 cases pass), and bothcheck:doc-authoringandcheck:doc-formula-expressionsfirst answered PREREQUISITE NOT MET untilpnpm installand a@objectstack/formula+@objectstack/lintbuild under the shared verify lock — the exit-1 in between was a missing prerequisite, not a finding. No repo-widepnpm lintsweep was run; CI owns that run.Follow-up filed, not fixed here
#12888 records three sites that still read ref ABSENCE as proof a PR left the queue — the draft-flip dequeue-remedy row and the arming-effect enumeration in this same file, and the ACCEPT-fork sentence in
pm-dispatch/SKILL.md. Correcting them is a line-budget transaction on two ceilings at headroom 0, which this card's net-0 scope could not fund. That card is not addressed here.No script quotes the retired rule: the two scripts that mention
gh-readonly-queueparse head refs out ofmerge_grouppayloads, which is a queue-BUILD question and stays correct.Changeset
None —
.claude/**publishes nothing. Carriesskip-changeset.Generated by Claude Code