Skip to content
Merged
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
28 changes: 14 additions & 14 deletions .claude/skills/pm-dispatch/references/review-checklist.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,14 +7,10 @@
当合并应当关卡**;只落地了可实施一半(另一半在决策箱或按范围排除)⇒ 必须 `Part of
#<n>`,否则合并会静默关掉一张正躺在决策箱里的卡,而 `needs-user-decision` 的收件
箱过滤只看 open issue。翻 ready 之前亲核首行,别只信报告。
- **闭合关键词两读:翻 ready 前扫正文,合并后读每张相关卡的 `closed_by_pull_requests`**(body 与
commit message 分开解析,细则见平台读数事实表):⛔ 永不把它放在另一张 open 卡编号旁 ——
解析器不理会否定句,为防误关而写的那句恰是执行误关的那句;半状态巡查器只巡开着的
PR,这一扫是合并前唯一的人工关口。合并后确认应关的关了、**没有别的卡被一并关掉**
—— 误关的卡以 completed 对「只看 open」的过滤隐身,这一读是唯一兜得住的机械检查。
- **`Part of` 收口的卡不会自动关,`pm:dispatched` 必须手工摘**(动作与评论要件见
入队与落地细则 B):ACCEPT 一张 `Part of` PR 的那一刻就把这步记进落地待办,
⛔ 不留给「下次巡检看到再说」—— 漏摘的标签让在飞视图数进一张无人认领的开卡。
- **闭合关键词两读**:翻 ready 前亲扫正文 —— 合并前唯一的人工关口(⛔ 关键词永不挨着另
一张 open 卡编号;解析器不理会否定句);合并后那一读见落地细则,解析事实见平台读数。
- **`Part of` 收口的卡不会自动关,`pm:dispatched` 必须手工摘**(动作要件见落地细则 B):
ACCEPT 那一刻记进落地待办,⛔ 不留给下次巡检 —— 漏摘让在飞视图多算一张无主开卡。
- **范围检查**(取 changed files,⛔ 不看报告自述):无 `content/docs/releases/` 改
动、用户可见改动有 changeset、无与卡无关的文件。Tests/docs-only 按仓库分流:本仓
库走 `skip-changeset` 标签、不走空 changeset(空 changeset 在本仓库滞留发布),含
Expand All@@ -28,6 +24,12 @@
布,看起来像修好了,比不合更糟。
- **测试证据**要有真实命令与通过输出,不是一句 tests pass。**测量类交付先看阳性对
照**:对照本身失败 ⇒ 该读数记 INCONCLUSIVE,⛔ 不把它的「绿」当被测风险的证据入账。
- **引 entry `.d.ts` 逐字节相同,必须同块带阳性对照**:该读数只判**名字集**(增删再导
出名会移动 barrel 字节),对 barrel 已转发符号的**形状**恒无效 —— `export *` 与
`export type { X } from` 都不复述形状。判据:同块点名**声明**该符号的模块那份移动了的
产物,或本会移动它的具名探针;缺则记 INCONCLUSIVE。实测 2026-08-24(清 dist 与
tsbuildinfo 的三腿重建):声明包 `dist/base.d.ts` 随探针移动又移回,转发文件与 entry
barrel 三腿全同;同日三处误用。
- **报告 `tests`/证据里有 git 本可回答的 API 读吗?**(dev 契约的读序是 git → REST →
MCP/GraphQL)判据:MCP `list_issues`/`search_issues` 一类 GraphQL 读,或重跑派发词已下发的去重读数
—— fetch 之后本地 git 就答得了文件内容、diff、提交史与分支态。⛔ 不因此判 REWORK,ACCEPT
Expand All@@ -39,16 +41,14 @@
款),各仓真绿跑法与 CI 日志看不见的门禁见 `true-green.md`。收敛期转红走补丁轮 (SendMessage
续派原 dev —— 那是这笔交换已付过的价钱,不是 REWORK 的理由;红着合并才是)。重量级卡
可在派发令显式写「本单等 CI」。
- **每个门禁读数先钉到 PR 的当前 head**:先读 PR 的 `head.sha`,再比对 run 的
`head_sha` —— 不一致的 run 是关于一个死提交的读数,绿与红**双向都不入账**(旧 head
的绿把「新推送未验」读成「消费者干净」,旧 head 的红把已修掉的缺陷重新挂回 PR)。
- **每个门禁读数先钉到 PR 的当前 head**:比对 run `head_sha` 与 PR `head.sha` —— 不一致
的是死提交读数,绿与红**双向都不入账**(旧 head 的绿把「新推送未验」读成「消费者干
净」,旧 head 的红把已修掉的缺陷重新挂回 PR);⛔ 非当前 head 上的 `cancelled` 零动作、
永不重跑 —— 新推送自带全套 run,重跑只会给绿 PR 挂一个已修缺陷的假红。
- **dev 本地跑的门禁并集,同样先钉 head —— 同一条纪律**:契约要求**最后一次提交之
后**跑并集、把 `git rev-parse --short HEAD` 抄进报告与 PR 正文;与 PR 当前
`head.sha` 比一次,对不上即死树读数、**双向都不入账**;没抄 ⇒ 按**没有读数**处理,以门禁
job 结论为准。复核后又推提交而 HEAD 未动 ⇒ 补跑并集(至少棘轮族)再更报告。
- **被取代 head 上的 run 永不重跑**:非当前 head 上的 `cancelled` 结论零动作 ——
新推送自带全套 run;重跑烧一整个重量级周期,还能忠实复现已被当前 head 修掉的缺
陷、给绿 PR 挂上假红。
- **收益穿过必经边界之后还在吗?** 判据(不是每单都做):价值主张依赖下游如实转发
(HTTP 错误信封、序列化、日志汇聚、跨进程传输)⇒ 至少端到端验一次收益在边界之后
仍在 —— 精心写的拒收正文可能被 4xx 直通层整条替换。
Expand Down
Loading