Skip to content
14 changes: 7 additions & 7 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 定时器文本 ⛔ 不写结论、不含未经重读即可执行的祈使句。
- 放行认门禁 job 的结论(`completed: success`),⛔ 不认聚合读数。
- advisory 门禁红着进 main 是共享损伤,任何车道发现都立即止血并立单,见 landing-operations B。
- 仪器纪律(硬门禁面、只报告面、新增授权、工具位)见 `references/instrument-discipline.md`。
- dev 自己死了不等于维护者中止:子代理消失是正常死法,走接管(见认领节)。
- 维护者中止只认原话或宿主回报 stopped by the user,⛔ 不据推断立无重启条件的门。
- 共享基础设施修复入队前按症状复查 main,不按 issue 号。
Expand Down Expand Up @@ -354,6 +355,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- (c) 元数据 = 由写它的人以外的人存储并再作者化的键:React prop 不是,存储的视图配置是。
- 把作者引向运行时会兑现却让事情更糟的元数据的警告不在 (c) 内;记为边界,⛔ 不扩类。
- (a) 须今天可达,(c) 须具名生产者;观察、休眠、零拉动 ⛔ 不立卡、不进汇总卡、无配额。
- 只报告的仪器,报错不配 dev:猜意图的只印读数,误报席位一句推翻,⛔ 不立卡不派 dev。
- 判「进 Acceptance notes」前先问:哪一个 PR 会碰到这个文件?说得出具体 PR 或人 ⇒ 写进去。
- ⛔ 说不出(`.changeset/*`、无人在改的文档页、生成物、已扫完的批次)⇒ 兜底不成立。
- 仍然关,但关闭理由必须写明「承接者:无」。
Expand Down Expand Up @@ -427,8 +429,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

## 执行座位职责

- 每轮巡检第一判据:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)。
- 锚上点名本道卡/PR/座位贴的 H 行逐行处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- 半状态巡查按需跑(分诊席每日对账可调),H 行是读数不是前提;⛔ 不因锚行停派发。

### 候选与批次

