Skip to content

Commit 7371c47

Browse files
committed
docs(pm): 批次独立性 absorbs the family-dispatch clause — five admission gates, fold-or-serial as a mandatory question (#9663)
The batch-independence paragraph gains its scope clarification: the invariant stops two agents colliding on one region; one dev deliberately covering N same-region ruled cards satisfies it trivially and may fold into one dispatch. Admission is five gates as filed — same defect shape + fix pattern; same package/region; every member already ruled (⛔ none in the decision box — load-bearing against laundering unruled cards into a ruled PR); per-member independent verifiability; a named exclusion list (load-bearing against blanket same-class sweeps). Fold-or-serial is a mandatory question whenever two or more queued cards share a hot file (maintainer verbatim quoted in the clause); an unanswered default-to-serial is a missed answer. The folded-claim conventions from this dispatch's own first live run land in the claim protocol: shared branch named after the lead card, a claim comment on every member naming that branch, per-card commits + one multi-Fixes PR, the full serial-constraints check on the lead claim. Ratchet payment (all genuine dedup, no re-wrap): the spec-only fixture-triage dispatch rule relocates to lanes/spec.md as its home; the platform-readings TOC enumeration and the ccusage tool description collapse to pointers at the facts table that already carries them; the seat-post migration detail defers to seat-post-protocol.md. SKILL.md lands at exactly 682/682. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
1 parent 684466c commit 7371c47

2 files changed

Lines changed: 21 additions & 16 deletions

File tree

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

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ references);② 创建后手动 fire 一轮烟测,判据取**GitHub 上的产出
112112
## 平台读数纪律
113113

114114
统一原则:**判据取命令的输出,不取 API 字段的字面值、不取本地工作树现状、不取「看起来相邻」的
115-
日志。** GitHub API / 工具行为的实测事实表(队列成员资格与 auto-merge、API 配额、读数陷阱、截
116-
断双读取、容器重启三态)在`references/platform-readings.md`,做对应操作的那一刻查阅。常驻原则:
115+
日志。** GitHub API / 工具行为的实测事实表在 `references/platform-readings.md`(条目清单即其文内
116+
标题),做对应操作的那一刻查阅。常驻原则:
117117

118118
- **核验 main 用 `origin/main`**(先 fetch,再 `git grep <pat> origin/main -- <paths>` /
119119
`git show origin/main:<path>`),⛔ 不用共享检出的工作树 —— 它的 HEAD由别的 agent 摆布。
@@ -135,8 +135,6 @@ references);② 创建后手动 fire 一轮烟测,判据取**GitHub 上的产出
135135
证据的零实现停手是好产出,不当返工计)。**裁决明令的动作实施中测出对向事实** ⇒ 照裁决字面执
136136
行、被打断行为的 pin 反转为拒绝 pin(不是删除)、⛔ 同 PR 不做任何 promote/回退、冲突立
137137
成 `needs-user-decision` 卡、该 PR 不挂 auto-merge 留异议窗口。
138-
- **spec 改动的 fixture triage 必须跑消费包测试**(A 包的改动可让 B 包的 fixture 反着断言
139-
,spec 范围内任何 sweep 都看不见)—— 动契约面的派发令点名消费包测试清单,报告要有各消费包真实读数。
140138

141139
## 多仓协调(五条规则)
142140

