Filed by the domain:skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on maintainer rulings given in the live PM chat, 2026-09-05 02:0xZ–02:2xZ. Self-triaged into the lane: priority:p2, governed surface, pm:blocked behind PR #15460 (the rules-only rewrite of the same file, in the merge queue).
Blocked-by: #15412
The incident (cloud repo, reported by the maintainer)
An epic (专题) session opened a card with pm:queue, then implemented it itself; a patrol lane had lawfully claimed the same card 29 minutes earlier. One card, two implementations. The epic's own post-mortem: it skipped the claim protocol's full-thread re-read, and it had put the card into the public queue while assuming nobody would take it.
The rulings (verbatim, untranslated)
cloud 仓又出现了 epic 和 项目经理重复开发。这个是专题skills 的缺陷吧?是否建议开专题的时候就认领?或者加新的lable
开卡即认领,不会被分诊清扫吧?
用现成的子树保留,而不是提前认领,你不加新的 lable 我在列表页看不清
ok
⇒ Ruled: the reservation must be visible on every reserved card in the list page. The seat's recommendation — reuse pm:epic on the sub-issues rather than add a new label — was accepted with the「ok」.
What changes (rules only, house style)
.claude/skills/pm-dispatch/SKILL.md, section「Epic 子树车道」and the pm:epic row of the label table:
- An epic opens its cards under the parent's subtree and puts
pm:epic on each of them; ⛔ never pm:queue. A card carrying pm:epic is not a candidate for any domain seat; label:pm:epic is the whole reserved set, parents and children.
- Work starts with the claim atomic pair as written — the label write first, then the
Claim: comment, then the full-thread re-read; pm:epic stays on the card after the claim.
- Leaving the subtree (handing a card to a lane, or transferring it to the spec seat) removes
pm:epic and adds pm:queue in the same label write.
pm:epic and pm:queue on one card is a half-state — reserved and handed over at once. pm:queue means handed over: taking such a card back means the full claim protocol, re-read included.
- Single-lane repos (no
domain:*): open-and-claim in one act is lawful there; in multi-lane repos the domain-label prerequisite stands and the subtree marker is the reservation.
references/core-rules.md: one digest line only if the digest carries the epic rule today (check; ⛔ no new section).
scripts/pm/ensure-pm-labels.sh: the pm:epic description becomes "Reserved by a dedicated epic PM — parent or sub-issue; other PMs never take it; never together with pm:queue" (wording free, meaning fixed). Seeding the cloud repo is done by whoever runs the script with access there — note it in the script's repo-list comment; ⛔ no credentials logic.
Why not a new label (recorded so it is not re-derived)
pm:epic is already in the patrol's visibility set (PM_STATE_LABELS in scripts/pm/check-half-states.mjs) and not in the six-state exclusive set, so a child carrying pm:epic + pm:dispatched is legal and trips neither H25 nor H29; triage does not grade a card that has a named reader. A new label would have to be learned by the triage disjunction, the patrol and the unlock scan; per-epic epic:#n labels would sprawl.
Serial and gates
Same file as PR #15460 (member 1b of #15379), in the merge queue: this card dispatches after it lands and edits the rewritten file — one rule per line, ≤120 bytes, no dates or quotations in the file (the quotations above stay on this card). The rewritten SKILL.md is re-pinned at its landed count with headroom 0, so the added lines are paid for inside the epic section (⛔ no ceiling raise). Gates: check:pm-skill-ratchet, check:skill-frame-sync, check:pm-governed-prose, check:pm-skill-id-lint, and whatever dispatch-gates --commands derives. Governed ⇒ draft PR, in-seat review, os-zhuang + hotlong, human merge.
The two patrol rows that make these states visible are the sibling card, filed in the same act.
Filed by the
domain:skillsseat (sessionsession_019RfFHiRCSs3JXLK4cwcfox, os-steve) on maintainer rulings given in the live PM chat, 2026-09-05 02:0xZ–02:2xZ. Self-triaged into the lane:priority:p2, governed surface,pm:blockedbehind PR #15460 (the rules-only rewrite of the same file, in the merge queue).Blocked-by: #15412
The incident (cloud repo, reported by the maintainer)
An epic (专题) session opened a card with
pm:queue, then implemented it itself; a patrol lane had lawfully claimed the same card 29 minutes earlier. One card, two implementations. The epic's own post-mortem: it skipped the claim protocol's full-thread re-read, and it had put the card into the public queue while assuming nobody would take it.The rulings (verbatim, untranslated)
⇒ Ruled: the reservation must be visible on every reserved card in the list page. The seat's recommendation — reuse
pm:epicon the sub-issues rather than add a new label — was accepted with the「ok」.What changes (rules only, house style)
.claude/skills/pm-dispatch/SKILL.md, section「Epic 子树车道」and thepm:epicrow of the label table:pm:epicon each of them; ⛔ neverpm:queue. A card carryingpm:epicis not a candidate for any domain seat;label:pm:epicis the whole reserved set, parents and children.Claim:comment, then the full-thread re-read;pm:epicstays on the card after the claim.pm:epicand addspm:queuein the same label write.pm:epicandpm:queueon one card is a half-state — reserved and handed over at once.pm:queuemeans handed over: taking such a card back means the full claim protocol, re-read included.domain:*): open-and-claim in one act is lawful there; in multi-lane repos the domain-label prerequisite stands and the subtree marker is the reservation.references/core-rules.md: one digest line only if the digest carries the epic rule today (check; ⛔ no new section).scripts/pm/ensure-pm-labels.sh: thepm:epicdescription becomes "Reserved by a dedicated epic PM — parent or sub-issue; other PMs never take it; never together with pm:queue" (wording free, meaning fixed). Seeding thecloudrepo is done by whoever runs the script with access there — note it in the script's repo-list comment; ⛔ no credentials logic.Why not a new label (recorded so it is not re-derived)
pm:epicis already in the patrol's visibility set (PM_STATE_LABELSinscripts/pm/check-half-states.mjs) and not in the six-state exclusive set, so a child carryingpm:epic+pm:dispatchedis legal and trips neither H25 nor H29; triage does not grade a card that has a named reader. A new label would have to be learned by the triage disjunction, the patrol and the unlock scan; per-epicepic:#nlabels would sprawl.Serial and gates
Same file as PR #15460 (member 1b of #15379), in the merge queue: this card dispatches after it lands and edits the rewritten file — one rule per line, ≤120 bytes, no dates or quotations in the file (the quotations above stay on this card). The rewritten
SKILL.mdis re-pinned at its landed count with headroom 0, so the added lines are paid for inside the epic section (⛔ no ceiling raise). Gates:check:pm-skill-ratchet,check:skill-frame-sync,check:pm-governed-prose,check:pm-skill-id-lint, and whateverdispatch-gates --commandsderives. Governed ⇒ draft PR, in-seat review,os-zhuang+hotlong, human merge.The two patrol rows that make these states visible are the sibling card, filed in the same act.