From 95765ceea679e5f52978ac0b5a6325cefe5ad052 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 7 Sep 2026 02:56:28 +0000 Subject: [PATCH 1/2] docs(pm-dispatch): batch independence by file surface, priority in the selection order, the readings-ledger ceiling exception, the suite-event head re-read, the director carve-out Five rules-only folds under unchanged line pins (SKILL.md 811, core-rules.md 150, seat-post-protocol.md 91); every addition is paid by a same-file fold that deletes a superseded, dead or duplicated line. The ratchet map's director-charter comment no longer claims a quotation the charter file stopped carrying. Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox Co-authored-by: Claude --- .claude/skills/pm-dispatch/SKILL.md | 24 +++++++++---------- .../pm-dispatch/references/core-rules.md | 6 ++--- .../references/seat-post-protocol.md | 4 ++-- scripts/pm/check-skill-line-ratchet.mjs | 15 +++++++----- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 46f0e57566..3d513b224d 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -72,8 +72,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 定时器默认在轮末挂、延时 ≤55 分钟;维护者明示可改。 - 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。 - 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。 -- 分诊席跑普通直连会话、默认判断档。 -- 代裁与契约复审等达档职责改派显式传 `model` 的契约复审档子代理。 +- 分诊席跑普通直连会话、默认判断档;达档职责改派显式传 `model` 的契约复审档子代理。 - 子代理裁决逐份过转录核验采信,细则见 `references/contract-review.md`。 - 开轮互斥:fire 开始、首个写动作之前读四个读数,未收班活动任一未满一轮 ⇒ 自退。 - 读数一、二:最近的收班简报,与晚于它的最新开轮标记。 @@ -82,6 +81,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 或收班简报后卡分支有推送(逐卡 `git ls-remote`):推即认领,欠一条 `Claim:`。 - 读数四:本车道 `state=CLOSED` 按 `updated_at` 降序第一张卡的 `Claim:` session ID。 - 评审链与总监席的笔迹是跨席作业不算占席;读数三、四只增加自退、永不清座位。 +- 总监席多场并行、无在任者:读数一、二与自退对它不成立;`domain:*` 席互斥照旧。 - 同 session 的 subagent dev 认领不触发自退,甄别靠分支。 - 收班简报是前任不再写的显式声明,是释放标记不是锁:简报即最新事件 ⇒ 立即坐席。 - 滞后标题是进场顺手修的半状态,⛔ 不是阻塞;简报点名的留守尾巴作围栏。 @@ -389,6 +389,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 代裁人工地板(恒交维护者):功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作。 - 人工地板同含:安全/权限边界;门禁削弱(降阈值、删必查项、抬 ratchet 上限、跳过测试)。 - 人工地板同含:花费/配额/舰队形态/默认模型档位;新增运行时第三方依赖。 +- 唯一例外:`platform-readings.md` 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。 +- 条件:席位验收评论逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排。 - 代裁车道只覆盖代码整理(行为不变的重构)与 bug 修复。 - 机械边界测试:改动扩大接受集或公开面 ⇒ 人工;拉回已声明契约 ⇒ 代裁车道。 - 置信门五条全立才可代裁:① 四棱同向;② 不在人工地板;③ 不推翻既有维护者裁决。 @@ -431,8 +433,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 引用读到的现状,⛔ 不引用裁决写作时的描述。 - 工作项面:卡片与分诊评论列的每条工作项逐条对树核验是否仍未完成,⛔ 不对卡核验。 - 每条工作项写进派发令时都是 dev 首先证伪的前提。 -- 并行度以 `batch` 封顶,同批按构造文件面不相交;`priority:p0` 插队可超 `batch`。 -- 批次独立性:一批内任两单不得可能碰同一个包/registry/barrel/spec schema;拿不准就串行。 +- 并行度以 `batch` 封顶;同批独立性按文件面不相交判,⛔ 不按包;`priority:p0` 可超 `batch`。 - 同文件单跨轮硬串行;延后不是搁置,被延后那一刻就把已知的坑记到该 issue 上。 - 家族派发是范围澄清不是豁免:一个 dev 有意覆盖 N 张同区域已裁卡,可折叠为一次派发。 - 折叠准入五门全过才可折:① 同缺陷形态同修法(⛔ 不是同关键词/同子系统)。 @@ -441,9 +442,9 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - ⑤ 派发令点名排除清单:长得像家族而不是的成员及理由。 - fold-or-serial 必答:≥2 张排队卡共享热文件时,必须以五门为判据显式答折叠或串行。 - 答题处是串行队条目和/或链首认领;不答而默认串行是漏答。 -- 维护者明示豁免同文件串行时,替代纪律四条:① 文件面申报到区域级。 +- 并行纪律四条(常规,非豁免):① 认领申报文件面到区域级,拿不准就串行。 - ② 开 PR 前合一次 main;③ 兄弟卡落地后再合一次;④ 冲突交合并队列仲裁,⛔ 不手动排序。 -- 豁免不外溢。 +- 文件面不相交只保证文本可合并;跨文件语义耦合由队列 CI 逮住,⛔ 不读作不可能冲突。 - 阻塞解除后给延后单重新定价:派发前一单时带必答项。 - 必答项:你的改动让 #X 变简单、变难、变得不必要还是无影响。 - 派发后一单前用该回答重读它的选项与成本,⛔ 不沿用立单时那份。 @@ -451,9 +452,9 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 命中即被挡座位直接接手做掉,⛔ 不持续等待。 - 接手在他车道卡上走完整认领、尊重其热文件串行队、完工留收单注记。 - 带设计判断/语义权衡的仍归属地车道;接手细则见 `references/dispatch-runbook.md`。 -- 取卡全序:`priority:p0` 插队 > `pm:blocking` > `target:` 板上项 > type `Bug` > 其余;同级按卡龄。 +- 取卡全序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄。 - `pm:blocking` 级内先按解锁扇出(从 `Blocked-by:` 反向索引现算,⛔ 扇出数不落标签)。 -- 全序每级取既有信号现读/现算,零逐卡维护;优先是排序不是豁免。 +- 全序每级取既有信号现读/现算,零逐卡维护;优先是排序不是豁免;无级卡轮报记分诊缺口。 - 解锁那一刻 PM 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。 - 该假设以机制假设身份进派发令,被证伪就在同一张卡公开更正。 @@ -475,7 +476,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 末行 Serial constraints cleared 是落在评论里的读数,同包在飞单不点名等于没查。 - 末行点名同包/同文件的前驱 PR 与在飞认领,及本卡 pin 断言的兄弟卡;无则 none。 - 本卡 pin 断言兄弟卡在改的行为 ⇒ 派发令注明,并在用例内预登记翻转触发词,⛔ 不修绿。 -- 文件面对跨域例外单必填、普通单建议;分支名必须带 issue 号。 +- 文件面申报到区域级,每单必填;分支名必须带 issue 号。 - 家族派发的折叠认领:共享分支按链首卡命名;每张成员卡各留认领评论并点名该分支。 - 折叠的一 PR 正文多行 `Fixes #` 每成员一行、逐卡 commit;完整串行约束检查落链首认领。 - 限流不拆原子对:发不出评论就撤 assign 或不开始;配额尽则整对排队,永不留半个。 @@ -548,7 +549,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 拒收用例 ⇒ `code`+`status` 最低断言。 - 过滤/谓词语义 ⇒ 编译面清单逐面申报,⛔ 静默略过。 - 前提先行写明:issue 正文是线索不是规格。 -- `premise_still_valid: false` + 无 PR 是合法且常常有价值的交付。 - 资源与后端:S 级机械 + M ⇒ `mode:subagent`;S 级但不机械(判断面在设计不在门禁)按 M 待遇。 - `mode:cloud` 只保留给 L/XL、必须活过 PM 会话的工作、浏览器/dogfood 验证。 - build 重的 M 卡逐卡判断是否上云。 @@ -653,10 +653,10 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 默认分支 push 即触发对外部署的仓,只在验证层存在时才合并;无验证层 ⛔ 不合并。 - 验证层 = 部署以 CI 为闸、发布后探测线上面、失败自动回滚并立卡。 - 该类仓的落地判据是已发布且探测通过,⛔ 不是 MERGED;跟到发布为止。 -- 合并后工作流不在任何 PR 的检查清单上,读 PR 检查的规则对它全盲。 -- 该类仓的部署工作流按独立检查类登记,与 PR 检查分开读。 +- 合并后工作流不在 PR 检查清单上,读 PR 检查的规则对它全盲;按独立检查类登记分开读。 - 人闸不是验证层的替代:答不了会不会坏的人闸只买延迟,⛔ 不以人闸代替探测。 - 首次入队 flip 定点、MERGED 两读数、关键 PR 订阅与退订/归档细则见 landing-operations B。 +- 信任 suite/check 事件前先重读 PR 对象取 head:检查读数绑定该 head,⛔ 不绑事件带的 SHA。 - 落地记账:座位贴落地清单即账本,逐轮即时记;确需全仓核对时首选 `head:claude/` 精确过滤。 - 红/踢出处置在同一落地窗口内做:机器输入是 merge-queue triage workflow 的分诊评论。 - 判据唯一来源是签名台账(锚点 issue),优先于现场判断;只有人工能升级台账。 diff --git a/.claude/skills/pm-dispatch/references/core-rules.md b/.claude/skills/pm-dispatch/references/core-rules.md index 4f8c46a9ae..14ae2be786 100644 --- a/.claude/skills/pm-dispatch/references/core-rules.md +++ b/.claude/skills/pm-dispatch/references/core-rules.md @@ -17,7 +17,7 @@ - 自设定时器只定下次唤醒、不定轮长;新 fire 到时上一轮未清空即接续,⛔ 不重开不重排。 - 分诊席跑普通直连会话,达档职责改派显式传档位的子代理;自排下次唤醒不超过 55 分钟。 - 开轮互斥读四个读数:收班简报、开轮标记、本车道最新他会话认领、最新关闭卡的认领。 -- 未收班活动任一未满一个轮次即自退;有收班简报可直接坐席,坐席后先写开轮标记。 +- 未收班活动任一未满一轮即自退,总监席除外;有收班简报即坐席,坐席后先写开轮标记。 ## 全体座位的不变量 - 状态住 GitHub 标签、assignee、正文行与座位贴;⛔ 本地零状态;循环须能从新会话恢复。 - PM ⛔ 不写文件也不写代码,唯一例外是维护者逐 PR 明示授权的 `.claude/` 内部工具 PR。 @@ -103,10 +103,10 @@ - 每轮巡检先读半状态巡查锚上点名本车道的行并逐行处置,未处置 ⛔ 不开新派发。 - 候选整车道一次读全再本地求交,每张读全文与全部评论并把裁决逐字引入派发词。 - 派发前做前提过时检查,动作面、卡引用面与工作项面三面都对树核验。 -- 一批内任两单不得碰同一个包、注册表、barrel 或 spec schema;同文件的单跨轮硬串行。 +- 同批独立性按文件面不相交判,⛔ 不按包;同文件硬串行,冲突交合并队列仲裁 ⛔ 不手排。 - 家族派发须过五门:同缺陷同修法、同包区域、成员皆已裁、逐成员可核、点名排除清单。 - 两张以上排队卡共享热文件时,必须以五门为判据显式回答折叠还是串行。 -- 取卡全序:插队卡、有下游依赖者的卡、发版板上项、缺陷卡、其余,同级按卡龄。 +- 取卡全序:插队卡、有下游依赖者的卡、板上项、p1、p2、p3、无级;同级缺陷卡先再卡龄。 - 认领原子对:一次标签写入完成认领与状态对调,随后留 `Claim:` 开头的评论并重读全线程。 - 更早的他会话认领即让行并交出已诊断的一切;认领逾一天且无合并证据即疑死。 - 回收前先救工作树,有提交的活分支 ⛔ 永不回收。 diff --git a/.claude/skills/pm-dispatch/references/seat-post-protocol.md b/.claude/skills/pm-dispatch/references/seat-post-protocol.md index 833db0091c..d8560b0622 100644 --- a/.claude/skills/pm-dispatch/references/seat-post-protocol.md +++ b/.claude/skills/pm-dispatch/references/seat-post-protocol.md @@ -5,11 +5,11 @@ ## 贴的四段与派生视图 - 四段的现值由在任座位在写侧刷新时收缩;⛔ 岗位说明 PR 不代改贴正文。 -- 标题即状态板,固定格式 `[PM seat] <座位名> — <状态>`。 +- 标题即状态板,固定格式 `[PM seat] <座位名> — <状态>`;`label:pm:seat` 列表页即舰队状态板。 - 状态词表:`🟢 ` 在任、`🟢 Routine`、`⏳ vacant`、`⏸️ paused`。 -- `label:pm:seat` 的列表页因此就是全舰队状态板。 - assignee = 在任 PM 的 GitHub 账号,退场或回收时摘除;无 assignee = 空缺,与标题互为校验。 - 例外:Routine 座位的 bot 身份通常不可被 assign,以标题为准。 +- 多场席(总监):`🟢` 后写召唤账号,状态块逐场一行(会话 ID + 锚);无在任者、无接管。 - 当前 PM 段登记三元:GitHub 账号(`get_me` 自查)、会话 ID 或 Routine ID、上任时刻。 - 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。 - 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。 diff --git a/scripts/pm/check-skill-line-ratchet.mjs b/scripts/pm/check-skill-line-ratchet.mjs index 823331f972..68dac3c0d9 100644 --- a/scripts/pm/check-skill-line-ratchet.mjs +++ b/scripts/pm/check-skill-line-ratchet.mjs @@ -746,12 +746,15 @@ export const CEILINGS = new Map([ // ruling citations and incident narrative left; every rule stayed. Landed count, // headroom 0, same convention (lowering is always legitimate). ['.claude/skills/pm-dispatch/references/lanes/hotcrm.md', 53], - // Project Director seat charter (maintainer ruling 2026-08-27, verbatim in the - // file: 「项目总监 由人工定期指挥,负责处理 contract-review 类别的和需要决裁的。」) — a - // human-invoked seat owning the contract-review chain, the adjudication duty and - // the maintainer-action ledger. A lane charter is read per seat session like - // every entry above. Set at the landed line count read from this ratchet's own - // run (headroom 0, same convention as the entries above). + // Project Director seat charter (maintainer ruling 2026-08-27, verbatim: + // 「项目总监 由人工定期指挥,负责处理 contract-review 类别的和需要决裁的。」; the file + // carries it as a rule line since the rules-only rewrite, not as this quotation) + // — a human-invoked seat holding the contract-review after-audit, the + // adjudication duty, the maintainer-action ledger and the governed-merge audit, + // with any number of summons running concurrently: no occupant, no handover. A + // lane charter is read per seat session like every entry above. Set at the + // landed line count read from this ratchet's own run (headroom 0, same + // convention as the entries above). // 75 → 77: maintainer-directed placement (2026-08-27, verbatim: 「创业阶段不渐进 // 应该写入项目总监skills」) — the no-gradualism standing rule lands here by that // directive; the file sat at headroom 0 with no losslessly compressible slack in From 1c069352bd28af64f57c5715fa76fe58f3285794 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 7 Sep 2026 03:15:55 +0000 Subject: [PATCH 2/2] docs(pm-dispatch): a dispatch brief quotes a card's precise claim verbatim One more rules-only line in the dispatch-brief rules, paid by folding the two brief lines that state one rule (the dev reads the whole card and self-checks its completeness), as the core-rules digest already holds them. SKILL.md stays at its pin. Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox Co-authored-by: Claude --- .claude/skills/pm-dispatch/SKILL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 3d513b224d..760bfe9602 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -521,9 +521,9 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 档位逐次派发显式传参,永不省略。 - 解析顺序、pin 语义与允许名单回退陷阱以 os-dev 定义 frontmatter 注释为权威。 - 分诊 suggestion 行是输入不是决定,不采纳给理由。 -- 派发词 ⛔ 默认不整段粘贴 issue 正文:让 dev 自己读 GitHub 全文与全部评论。 -- 派发词必须要求 dev 自查正文完整性。 +- 派发词 ⛔ 默认不整段粘贴 issue 正文:让 dev 自己读全文与全部评论并自查正文完整性。 - 派发词只带增量,构造细则与条款原文见 `references/dispatch-runbook.md`。 +- 派发词引卡片的精确断言(schema 臂、判据、原文)一律逐字,⛔ 不释义转述。 - 三分区:裁决(不可重裁)/ PM 机制假设(须实测,鼓励证伪)/ PM 建议的路线(可选,实测优先)。 - 凡我觉得可以这样的一律降到第三区;⛔ 不把假设写成裁决。 - 标准非协商条款 ⛔ 不抄进派发词:hook 已机械强制段与 os-dev.md 已载通用段砍掉。