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
28 changes: 14 additions & 14 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 定时器默认在轮末挂、延时 ≤55 分钟;维护者明示可改。
- 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。
- 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。
- 分诊席跑普通直连会话、默认判断档。
- 代裁与契约复审等达档职责改派显式传 `model` 的契约复审档子代理。
- 分诊席跑普通直连会话、默认判断档;达档职责改派显式传 `model` 的契约复审档子代理。
- 子代理裁决逐份过转录核验采信,细则见 `references/contract-review.md`。
- 开轮互斥:fire 开始、首个写动作之前读四个读数,未收班活动任一未满一轮 ⇒ 自退。
- 读数一、二:最近的收班简报,与晚于它的最新开轮标记。
Expand All @@ -82,6 +81,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 或收班简报后卡分支有推送(逐卡 `git ls-remote`):推即认领,欠一条 `Claim:`。
- 读数四:本车道 `state=CLOSED` 按 `updated_at` 降序第一张卡的 `Claim:` session ID。
- 评审链与总监席的笔迹是跨席作业不算占席;读数三、四只增加自退、永不清座位。
- 总监席多场并行、无在任者:读数一、二与自退对它不成立;`domain:*` 席互斥照旧。
- 同 session 的 subagent dev 认领不触发自退,甄别靠分支。
- 收班简报是前任不再写的显式声明,是释放标记不是锁:简报即最新事件 ⇒ 立即坐席。
- 滞后标题是进场顺手修的半状态,⛔ 不是阻塞;简报点名的留守尾巴作围栏。
Expand Down Expand Up @@ -389,6 +389,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 代裁人工地板(恒交维护者):功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作。
- 人工地板同含:安全/权限边界;门禁削弱(降阈值、删必查项、抬 ratchet 上限、跳过测试)。
- 人工地板同含:花费/配额/舰队形态/默认模型档位;新增运行时第三方依赖。
- 唯一例外:`platform-readings.md` 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。
- 条件:席位验收评论逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排。
- 代裁车道只覆盖代码整理(行为不变的重构)与 bug 修复。
- 机械边界测试:改动扩大接受集或公开面 ⇒ 人工;拉回已声明契约 ⇒ 代裁车道。
- 置信门五条全立才可代裁:① 四棱同向;② 不在人工地板;③ 不推翻既有维护者裁决。
Expand Down Expand Up @@ -431,8 +433,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 引用读到的现状,⛔ 不引用裁决写作时的描述。
- 工作项面:卡片与分诊评论列的每条工作项逐条对树核验是否仍未完成,⛔ 不对卡核验。
- 每条工作项写进派发令时都是 dev 首先证伪的前提。
- 并行度以 `batch` 封顶,同批按构造文件面不相交;`priority:p0` 插队可超 `batch`。
- 批次独立性:一批内任两单不得可能碰同一个包/registry/barrel/spec schema;拿不准就串行。
- 并行度以 `batch` 封顶;同批独立性按文件面不相交判,⛔ 不按包;`priority:p0` 可超 `batch`。
- 同文件单跨轮硬串行;延后不是搁置,被延后那一刻就把已知的坑记到该 issue 上。
- 家族派发是范围澄清不是豁免:一个 dev 有意覆盖 N 张同区域已裁卡,可折叠为一次派发。
- 折叠准入五门全过才可折:① 同缺陷形态同修法(⛔ 不是同关键词/同子系统)。
Expand All @@ -441,19 +442,19 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- ⑤ 派发令点名排除清单:长得像家族而不是的成员及理由。
- fold-or-serial 必答:≥2 张排队卡共享热文件时,必须以五门为判据显式答折叠或串行。
- 答题处是串行队条目和/或链首认领;不答而默认串行是漏答。
- 维护者明示豁免同文件串行时,替代纪律四条:① 文件面申报到区域级
- 并行纪律四条(常规,非豁免):① 认领申报文件面到区域级,拿不准就串行
- ② 开 PR 前合一次 main;③ 兄弟卡落地后再合一次;④ 冲突交合并队列仲裁,⛔ 不手动排序。
- 豁免不外溢
- 文件面不相交只保证文本可合并;跨文件语义耦合由队列 CI 逮住,⛔ 不读作不可能冲突
- 阻塞解除后给延后单重新定价:派发前一单时带必答项。
- 必答项:你的改动让 #X 变简单、变难、变得不必要还是无影响。
- 派发后一单前用该回答重读它的选项与成本,⛔ 不沿用立单时那份。
- 跨车道简单阻塞项直接接手:本车道卡被他车道卡挡住,且阻塞项机械、规格清楚、S 级。
- 命中即被挡座位直接接手做掉,⛔ 不持续等待。
- 接手在他车道卡上走完整认领、尊重其热文件串行队、完工留收单注记。
- 带设计判断/语义权衡的仍归属地车道;接手细则见 `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 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。
- 该假设以机制假设身份进派发令,被证伪就在同一张卡公开更正。

Expand All @@ -475,7 +476,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 末行 Serial constraints cleared 是落在评论里的读数,同包在飞单不点名等于没查。
- 末行点名同包/同文件的前驱 PR 与在飞认领,及本卡 pin 断言的兄弟卡;无则 none。
- 本卡 pin 断言兄弟卡在改的行为 ⇒ 派发令注明,并在用例内预登记翻转触发词,⛔ 不修绿。
- 文件面对跨域例外单必填、普通单建议;分支名必须带 issue 号。
- 文件面申报到区域级,每单必填;分支名必须带 issue 号。
- 家族派发的折叠认领:共享分支按链首卡命名;每张成员卡各留认领评论并点名该分支。
- 折叠的一 PR 正文多行 `Fixes #<n>` 每成员一行、逐卡 commit;完整串行约束检查落链首认领。
- 限流不拆原子对:发不出评论就撤 assign 或不开始;配额尽则整对排队,永不留半个。
Expand Down Expand Up @@ -520,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 已载通用段砍掉。
Expand All @@ -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 卡逐卡判断是否上云。
Expand Down Expand Up @@ -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),优先于现场判断;只有人工能升级台账。
Expand Down
6 changes: 3 additions & 3 deletions .claude/skills/pm-dispatch/references/core-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
- 自设定时器只定下次唤醒、不定轮长;新 fire 到时上一轮未清空即接续,⛔ 不重开不重排。
- 分诊席跑普通直连会话,达档职责改派显式传档位的子代理;自排下次唤醒不超过 55 分钟。
- 开轮互斥读四个读数:收班简报、开轮标记、本车道最新他会话认领、最新关闭卡的认领。
- 未收班活动任一未满一个轮次即自退;有收班简报可直接坐席,坐席后先写开轮标记。
- 未收班活动任一未满一轮即自退,总监席除外;有收班简报即坐席,坐席后先写开轮标记。
## 全体座位的不变量
- 状态住 GitHub 标签、assignee、正文行与座位贴;⛔ 本地零状态;循环须能从新会话恢复。
- PM ⛔ 不写文件也不写代码,唯一例外是维护者逐 PR 明示授权的 `.claude/` 内部工具 PR。
Expand Down Expand Up @@ -103,10 +103,10 @@
- 每轮巡检先读半状态巡查锚上点名本车道的行并逐行处置,未处置 ⛔ 不开新派发。
- 候选整车道一次读全再本地求交,每张读全文与全部评论并把裁决逐字引入派发词。
- 派发前做前提过时检查,动作面、卡引用面与工作项面三面都对树核验。
- 一批内任两单不得碰同一个包、注册表、barrel 或 spec schema;同文件的单跨轮硬串行
- 同批独立性按文件面不相交判,⛔ 不按包;同文件硬串行,冲突交合并队列仲裁 ⛔ 不手排
- 家族派发须过五门:同缺陷同修法、同包区域、成员皆已裁、逐成员可核、点名排除清单。
- 两张以上排队卡共享热文件时,必须以五门为判据显式回答折叠还是串行。
- 取卡全序:插队卡、有下游依赖者的卡、发版板上项、缺陷卡、其余,同级按卡龄
- 取卡全序:插队卡、有下游依赖者的卡、板上项、p1、p2、p3、无级;同级缺陷卡先再卡龄
- 认领原子对:一次标签写入完成认领与状态对调,随后留 `Claim:` 开头的评论并重读全线程。
- 更早的他会话认领即让行并交出已诊断的一切;认领逾一天且无合并证据即疑死。
- 回收前先救工作树,有提交的活分支 ⛔ 永不回收。
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/seat-post-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
## 贴的四段与派生视图

- 四段的现值由在任座位在写侧刷新时收缩;⛔ 岗位说明 PR 不代改贴正文。
- 标题即状态板,固定格式 `[PM seat] <座位名> — <状态>`。
- 标题即状态板,固定格式 `[PM seat] <座位名> — <状态>`;`label:pm:seat` 列表页即舰队状态板
- 状态词表:`🟢 <github-login>` 在任、`🟢 Routine`、`⏳ vacant`、`⏸️ paused`。
- `label:pm:seat` 的列表页因此就是全舰队状态板。
- assignee = 在任 PM 的 GitHub 账号,退场或回收时摘除;无 assignee = 空缺,与标题互为校验。
- 例外:Routine 座位的 bot 身份通常不可被 assign,以标题为准。
- 多场席(总监):`🟢` 后写召唤账号,状态块逐场一行(会话 ID + 锚);无在任者、无接管。
- 当前 PM 段登记三元:GitHub 账号(`get_me` 自查)、会话 ID 或 Routine ID、上任时刻。
- 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。
- 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。
Expand Down
15 changes: 9 additions & 6 deletions scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading