Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .claude/skills/pm-dispatch/references/dispatch-runbook.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -154,18 +154,16 @@ not found 的会话数十分钟前还 RUNNING;误判死会往活 worktree 塞第
## subagent 批(`mode:subagent`)派发前置:先快进本地检出

subagent 在 PM 容器内运行,agent 定义与技能文本读**本地检出**,不是 `origin/main`。
派发 subagent 批之前先快进:`git -C <repo-root> pull --ff-only origin main`(或核
对 `HEAD` 等于 `origin/main`);检出过期则整批拿到过期定义(实测发生过)。用
`--ff-only` 让脏或分叉的检出大声失败,不静默合并。
派发 subagent 批之前先快进:`git -C <repo-root> pull --ff-only origin main`;检出过期则整
批拿到过期定义(实测发生过)。用 `--ff-only` 让脏或分叉的检出大声失败,不静默合并。

## 接手中断的 dev(worktree 接手协议)

先试复活、不可用才接手与 ⛔ 不重跑原派发词在主文件;五条增量:

- **死后恢复查三态,不止查远程**:三态 = 远程(`git ls-remote`)/ 仅容器磁盘 / 真没了 ——
中间那态最值钱且当前无人查(worktree 比 agent 活得久,同容器共享,未提交改动通常还在);
只查远程会理直气壮地令下一个 dev「从零开始」(实测三文件未提交改动险些丢)。捡到的工作一
律标 **UNVERIFIED** 交接 —— 不丢弃也不继承(实测捡到的改动含两个缺陷)。
- **死后恢复查三态,不止查远程**:远程(`git ls-remote`)/ 仅容器磁盘 / 真没了 —— 中间那
态最值钱且当前无人查(worktree 比 agent 活得久,同容器共享,未提交改动通常还在),只查远
程会令下一个 dev「从零开始」。捡到的工作一律标 **UNVERIFIED** 交接 —— 不丢弃也不继承。
- worktree 已存在,⛔ 不要新建,`cd` 进去接着做(第二个 worktree 会劈开工作);
- 先读全部既有提交与未提交改动,逐 hunk 决定保留或修正 —— 既不推倒重来也不盲信(死 agent 的一切都未经验证);
- 把死 agent 没跑完的验证**完整重跑**并报真实输出(中断的运行没留下测试证据);
Expand DownExpand Up@@ -209,6 +207,8 @@ os-dev 定义。
鼓励证伪)」—— dev 动手前验证,证伪照实报告并按裁决意图换实现路径,⛔ 不许为顺从假设
硬做;「PM 建议的路线(可选,实测优先)」—— dev 有更好的就换,⛔ 不得因「派发令写了」
照做。
- **停条件写法:要证据,不要判决**。派发令里的前提/停条件检查必须要 dev 回报**证据面**
(搜了什么、找到什么),分叉归 PM 判 —— 写成「发现消费者就停下」把判决权交回被停的一方。
- **清单取数补遗**(条款主文在主文件):门禁清单单班之内就会过期,所以派发那一刻现取;全
farm 归 CI 跑一次,⛔ 不让 dev 枚举全 farm;点名单当天现取仍会漏(实测漏点名的门恰被改
动打红过)—— dev 对实际改动路径重取补跑,条款住 os-dev 定义。**pnpm 10.31 起
Expand Down
28 changes: 14 additions & 14 deletions .claude/skills/pm-dispatch/references/review-checklist.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,10 +20,9 @@
open」的过滤隐身,这一读是唯一能兜住它的机械检查。
- **范围检查**(取 changed files,⛔ 不看报告自述):无 `content/docs/releases/` 改
动、用户可见改动有 changeset、无与卡无关的文件。Tests/docs-only 按仓库分流:本仓
库走 `skip-changeset` 标签、不走空 changeset(空 changeset 在本仓库滞留发布);
objectui 无此标签 —— 空 frontmatter changeset 即声明、即正确形态,⛔ 永不要求或
铸出该标签;含读者可见生成产物时 dev 选 changeset 是对的 —— 以 PR 正文说明的理
由为准,两条路都有效,别来回改。
库走 `skip-changeset` 标签、不走空 changeset(空 changeset 在本仓库滞留发布),含
读者可见生成产物时 dev 改选 changeset 亦对;objectui 无此标签 —— 空 frontmatter
changeset 即声明、即正确形态,⛔ 永不要求或铸出该标签,⛔ 别来回改。
- **就地修了范围外的邻接缺陷?**四条件逐条核(同缺陷类·机械·文件无他人认领·同门禁
族),再核 claim 文件面同轮已修订、PR 正文点名该修并载证据;缺一条即判 REWORK。
- **改动触及的每个包,`private: false` 即已发布 ⇒ 核 changeset 在不在**:判据是包
Expand All@@ -41,19 +40,16 @@
- **每个门禁读数先钉到 PR 的当前 head**:先读 PR 的 `head.sha`,再比对 run 的
`head_sha` —— 不一致的 run 是关于一个死提交的读数,绿与红**双向都不入账**(旧 head
的绿把「新推送未验」读成「消费者干净」,旧 head 的红把已修掉的缺陷重新挂回 PR)。
- **dev 本地跑的门禁并集,同样先钉 head —— 同一条纪律**:dev 的契约要求在**最后一
次提交之后**跑并集,并把那一跑的 `git rev-parse --short HEAD` 抄进报告与 PR 正
文;复核就读这个 HEAD 与 PR 当前 `head.sha` 比一次。对不上 ⇒ 那份「本地全绿」是
关于一棵死树的读数,同理**双向都不入账**;正文没抄 HEAD ⇒ 按**没有读数**处理,
以门禁 job 结论为准。复核轮之后又推了提交、报告里的 HEAD 没跟着动,正是它要抓的
那一形:补跑并集(至少棘轮族)再更报告 —— 棘轮恰恰是最后一次提交会动的那一族。
- **dev 本地跑的门禁并集,同样先钉 head —— 同一条纪律**:契约要求**最后一次提交之
后**跑并集、把 `git rev-parse --short HEAD` 抄进报告与 PR 正文;与 PR 当前
`head.sha` 比一次,对不上即死树读数、**双向都不入账**;没抄 ⇒ 按**没有读数**处理,
以门禁 job 结论为准。复核后又推提交而 HEAD 未动 ⇒ 补跑并集(至少棘轮族)再更报告。
- **被取代 head 上的 run 永不重跑**:非当前 head 上的 `cancelled` 结论零动作 ——
新推送自带全套 run;重跑烧一整个重量级周期,还能忠实复现已被当前 head 修掉的缺
陷、给绿 PR 挂上假红。
- **收益穿过必经边界之后还在吗?** 判据(不是每单都做):价值主张依赖某个下游组件
如实转发(HTTP 错误信封、序列化、日志汇聚、跨进程传输)⇒ 至少端到端验一次收益在
边界之后仍然存在 —— 精心写的拒收正文可能被 4xx 直通层整条替换,缺口在清单里不在
代码里。
- **收益穿过必经边界之后还在吗?** 判据(不是每单都做):价值主张依赖下游如实转发
(HTTP 错误信封、序列化、日志汇聚、跨进程传输)⇒ 至少端到端验一次收益在边界之后
仍在 —— 精心写的拒收正文可能被 4xx 直通层整条替换。
- **裁决实施 PR:旧立场的 pin 全仓翻转了吗?** grep 消费层(REST 信封测试、
objectql、runtime)确认旧立场零拷贝,**且**真正非法形状的拒收断言仍逐字在(派发
侧两句的对账)。
Expand All@@ -69,6 +65,10 @@
- **dev 验证过 issue 的前提吗?** `premise_still_valid: false` 是**再分诊输入**不
是失败 —— 证伪 issue(或 PM 自己的派发框架)的报告是好运行。dev 纠正 PM 要**当
众认**:更正落在 PR/issue 评论,错前提的正文另立跟进卡,⛔ 不静默丢弃。
- **报告清掉了它被要求停下的停条件?亲核证据再 ACCEPT** —— 与上条成对:证伪是好运
行,**清掉**停条件却不可自证(实测:dev 找到了停条件点名的消费者、推理着绕过去就
提交,靠一次无关停机才逼出复查)。判据是它报的证据面(搜了什么、找到什么)+ PM 自
己在 `origin/main` 上复核,⛔ 不接受结论散文 —— 绕过去的报告与守约的长得一样。
- **验收判据本身也可被证伪**:dev 用测量推翻字面判据、换上等价或更强的不变量门禁
= 好运行照 ACCEPT;但推翻过程必须写在 PR 正文并附 main 语料上的实测信噪比(误报
为零的证据),否则按 REWORK 要证据。
Expand Down
Loading