@@ -219,8 +217,8 @@ changeset 流、无 `packages/`;合并队列 + required `build` + `merge_group`
219217
权威,标题与 assignee 是派生视图、三者同笔更新;接管/移交 = 改正文 + 审计评论(**评论只作审计不承
220218
载状态**),接管压缩是标准步骤。**范围与常设承诺是岗位说明不是状态,版本化在
221219
`references/lanes/<lane>.md`**(维护者 2026-08-19 裁定:「所以我认为每一种项目经理的岗位说明应该进
222-
skills,类似分诊」)—— 贴内指针指向其车道文件,升级走技能 PR;存量贴的散文由在任座位在下次写侧刷新
223-
时迁移瘦身,⛔ 手抄接力(逐任手抄正是本条要退役的失效模式)。**写侧刷新点 = 轮次边界**,读侧只读贴
220+
skills,类似分诊」)—— 贴内指针指向其车道文件,升级走技能 PR,⛔ 手抄接力(逐任手抄正是本条要退役
221+
的失效模式;存量贴的四段收缩细则在 seat-post-protocol)。**写侧刷新点 = 轮次边界**,读侧只读贴
224222
正文 + 晚于正文最后编辑的评论(维护者 2026-08-12 批准;更早的已被吸收,是存档不是现状),中途状态
225223
由卡上 claim/ACCEPT 评论承载。**热文件串行队是正文具名段**(区域写不清就只能整文件串行)。无心跳,
226224
活性惰性判定;竞态三招 —— 动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。**换班报告默
@@ -336,7 +334,15 @@ issue,逐个读当前 open/closed/assignee,引用读到的现状 ⛔ 不引用
336334
张卡还开着吗」;过时动作断言 dev 动手即自纠,过时卡引用不变红)。花几分钟,不查则赔一次 agent 运行。
337335