Expand Down Expand Up @@ -529,7 +530,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 机械放宽判别门禁落地前,入队前的席内契约复核是方向自述的补偿控制。
- 豁免够不到的地板只有维护者裁决能设。
- 席位档策略:skills 车道外的执行席与分诊席默认判断档会话。
- 条款②复核按车道:spec 与 skills 席达档席内审;未达档 ⛔ 不自审,起隔离达档子代理。
- 条款②自审资格按车道:spec 与 skills 席达档席内审;未达档 ⛔ 不自审,起隔离达档子代理。
- 降档出口两条:额度耗尽豁免,与主动预降(余量吃紧可预先降档)。
- 额度耗尽豁免仅当契约复审档实测不可用才落默认判断档,⛔ 不再往下。
- 降档的档位与理由记入认领评论 Container & model 行;档位逐次派发显式传参,永不省略。
Expand Down Expand Up @@ -629,8 +630,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- ④ 轮次报告单列 awaiting a human merge。
- 已入队才读到本条 ⇒ 转 draft 与 disable 都做;出队以阳性探针答,ref 缺席只旁证。
- skills 车道自有 PR:纯代码面如 `scripts/pm/` 由本席按达档自审(清单不减)后落地。
- 受管面两层:Tier H(规则层)= `AGENTS.md`+`CLAUDE.md`+`docs/adr/**`+`docs/NORTH-STAR.md`+发布 `skills/**`。
- Tier S = `.claude/**` 全树;Tier H 四件套等人批;Tier S 经席内达档复核 PASS 在案后 ready → 入队。
- 受管面两层:Tier S = `.claude/**` 全树,余皆 Tier H 等人批;S 经达档复核 PASS 后 ready → 入队。
- 路径面干净的才转 ready → 入队;队列是唯一被认可的落地路径,⛔ 永不队列外合并。
- 入队资格:每 check 绿或预期 skip,⛔ 非必查子集;名单 check-expected-skips.mjs 只判 objectstack。
- 非必查红是真缺陷或坏门,归 PM 入队前处置;第三种按设计而红,三条全立才可带红入队:
Expand All @@ -644,13 +644,13 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- `--tier` 嫌疑行是提示非裁定;双肢命中任一 ⇒ 无达档条款②复核 PASS 在案 ⛔ 禁止入队。
- 路径肢 = diff 触及契约面 `packages/spec/src/**`,含 error-code-ledger 与 `*.zod.ts` 契约 schema。
- 声明肢 = 认领评论声明 `Clause-②: yes`,与路径无关;错误的 `no` 是可审计的假申报。
- 交付后复核只 spec 与 skills 车道欠,每轮达档:席内审或起子代理;双肢命中即 spec 车道。
- 交付后复核按面欠 ⛔ 不按车道(五面见 `references/contract-review.md`);双肢命中即 spec 车道。
- 子代理起不来 ⇒ 复核缺席,PR 留 draft 队列外等档;唯一旁路是维护者亲审,逐次为准。
- PASS ⇒ 同席剥标并引记录、ready、auto-merge;FAIL ⇒ 补丁轮;⛔ 免复核不放行。
- 真正设计分叉照旧进决策箱,席内复核 ⛔ 不替代维护者裁定。
- 外部评审链降为可选事后审计,非放行前提。
- `needs:contract-review`(恒英文)由席位同笔挂:PR 一现即挂 PR;报告先到则先挂卡。
- `Clause-②: yes` 认领同笔卡上挂标;开 PR `PM_SWEEP_REPO=仓 check-clause2-carriers --pair N` 0 才请审
- `Clause-②: yes` 认领同笔卡上挂标;开 PR 跑 `--pair N`:只确定性行红才挡请审,C5 只印读数
- 挂标后复核完成前短暂停靠;⛔ 不前瞻预挂。
- 契约复核的适用面、载体纪律、资格与归属、降档保险丝见 `references/contract-review.md`。
- 碰生成物的 PR 入队前先同步 + 整体重生成:四步序 `bash scripts/pm/os-regen-merge.sh`。
Expand Down
22 changes: 11 additions & 11 deletions .claude/skills/pm-dispatch/references/contract-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,38 @@
- 机械地板 claim 时可查树:新导出符号或已发布载荷上的新键恒 `yes`,锁达档契约复核。
- conformance 类 ⛔ 不机械化:填充已声明字段、在两个已发布码之间重选输入类都需判断。
- claim 拿不准 ⇒ 按 `yes` 挂标走达档契约复核;⛔ 不建全量分类学与 claim 时决策程序。
- PR 与卡双载体同笔挂:PR 一存在即挂;报告先于 PR 到达则先挂卡侧,ACCEPT 时补齐 PR 侧。
- 同笔在卡上记一行条款②认定;停靠只防误入队,⛔ 无等外部席位的无限期状态。
- 同笔在卡上记一行条款②认定,PR 侧 ACCEPT 补齐;停靠只防误入队,⛔ 无无限期等外席态。
- 前瞻的条款②事实住卡上裁决与分诊评论、`Clause-②` 申报和 `--tier` 输出。
- 开着的载体恒 = 真实待审;载体不迁移:⛔ 不迁 PR review 或 Request Changes,⛔ 不为迁移留门。
- FAIL 同 PASS 剥双载体:同笔留卡上交接评论(引复审、独立性对、欠改);卡态与 assignee 不动。
- 重挂前先查裁决:闸门标签缺失 ⇒ 先 grep 卡评论找复审结论;`get_reviews` 读空 ≠ 未复审。
- PASS + 无标 + head 未动 = 已清标不是被剥;head 后移或无结论才重挂;清标缺引记录即半态。

## 复核归属与资格(按车道)
## 复核归属与资格(按面)

