Repository navigation
pm-dispatch: re-read the PR head before trusting any check_suite.completed event — the event can name a stale SHA (#15803 section B2) #16372
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Sep 6, 2026 Claim: PM loop round 9 — flight Z, the SKILL.md batch: five folds under the unchanged line pins (SKILL.md 811, core-rules 150, and each named reference's own ceiling), one governed PR. (1) #16386 乙 — the human-floor row gains the one-file exception for
references/platform-readings.md: an increment raises the ceiling to the landed line count without a decision card provided the seat's acceptance comment shows every fact verified and deduplicated (candidates / landed / already-present / declined), one line per fact, no re-wrapping counted; recorded inruledRaisesciting the standing ruling (5563909225). (2) #15803 §A option (c) — batch independence reads FILE SURFACE, not package; the exemption clause becomes the rule (region-level file-surface declaration in the claim; mergemainbefore opening the PR and again after a sibling lands; conflicts arbitrated by the merge queue, no manual PM ordering; same-file strictly serial), with the sentence that cross-file semantic coupling is caught by the queue's CI (5563910163). (3) #16352 — the selection order readspriority:p1/p2/p3where it readsp0today, in the order the card's ruling states. (4) #16372 — re-read the PR head before trusting anycheck_suite.completedevent. (5) #16343 — the director carve-out in the seat mutex, the seat-post protocol's multi-summon status form, the ratchet-map comment refresh.
Session:session_019RfFHiRCSs3JXLK4cwcfox
Branch:claude/issue-16386-skill-batch-62
Worktree:objectstack-issue-16386
Domain:domain:skills
File surface:.claude/skills/pm-dispatch/SKILL.md,references/core-rules.md, and whichever ofreferences/seat-post-protocol.mdand the ratchet map comment inscripts/pm/check-skill-line-ratchet.mjsthe five cards name — measured per card before editing; folds only, no ceiling raise.
Container & model: L,mode:subagent, fable —dispatch-gates.mjs --tier: MANDATORY on.claude/skills/pm-dispatch/SKILL.md; on a fable 429 the seat's exemption applies, opus, recorded here.
Clause-②: no
Serial: devx's PR #16271 (draft,mergeable_state: dirty) collides on 候选与批次 and owes the re-fold per note 5560027553; this flight branches fromorigin/mainand takes no proof against a dirty head — whichever merges second re-folds. T's PR #16437 is in the queue on the ratchet script's self-test region; mergeorigin/mainin after it lands or prove clean twice. Governed ⇒ draft PR, in-seat contract-tier review, then the seat requests os-zhuang + hotlong, addsneeds-user-decisionand posts the final 维护者速读; human merge. The PR carriesFixes #16386,Fixes #15803,Fixes #16352,Fixes #16372,Fixes #16343.
Generated by Claude Code
Report pointer (flight Z): this card is one of the five folded into draft PR #16486 (head 9390702); the
os-dev-reportfor the flight is the anchor comment on #16386 — #16386 (comment) — and the PR body lists this card's old line, new line and the fold that paid for it.
Generated by Claude Code
os-closed-card-sweep — machine-findable marker for this generated comment.
Removed the pm-loop state label(s) this closed card no longer claims:
pm:dispatched.- Closing pull request: docs(pm-dispatch): the batch #62 skill folds — file-surface batch independence, priority in the selection order, the readings-ledger ceiling exception, the suite-event head re-read, the director carve-out #16486, merged.
- Closing commit
aa0304d327, merged intomain. - Left untouched:
documentation,finding,domain:skills,priority:p3— ownership, priority and outcome are not state claims. - The label set was read back after the write and matched.
A state label claims work is in flight. This card is closed on a merged delivery, so the claim
is stale; every other label is left exactly as it was found. Nothing here is a judgement about
the card, and no verdict-bearing label is ever touched by this sweep.posted by half-state-patrol run 34097314575 · trigger
scheduleGenerated by Claude Code
Split out of #15803 (section B2) by the skills seat at grading, as that card's triage prescribed; the maintainer's principle question in #15803 section A stays on that card.
The reading
A
check_suite.completedevent can name a head that is no longer the PR's head. Measured by thedomain:spec@ objectui seat on 2026-09-05: the event nameddfec57b5ewhile the PR's actual head wase46a218c9. Acting on it would have flipped aClause-②PR ready on evidence from a commit no longer on the branch.The protocol's existing corrective — read the full check farm by name on the head, then arm — already prevents the bad outcome, but it reads as being about aggregate-vs-by-name. This is a distinct failure: right method, wrong commit.
The rule to land
One clause in
.claude/skills/pm-dispatch/SKILL.md's 入队与落地 block (line-neutral, paid by a fold in the same block): before trusting any suite or check event, re-read the PR object and take the head from it; a check reading is bound to that head, never to the event's SHA.references/platform-readings.mdgains the fact as one line in the fifth readings increment (with #15977 · #16006 · #16104 section 1 · #15803 section C), not here.Acceptance
check-skill-line-ratchet,check-skill-id-lint,check-skill-frame-sync,check-governed-prose,check-half-states --self-test,check-governed-merges --testexit 3, whole-repo lint — exits captured before any pipe..claude/**): draft PR, seat review,os-zhuang+hotlong, human merge.Serial
SKILL.md is held by PR #16339 (flight A) and PR #16271 (devx); this card folds into the SKILL.md flight that follows both (with #16352 and #16229 — same file, same register, no conflicting ruling).
Refs #15803.
Generated by Claude Code