338336
**批次独立性。** 一批内任两单不得可能碰同一个包/registry/barrel/spec schema;拿不准就串行。**同
339-
文件单跨轮硬串行;延后不是搁置**(被延后那一刻就把已知的坑记到该 issue 上)。**维护者明示豁免同
337+
文件单跨轮硬串行;延后不是搁置**(被延后那一刻就把已知的坑记到该 issue 上)。**家族派发(family dispatch)是本条的范围澄清,不是豁免**:独立性防的是两个 agent 相撞同一区域,
338+
一个 dev **有意**覆盖 N 张同区域已裁卡是平凡满足不变量,可折叠为一次派发(折叠认领约定见「认
339+
领」节)。准入五门全过才可折:① 同缺陷形态同修法(⛔ 不是同关键词/同子系统);② 同包/区域(一
340+
worktree、一 changeset、一队列位);③ **每张成员都已裁/已定级,⛔ 决策箱内一张不许**(承重门:防
341+
借折叠把未裁卡洗进已裁 PR);④ 每成员独立可核(每成员一个具名判据,批次不能静默少交);⑤ 派发令
342+
点名**排除清单** —— 长得像家族而不是的成员及理由(承重门:盲扫「同类」正是要防的错编辑)。
343+
**fold-or-serial 是必答题**(维护者 2026-08-19 原话:「你自己定的工作方式你也会忘。」):凡 ≥2 张
344+
排队卡共享热文件,串行队条目和/或链首认领必须以五门为判据显式答折叠还是串行 —— 不答而默认串行是
345+
漏答不是安全选项(零余量棘轮文件上的串行还翻倍付账搜刮与人工合并次数)。**维护者明示豁免同
340346
文件串行时,替代纪律四条**(豁免的是排队,不是防撞):① 文件面申报到**区域**级(函数/段落);② 开
341347
PR 前合一次 main;③ 兄弟卡落地后再合一次;④ 冲突交合并队列仲裁,⛔ PM 不手动排序;豁免不外溢。**
342348
阻塞解除后给延后单重新定价**:派发前一单时带必答项「你的改动让 #X 变简单/变难/变得不必要还是无
@@ -378,7 +384,7 @@ PR 前合一次 main;③ 兄弟卡落地后再合一次;④ 冲突交合并队
378384
不相交挡不住**读耦合**:本卡 pin 断言兄弟卡在改的行为 ⇒ 各自全绿、先合者令后者 CI 无因变红;派
379385
发令点名跨车道兄弟时**应**注明本卡 pin 是否断言其面,是则在用例内预登记翻转触发词(兄弟行为落地
380386
即变红:删除或反转,⛔ 不修绿)。文件面对跨域例外单**必填**、普通单建议(定向在飞检查与 epic 领
381-
地判断的唯一输入);分支名必须带 issue 号。**限流不拆原子对**:发不出评论就撤 assign 或不开始;配额尽则整对排队,永不留半个。
387+
地判断的唯一输入);分支名必须带 issue 号。**家族派发(见批次独立性)的折叠认领约定**:共享分支按链首卡命名,**每张成员卡各留认领评论并点名该分支**(成员卡无自有分支是设计不是半状态);一 PR 正文多行 `Fixes #<n>` 每成员一行、逐卡 commit(= 每成员的独立可核件);完整串行约束检查落链首认领,成员认领指向之。**限流不拆原子对**:发不出评论就撤 assign 或不开始;配额尽则整对排队,永不留半个。
382388
3. **竞态复读**:自己的认领评论上墙后重读全线程 —— assignment 幂等,两个 agent 都会「成功」,**
383389
认领评论时间戳是唯一仲裁**;更早的评论带不同 session ID/分支 ⇒ 你输了,回「already claimed
384390
— yielding」另选。**让行是交接不是退场**:连同让行评论交出已诊断的一切与 PM 侧已取的板面读
@@ -552,9 +558,8 @@ issue 上(不能合 ≠ 不复核;技能面 PR 的复核席须跑在契约复审
552558
出处:维护者 2026-08-11 提问(「首先项目经理能不能查到相关的数据,其次是到达时间窗口工作就会停,
553559
是否应该设置一个1小时的定时以监测时间窗口已经解锁」)。检测读数、盲区与恢复 playbook 细则见 `references/platform-readings.md`;常驻原则:
554560

555-
- **检测**:`ccusage blocks` 给窗口边界与燃烧率,但只有单容器视野、估成本不估套餐余量(没有任何
556-
面向 agent 的接口暴露账号级剩余额度);**权威的墙信号是失败本身**——撞墙报文里的重置时刻在那
557-
一刻可得、事前查不到,把它记下来。
561+
- **检测**:`ccusage blocks` 只有单容器视野、估成本不估套餐余量(账号级剩余额度无接口可查);
562+
**权威的墙信号是失败本身**——撞墙报文里的重置时刻在那一刻可得、事前查不到,把它记下来(工具读数与盲区在事实表)。
558563
- **跨墙定时器**:拿到重置时刻 ⇒ 一发定点(reset + 缓冲)优先;没有 ⇒ 挂每小时 cron Routine,⛔
559564
**不用 send_later 链** —— send_later 是 run-once、fire 后自禁用,投进死窗口那一发是否被重试未实
560565
测且文档未承诺,一次性链条可能断在它存在的意义上;第一枪成功的 fire 跑恢复后**删除 cron**(幸存 cron 是孤儿定时器)。fired 文本照定时器写法纪律。

‎.claude/skills/pm-dispatch/references/lanes/spec.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
- findings 首触定级归分诊席,本席只供证据。
3333
- **待命巡逻每次做整车道全交集读**(delta 扫描有尾隙:扫描后、波次边界前入队的卡
3434
谁都看不见;全交集读是安全网)。
35-
- 契约面卡的 fixture triage 必须跑消费包测试,报告要有各消费包真实读数(原则在
36-
SKILL.md 平台读数纪律);派发前触发文件必查段照座位贴现值执行(那是状态,不是岗
37-
位说明)。
38-
- 跨仓 pin 滞后是缝卡盲区 —— 派发前用 REST compare 核祖先关系(本地 merge-base 在
39-
浅检出上给假「非祖先」),读数写进派发令。
35+
- **契约面卡的 fixture triage 必须跑消费包测试**(A 包的改动可让 B 包的 fixture
36+
反着断言,spec 范围内任何 sweep 都看不见)—— 派发令点名消费包测试清单,报告要有
37+
各消费包真实读数。
38+
- 派发前触发文件必查段照座位贴现值执行(那是状态,不是岗位说明);跨仓 pin 滞后的
39+
读法在 SKILL.md 多仓协调。
4040

4141
## 席内判断
4242

0 commit comments

Comments
 (0)