Filed by the skills seat from a measurement taken while answering the maintainer's question about the domain:ui backlog (2026-09-06T15:0xZ). The maintainer's expectation, verbatim: 「项目经理的技能不应该就是先派高优先级的任务吗」. The rule text does not say so for priority:p1 / p2 / p3.
The measurement
.claude/skills/pm-dispatch/SKILL.md, the 候选与批次 block, the selection order as written on main (3e270d4):
取卡全序:priority:p0 插队 > pm:blocking > target: 板上项 > type Bug > 其余;同级按卡龄。
references/core-rules.md digests it the same way (「取卡全序:插队卡、有下游依赖者的卡、发版板上项、缺陷卡、其余,同级按卡龄」), and references/dispatch-runbook.md's rationale line names p0, blocking, bug and age — priority:p1 / p2 / p3 appear in none of the three. Only p0 is read, as a queue-jump. Inside the 「其余」 level an older p3 outranks a newer p2, and a p3 typed Bug outranks a p2 finding of any age.
The triage seat grades every card with a priority label; that label today changes what a human sees and nothing about what the machine takes. The seats that do take p1/p2 first (the domain:ui seat's R1 this afternoon: one p1 + four p2 in flight) do so by judgment, which the next shift is free not to share.
Live instance, objectui domain:ui pm:queue at 14:15Z: 124 cards — priority:p1 3, p2 45, p3 56, ungraded 20. Under the written order those 124 are one level ordered by age, with the 56 p3 cards (79 of the 124 are findings) interleaved among the 45 p2.
The rule to land
Write priority into the order, as one line in each of the three texts:
取卡全序:priority:p0 插队 > pm:blocking > target: 板上项 > priority:p1 > p2 > p3 > 无级;同级内 type Bug 先,再按卡龄。
- Priority outranks type: the triage seat's priority is its judgment of harm, and a p3
Bug is by that judgment less urgent than a p2 enhancement; type still breaks ties inside a level.
- Ungraded (
pm:queue with no priority:*) sorts last and is named in the round report as a triage gap — it is not taken ahead of a graded card; it is not a reason to invent a grade at the execution seat (类型与优先级由分诊席唯一生产).
- The existing sentence 「全序每级取既有信号现读/现算,零逐卡维护;优先是排序不是豁免」 holds unchanged: priority labels are an existing signal, read at selection.
This is what the maintainer's pushback on a "p3 freeze" asked for: no label moves, no parking of p3 cards; the queue stays whole and the machine reads the grade it already carries.
Acceptance
SKILL.md (811/811, pin 342), references/core-rules.md (150/150) and references/dispatch-runbook.md (241/241) say the same order; line-neutral, rules-only register.
check-skill-line-ratchet, check-skill-id-lint, check-skill-frame-sync, check-governed-prose, check-half-states --self-test (no H-row pins the sentence — grep 取卡全序 over scripts/), check-governed-merges --test exit 3, whole-repo lint — exits captured before any pipe.
- Governed (
.claude/**): draft PR, seat review at contract tier, os-zhuang + hotlong, needs-user-decision + 维护者速读, human merge.
Serial plan
SKILL.md is held by flight A (PR #16339) and the devx seat's PR #16271; this card folds into the SKILL.md half of the finding-threshold card filed in the same stroke (same file, same register, no conflicting ruling), with a merge-tree proof against both open heads.
Generated by Claude Code
Filed by the skills seat from a measurement taken while answering the maintainer's question about the
domain:uibacklog (2026-09-06T15:0xZ). The maintainer's expectation, verbatim: 「项目经理的技能不应该就是先派高优先级的任务吗」. The rule text does not say so forpriority:p1/p2/p3.The measurement
.claude/skills/pm-dispatch/SKILL.md, the 候选与批次 block, the selection order as written onmain(3e270d4):references/core-rules.mddigests it the same way (「取卡全序:插队卡、有下游依赖者的卡、发版板上项、缺陷卡、其余,同级按卡龄」), andreferences/dispatch-runbook.md's rationale line names p0, blocking, bug and age —priority:p1/p2/p3appear in none of the three. Onlyp0is read, as a queue-jump. Inside the 「其余」 level an older p3 outranks a newer p2, and a p3 typedBugoutranks a p2 finding of any age.The triage seat grades every card with a priority label; that label today changes what a human sees and nothing about what the machine takes. The seats that do take p1/p2 first (the
domain:uiseat's R1 this afternoon: one p1 + four p2 in flight) do so by judgment, which the next shift is free not to share.Live instance, objectui
domain:uipm:queueat 14:15Z: 124 cards —priority:p13,p245,p356, ungraded 20. Under the written order those 124 are one level ordered by age, with the 56 p3 cards (79 of the 124 arefindings) interleaved among the 45 p2.The rule to land
Write priority into the order, as one line in each of the three texts:
Bugis by that judgment less urgent than a p2 enhancement; type still breaks ties inside a level.pm:queuewith nopriority:*) sorts last and is named in the round report as a triage gap — it is not taken ahead of a graded card; it is not a reason to invent a grade at the execution seat (类型与优先级由分诊席唯一生产).This is what the maintainer's pushback on a "p3 freeze" asked for: no label moves, no parking of p3 cards; the queue stays whole and the machine reads the grade it already carries.
Acceptance
SKILL.md(811/811, pin 342),references/core-rules.md(150/150) andreferences/dispatch-runbook.md(241/241) say the same order; line-neutral, rules-only register.check-skill-line-ratchet,check-skill-id-lint,check-skill-frame-sync,check-governed-prose,check-half-states --self-test(no H-row pins the sentence — grep 取卡全序 overscripts/),check-governed-merges --testexit 3, whole-repo lint — exits captured before any pipe..claude/**): draft PR, seat review at contract tier,os-zhuang+hotlong,needs-user-decision+ 维护者速读, human merge.Serial plan
SKILL.mdis held by flight A (PR #16339) and the devx seat's PR #16271; this card folds into the SKILL.md half of the finding-threshold card filed in the same stroke (same file, same register, no conflicting ruling), with a merge-tree proof against both open heads.Generated by Claude Code