- 归属派发席,交付后收集复核当轮完成;只 spec 与 skills 车道欠,新 spec 工作恒归 spec 席。
- 按车道:spec 与 skills 席审契约增量;达档席内审,未达档 ⛔ 不自审,起达档子代理。
- 欠不欠按面判 ⛔ 不按车道:diff 碰下列任一面即欠达档复核,交付后当轮完成。
- 复核面 = 出货给用户或 agent 的五处:`content/docs/**`、`apps/docs/**`、CHANGELOG/`.changeset` 散文。
- 加已发布 schema(`packages/spec/src/**` 非测试)与 governed 规则文本(统一定义见 SKILL.md)。
- 五面皆不碰 ⇒ CI 加席位自读 ⛔ 不起第二个 agent;谁跑 = 派发席,达档者席内审。
- 复核记录 = 一条评论落 PR 或卡,席内与子代理同形;散文、dev 自评、`os-dev-report` 恒不算。
- 同形 = `## Contract review` 题头、所审 head sha 独占码段、①②③ 逐项、独立性对、PASS/FAIL。
- 同形含首行 `Served-tier:`:值写常量名 `CONTRACT_REVIEW_TIER`;无此行不成裁决,模板见 `--template`。
- ① derived judgments 逐项:diff 引出的接受集与公开面变化逐条点名判对错。
- ② semver 定级与 changeset 声明一致;③ 边界旗:dev 挂旗与 `open_questions` 逐旗答复或升级。
- 复核形状:只读 diff 与卡片,check 结论取 head 的 check-runs,⛔ 永不本地重跑派生门禁族。
- 独立性件(契约真分叉、dev 挂旗)与保险丝只免席内审,不免复核:起隔离达档子代理。
- 只喂卡片、既有裁决与 PR 本体,⛔ 不喂派发令与派发席自己的结论;简报写成对抗性。
- 隔离复核子代理暂存全写按所审 PR 命名的 `<scratchpad>/pr-<n>/`,⛔ 不读非本轮自写的暂存。
- 独立性对(机读):`Implemented-by:` 写产 diff 者身份;`mode:subagent` 记分支,`mode:remote` 记 session id。
- `Reviewed-by:` 写渲染或采纳裁决的席位 session;隔离复核子代理无 session,记采纳它的席位。
- 独立性对(机读):`Implemented-by:`/`Reviewed-by:` 取值见 `--template`;子代理记采纳它的席位。
- 两者同 session ⇒ 报 SELF-REVIEW;只 `mode:remote` 可达,`mode:subagent` 席内审是设计;值紧跟冒号。
- 清标即落地:PASS ⇒ 同席同笔剥双载体;清标同笔落 PR provenance 评论,引记录 id 与所判 head。
- 轮次报告设复审清单专节,形状与代裁清单同为强制审计。
- 落地前检三条:① 达档条款②复核 PASS 在案,即 PR 或卡上同形复核记录(spec、skills 每轮)。
- 落地前检三条,过则 Tier S 入队、Tier H 等人批:① 达档条款②复核 PASS 在案(同形记录)。
- ② 双载体已清,逐对机读 `PM_SWEEP_REPO=仓 node scripts/pm/check-clause2-carriers.mjs --pair N`。
- 0 = 双肢一致、无放宽 tell、head 上有记录;4 = 任一不成立;3 = 环境答不了,⛔ 不作干净。
- 放宽 tell 由 `scripts/pm/check-widening-tells.mjs` 判,`no` 撞新键/成员/导出/登记即拒,附 file:line
- 0 = 确定性行全清;4 = 任一不成立,只确定性行红才挡落地;3 = 环境答不了 ⛔ 不作干净。
- 确定性行 = 记录在案、`Served-tier:`、双载体一致、认领形;C5 放宽 tell 只报告,归复核裁
- ③ PR check 全绿,⛔ 非 required 子集;例外:merge-base 同签名的红不计、按设计而红见 SKILL.md。
- 签名 = 失败步 + 首错行,读 base check runs 的 API ⛔ 不凭口述;主干红止血立单不变。
- Tier H(规则层)等维护者的字;受管路径全在 Tier S 面(`.claude/**`)者达档过本三条入队。

