docs(pm-dispatch): the draft-conversion reading splits by queue state — no queued PR left the queue on a draft conversion - #20845
Draft
objectstack-fleet[bot] wants to merge 1 commit into
Conversation
… — a queued PR kept its place in every re-read platform-readings `:41-:43` re-read against the timelines they rest on. Unqueued and armed, a draft conversion drops auto-merge in the same second (re-arm after ready). Queued, no draft conversion was seen to dequeue in this repo: two PRs merged through the queue while in draft, and two others left only after their own merge-group builds went red. The remedy line keeps both acts and records that both together were not seen to dequeue either. Net 0 lines; each rewritten line is at most 120 bytes. Claude-Session: https://claude.ai/code/session_01KTZmMfzVzjNvyaLyQ8mHvg Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Sep 30, 2026
This branch has not been deployed
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 #20764
Clause-②: no
What changes
.claude/skills/pm-dispatch/references/platform-readings.md, lines 41-43 only. The rewrite is net 0 lines, and the three new lines are 120 / 118 / 120 bytes (cap 120).:41:42:43The remedy on
:43is unchanged: do both acts. No rule is added. The in-file citations are dates, becausepnpm check:pm-skill-id-lintgoes red on a#-number anywhere under.claude/skills/pm-dispatch/, and this file cites no PR number today. The PR numbers and timeline events are in this body. That is where the id-lint header puts a reading's provenance.The readings (re-readable:
GET /repos/objectstack-ai/objectstack/issues/N/timeline)I ran a read-only timeline scan over #4700-#4900, #6650-#6850 and #20400-#20840. It looked for two patterns: a
convert_to_draftbetweenadded_to_merge_queueand the nextremoved_from_merge_queue, and aconvert_to_drafton a PR that was armed but not queued. The scan found every row below. The table is complete for those windows only, not for the whole repo.Queued, then converted to draft. None of the four left the queue because of the conversion.
auto_merge_disabledeventpr-20420-3cf6449hadLint & Type Check= failure at 14:01:49Z, before the draft;github-merge-queue[bot]removed it at 14:11:24Z, unmergedpr-20442-b285508for it at 14:11:29Z, 9 min after the draft; that group'sCI= failure at 14:30:14Z; removed at 14:35:44Z, unmergedArmed, not queued, then converted to draft. Each one dropped auto-merge.
auto_merge_disabledEach disable event carries the converter as its actor. A timeline cannot tell whether the platform wrote it or a scripted follow-up did. The line records what was observed ("同秒").
Where the old reading came from
db6581a5(docs(skills): 补齐「跟到合并为止 / CI 诊断纪律 / 生成物同步」四类 PM 经验 (#4892) #4893, card 把「跟到合并为止 / CI 诊断纪律 / 生成物同步」写进 pm-dispatch 与 spec-property-retirement skill #4892, 2026-08-03). It cites no PR. That is the same day feat(spec)!: 移除./automation的孤儿EventSchema—— C6 双源清账,基线 13 → 12 (#4658) #4745 dropped auto-merge on an armed PR that was not queued. The queue-membership half has no instance behind it.cd704cc4(docs(pm-dispatch): ADR merge prohibition in Guardrails + ACCEPT path fork; probe-and-revive as the standing backstop; replay-wake identity check (#6741, #6747) #6799) later cited docs(adr),chore(devx): reconstruct ADR-0079 + make every cited ADR number resolve #6732 for "only draft evicts; disable alone does not". In docs(adr),chore(devx): reconstruct ADR-0079 + make every cited ADR number resolve #6732's own timeline the PR stays queued after the draft and is merged by the queue 34 minutes later.How this departs from the triage direction (5903760674)
I did not choose these quietly. Each one is a place where a measurement changed what the direction assumed:
:42is split by queue state, not "mixed" in the sense of opposite readings. No queued PR in the scanned windows left the queue because of a draft conversion. The direction assumed the old half had its own measurement. It has none, and the one PR later cited for it reads the other way. What does go both ways in this repo is the effect by state: unqueued, auto-merge drops; queued, the PR keeps its place.:43says "not seen to dequeue", not "not measured". Three PRs (docs(adr),chore(devx): reconstruct ADR-0079 + make every cited ADR number resolve #6732, feat(spec): ComponentPropsMap rows for action:button/group/menu/icon and element:definition-list/repeater #20420, feat(spec): declare the staged $empty filter operator and its per-type expansion (#20311) #20442) have both acts claimed in writing, and none was removed by them. The caveat: on a queued PR, the disable leaves no timeline event, so whether it was sent rests on the seats' own comments.:41loses "两向相反读数并存". No opposite reading survived the re-read.Acceptance notes
AGENTS.mdstates the falsified reading as a premise in three places. Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 says "draft is what removes queue membership, disabling alone drops only the arming". Multi-agent §7 says "flipping back to draft drops auto-merge and queue membership at once". The "State on your PR" paragraph says the draft flag "flipped back destroys auto-merge and queue membership at once". I did not touch them. They are reported to the seat.removed_from_merge_queue2026-09-30T07:33:36Z). Whether the remedy should name a different act is a question for the seat. It is not a rule this PR adds..claude/**is not in any package'sfiles[], so this PR publishes nothing.skip-changesetis the seat's to apply..claude/**). This PR stays a draft until a## Contract reviewrecord atCONTRACT_REVIEW_TIERexists for its head.Verification (head
02ea176a1)node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commandsall exit 0. They arecheck-closing-keyword-parity(plus--self-test),check-comment-mask-corpus,check-governed-queue-guard --self-test,check-harness-current --self-test,lint check:doc-formula-expressions(after building@objectstack/lintand its dependency closure underos-verify-lock.sh),check:agent-test-spelling,check:cross-package-test-inputs,check:doc-authoring,check:driver-memory-census,check:gitlink-declared,check:nul-bytes,check:pm-governed-merges,check:pm-half-states,check:pm-skill-id-lint,check:pm-skill-ratchet,check:refd-timer-probe,check:required-contexts,check:skill-frame-syncandcheck:watch-hint-literal.pnpm check:pm-settings-deny-rosterwas also run, because its roster lives under.claude. Exit 0.--ranreconciliation: 20 derived, 20 run, 0 NOT-MEASURED. All 20 recorded an exit code.check:pm-skill-ratchetprinted:platform-readings.md is 469 lines (ceiling 469; headroom 0), widest table row 0 bytes (pin 0).check-required-contexts --verify-required-setandcheck-half-states --provenance, which read the workflow event, and the four CI type-check lanes. This diff touches no TypeScript.维护者速读(草稿)
platform-readings.md第 41-43 行,关于「已入队 PR 转 draft 能否踢出合并队列」的三条平台读数。行数不变。AGENTS.md里的同一旧说法一并修正(Tier H),需要你点头另开 PR。Generated by Claude Code