Skip to content

Commit c43ed91

Browse files
claude[bot]claude
andauthored
pm-dispatch: pm:epic marks every card an epic reserves, never with pm:queue (#15696)
SKILL.md 「Epic 子树车道」 gains the five reservation rules (children carry `pm:epic`, claim protocol as written, one-write hand-over, the half-state, single- vs multi-lane repos), paid inside the section by merging adjacent single-rule lines; the `pm:epic` label-table row and the label description in `scripts/pm/ensure-pm-labels.sh` carry the same meaning. Ceiling untouched (811/811, table pin 342). Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox Co-authored-by: claude <noreply@anthropic.com>
1 parent 1c14214 commit c43ed91

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
115115
| `pm:retriage` | 等分诊改判:与现行 `pm:*` 并存、⛔ 不摘原标;带本标签的 `pm:queue` 卡跳过派发 |
116116
| `finding` | 观察类记录,恒 = 待首次定级;定级即离标;不占队列不进收件箱 |
117117
| `target:<major>` | 发版阻塞:每个 backlog 恰好一个生产者 |
118-
| `pm:epic`(父单) | 子树已委托 epic PM;其它 PM 不把其 sub-issue 当候选 |
118+
| `pm:epic`(父单或 sub-issue) | 已由 epic PM 保留;其它 PM 永不取;⛔ 永不与 `pm:queue` 同挂 |
119119
| `pm:seat` | 座位登记贴:协议载体,不是待分诊的工作 |
120120
| `priority:p0` | 插队:可超 `batch`、破轮次立即派发;⛔ 不豁免同文件串行与认领协议 |
121121
| open PR 引用该单 | 已实现,复核中 |
@@ -296,17 +296,17 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
296296
## Epic 子树车道
297297

298298
- 大开发(父单 + sub-issue 树)整体委托一个专职 PM 会话:`/pm-dispatch epic:#<n>`。
299-
- 队列 = 子树 open 未认领 sub-issue,每轮重读不缓存。
300299
- 委托信号成对落地:父单打 `pm:epic` + 正文写会话 ID 与声明的文件领地。
301-
- 其它 PM 的候选获取跳过整棵子树。
302-
- 域座位批次选择时读一次 `label:pm:epic` 索引,避开领地相交。
303-
- epic PM 不同时持有 `domain:*` 座位;认领纪律全套照做。
304-
- 触 `packages/spec` 的 sub-issue 照旧转 spec 座位。
305-
- 衍生问题三分法,判据:不修它,epic 验收过不过得去。
306-
- in-scope ⇒ 挂父单 sub-issue 下轮自动入队。
307-
- 触 spec/公共契约 ⇒ 转 spec 座位队列,epic 侧写 `Blocked-by:`。
308-
- 顺带发现 ⇒ 独立立单进修复落地仓 backlog,查重先行。
309-
- ⛔ 不借 sub-issue 通道把未分诊的卡塞进池子。
300+
- epic 立卡挂父单、打 `pm:epic`,⛔ 永不 `pm:queue`;`label:pm:epic` 即父子保留全集,域座位不取。
301+
- 队列 = 子树 open 未认领 sub-issue,每轮重读不缓存;其它 PM 候选获取跳过整棵子树。
302+
- 域座位批次选择读一次 `label:pm:epic` 索引,避开领地相交;epic PM 不兼任 `domain:*` 座位。
303+
- 认领纪律全套照做:先写标签、再 `Claim:`、再全线程重读;认领后 `pm:epic` 留在卡上。
304+
- 离开子树(交车道或转 spec 座位)同一笔标签写摘 `pm:epic` 加 `pm:queue`。
305+
- `pm:epic` + `pm:queue` 同卡 = 半状态(保留兼移交);后者即已移交,取回走全套认领协议含重读。
306+
- 单车道仓(无 `domain:*`)开卡即认领合法;多车道仓域标签前置照旧,子树标记即保留。
307+
- 衍生问题三分,判据:不修它 epic 验收过不过得去;in-scope ⇒ 挂父单 sub-issue 下轮自动入队。
308+
- 触 `packages/spec`/公共契约(sub-issue 或衍生)⇒ 照旧转 spec 座位队列,epic 侧写 `Blocked-by:`。
309+
- 顺带发现 ⇒ 独立立单进修复落地仓,查重先行;⛔ 不借 sub-issue 通道塞未分诊卡进池子。
310310
- 每次分流留一行审计评论;父单维护 checklist 汇总评论,决策仍锚在具体 sub-issue。
311311
- 收尾四步、僵尸回收与领地防撞细则见 `references/seat-post-protocol.md`。
312312

‎scripts/pm/ensure-pm-labels.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ for R in objectstack-ai/objectstack objectstack-ai/objectui objectstack-ai/cloud
269269
# objectstack, and absent entirely from objectui).
270270
gh label create pm:retriage -R "$R" -c d4c5f9 -d "Awaiting triage re-judgement — coexists with the standing pm:* label; queued cards skip dispatch" 2>/dev/null || true
271271
gh label create finding -R "$R" -c c2e0c6 -d "Recorded observation — held, not dispatchable until the findings triage round grades it" 2>/dev/null || true
272-
gh label create pm:epic -R "$R" -c 5319e7 -d "Parent delegated to a dedicated epic PM — other PMs never dispatch into its subtree" 2>/dev/null || true
272+
gh label create pm:epic -R "$R" -c 5319e7 -d "Reserved by a dedicated epic PM, parent or sub-issue; other PMs never take it; never with pm:queue" 2>/dev/null || true
273273
done
274274

275275
# needs:contract-review — the clause-② enqueue gate's re-review chain (SKILL.md

0 commit comments

Comments
 (0)