## 降档保险丝(机读)

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/core-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
- 代裁即换标签、贴四棱块与结论、打自动裁决标记、轮报设专节;发现契约要动则回箱。
- 方向性授权覆盖整条执行链,需裁事项攒批呈报,运维细节 ⛔ 不弹给维护者。
## 执行座位职责
- 每轮巡检先读半状态巡查锚上点名本车道的行并逐行处置,未处置 ⛔ 不开新派发
- 半状态巡查按需跑,其 H 行是读数不是前提,⛔ 不因锚行停派发
- 候选整车道一次读全再本地求交,每张读全文与全部评论并把裁决逐字引入派发词。
- 派发前做前提过时检查,动作面、卡引用面与工作项面三面都对树核验。
- 同批独立性按文件面不相交判,⛔ 不按包;同区域硬串行,冲突交合并队列仲裁 ⛔ 不手排。
Expand All @@ -110,7 +110,7 @@
- 认领原子对:一次标签写入完成认领与状态对调,随后留 `Claim:` 开头的评论并重读全线程。
- 更早的他会话认领即让行并交出已诊断的一切;认领人不可达即接管,⛔ 不判死活。
- dev 自死不等于维护者中止,需显式信号;接管一条评论四件齐,只救已 push 的分支。
- 一单一次派发,档位逐卡显式传参;语义面卡恒契约复审档施工,契约复核只 spec、skills 欠
- 一单一次派发,档位逐卡显式传参;语义面卡恒契约复审档施工,契约复核按面欠不按车道
- 派发词 ⛔ 不整段粘贴 issue 正文,只带增量,并要求子代理自查正文完整性。
- 派发词分三区:裁决不可重裁、机制假设须实测、建议路线可换,⛔ 不把假设写成裁决。
- 标准非协商条款 ⛔ 不抄进派发词,清单、路径与行号在派发那一刻从树上取。
Expand Down
12 changes: 12 additions & 0 deletions .claude/skills/pm-dispatch/references/instrument-discipline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# 仪器纪律

见 SKILL.md 〈平台读数纪律〉的指针行;本文是仪器的分界、授权与工具位次序。

- 硬门禁只答有确定答案的问题:受管登记表、队列守卫、CI 测试、复核记录在不在。
- 判意图的仪器(放宽 tell、半状态巡查)只印读数 ⛔ 不挡落地,误报由席位一句话推翻。
- 放宽 tell(C5)由 `scripts/pm/check-widening-tells.mjs` 印 file:line,归达档复核裁。
- 只报告的仪器不配 dev:⛔ 不立卡、不派 dev、不开 PR;它的在途工作只有删除。
- 新增门禁、巡查行或棘轮须在卡上引维护者原话,⛔ 无原话不新增;首行四件恒硬。
- 工具位只有一个,先花在删除上;`dispatch-gates.mjs` 冻结,只在它喂的 workflow 坏了时碰。
- 出处:维护者 2026-09-21 逐字「19491 接受你的建议,并立刻派发处理相关任务。」
- 裁决记录:裁决 208,卡 19491,评论 5755284987(编号不带 # 前缀,id-lint 拒)。
10 changes: 5 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,11 +272,11 @@ localStorage / auth gotchas.
ONE batch of at most five rows, and the click stays the maintainer's. **Tier S** (席内达档复核落地: all of
`.claude/**`): those four lift once the PR thread or its card carries a `## Contract review` record for the PR's
current head with `Served-tier: CONTRACT_REVIEW_TIER` and a PASS verdict, `check-clause2-carriers.mjs --pair N`
reads 0 and every check is green — the owning seat then lands it through the queue; the post-merge audit is the
compensating control. A PR whose only governed paths are register rows the queue leg regenerates byte-exact clears
with zero approvals — an uncertified recompute, drift or a hand-authored sibling keeps it governed. ⛔ **No agent
seat submits an approving review on a governed-surface PR, under any account** — an authorized account is
agent-operated too; "CI is green" carries no information about a governance change.
reads 0 on its definite rows (⛔ never C5) and every check is green — the owning seat then lands it through the
queue; the post-merge audit is the compensating control. A PR whose only governed paths are register rows the queue
leg regenerates byte-exact clears with zero approvals — an uncertified recompute, drift or a hand-authored sibling
keeps it governed. ⛔ **No agent seat submits an approving review on a governed-surface PR, under any account** —
an authorized account is agent-operated too; "CI is green" carries no information about a governance change.

**Already armed or queued when you read this?** Convert it back to **draft** AND disable auto-merge — draft is
what removes queue membership, disabling alone drops only the arming — then confirm from the remote that it is in
Expand Down
Loading