From 6f99bfb760e346b2130100d17c747bfe268108f8 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 29 Aug 2026 05:10:13 +0000 Subject: [PATCH] docs(pm-dispatch): require a positive control and short anchors in Re-check greps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A card's `Re-check` grep quotes the author's full remembered sentence, but the same sentence is line-wrapped in the source file, so `git grep` matches nothing and the next reader reads that zero as "already gone, nothing to fix". Measured three times in one lane, plus a fourth defect stacked on the same command: a verbatim quotation whose case did not match the tree. The rule lands on the filing side, in the 落卡与裁决记录细则 section that holds the references detail for the main file's "每条前提行自带一条 re-check 命令": every grep carries a positive control from the same file, and a zero without a passing control is recorded as 没读到 rather than 不存在. The control is the one remedy that covers BOTH defects, because it does not ask the author to predict which mistake they made. Anchors take the shortest non-wrapping fragment. Net-0 against the file's ratchet, paid by three cuts whose content survives at a named source; no re-wrap harvesting. Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq Co-authored-by: Claude --- .../pm-dispatch/references/dispatch-runbook.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index dce62f2d00..6791999446 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -105,15 +105,18 @@ fire 附带一次: - **裁决记录四件补遗**(四件本体在主文件;原子、记录座位全责、维护者裁与代裁同规):① 鲜 - 度门可内联声明分歧代替调和正文,对过期正文记录的裁决按过期论;② 结果态 = - `pm:queue`/`pm:blocked`/`pm:on-hold`/关闭,永不留挂;④ 已可判定的就地解决,⛔ 不留给未 - 来静默触发。 + 度门可内联声明分歧代替调和正文,对过期正文记录的裁决按过期论。 - **机械两旗(report-only,归半状态巡查;接线是另一张卡的事,⛔ 不随协议文本改脚本)**:旗 一 —— open 卡标题带决策标记或线程含裁决记录、却仍挂 `needs-user-decision`;旗二 —— `pm:blocked` 卡的 `Blocked-by:` 目标已关闭。「交付了一半的阻塞」是判断不是 grep,归四件 之③,⛔ 不进机械旗。 - **落卡分析模板 + 业务写法六项**(中文,2026-08-19 裁;业务角度,2026-08-20 裁):模板骨 架、六项写法要求与四棱块固定形状全部细则移 `references/decision-analysis.md`。 +- **卡上 re-check 命令两条硬线**(2026-08-26 三例实测:注释同一句按宽度折行,`git grep` 逐行匹配 + 即返回零 —— 读者把这个零读成「那句话已经不在了」;同批另一条逐字命令又因大小写 + 少 6 个文件):① **每条 grep 自带阳性对照** —— 同文件里确定存在、且 ⛔ 绝不是被测词 + 子串的一个词;对照未通过的零记「没读到」,⛔ 不记「不存在」(对照不要求作者预知自己 + 会犯哪一类错);② **锚点取最短的不折行片段**,⛔ 不抄脑中那整句。 - **行文纪律**:出处一行(日期 + 原话);实测叙事至多压成一行 —— 故事住在卡上,不进操作 文本。 @@ -242,8 +245,7 @@ os-dev 定义。 的 GraphQL 读):① **门禁清单**单班之内即过期;全 farm 归 CI 跑一次,⛔ 不让 dev 枚举全 farm;点 名单当天现取仍会漏(实测漏的门恰被 改动打红过)—— dev 对实际改动路径重取补跑。② **去重/看板读数**:取一次(查询式 + 时间戳)整批共用,派发令写「当既有事实 - 用,只复核其后的增量,⛔ 不重跑」。dev 侧对价住 os-dev 定义。**pnpm 10.31 起 `install --workspace-concurrency` 被拒**(只对跑脚本的命令合 - 法),装依赖命令别带它。 + 用,只复核其后的增量,⛔ 不重跑」。dev 侧对价住 os-dev 定义。 - **文件面两句原文**:「预期落点是 X;若实测表明真正的生产者在别包,报备后按生产者侧修(落点与理由写进报告和 PR 正文),⛔ 不 在消费者侧打补丁」—— 只写一个路径名,是要求 dev 在守约与修对之间二选一;跨包常等于跨车道,PM 事后补跨座位声明。 - **Same-day churn 行与在飞重叠**:派发时 `git log origin/main --oneline -20 -- ` 见当天合并 ⇒ 加一行「 @@ -259,9 +261,7 @@ os-dev 定义。 - **条件性标准条款,命中判据才抄,不命中就省掉别硬套**: - 多实现面组件(同一契约 ≥2 个实现面)⇒ 「测试放在**未来的分叉会被抓住的地方**,进共享一致性覆盖,不是独立测试文 件」;不变量形:与 `find()` 给出相同行集,或以 `INVALID_FILTER` 拒收 —— 不允许有第三种、更安静的答案。 - - 新增/改写拒收类用例 ⇒ 「最低断言错误的 `code` 与 `status`(ADR-0112 信封); `toThrow()` / - `rejects.toThrow()` 单独使用不构成拒收测试;措辞本身是契约时首句断言**加在** `code`+`status` 之上;只约束新 - 写/改写的用例,不回填存量」。 + - 新增/改写拒收类用例 ⇒ 信封断言本体已是 os-dev 标准条款,派发令只补边界:「只约束新写/改写的用例,不回填存量」。 - 改过滤/谓词语义 ⇒ 把 `references/compile-surfaces.md` 的编译面清单**按其复核串重验后逐面 抄进派发令**(⛔ 不 凭记忆),并带:「每一面都必须在 PR 正文有一个结论:已改 / 本就合规(证据)/ 明确不在范围(理由);⛔ 静默略过 ——