Skip to content

Commit 5c34b7e

Browse files
os-warrenclaude
andauthored
docs(pm-dispatch): move clause-2 contract review in-seat per the 2026-08-31 ruling (#13812)
The dispatching seat now completes the contract review itself after delivery (judgment checklist; context-isolated adversarial fable review subagent on a true fork or a dev flag), strips the needs:contract-review dual carrier on PASS and releases (ready + auto-merge); FAIL is a patch round. The draft + label short dock at PR creation stays. The external review chain (triage timed wheel / director summons) is demoted to an optional post-hoc audit — respected, but no longer a release precondition. The maintainer decision box is untouched: true design forks still escalate. contract-review.md ceiling 51 -> 57 (in-place payment exhausted; map comment carries the measurement). Claude-Session: https://claude.ai/code/session_01PBjwYLS6BciTQW3c9xQiD2 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 9fd45a9 commit 5c34b7e

6 files changed

Lines changed: 70 additions & 51 deletions

File tree

.claude/skills/pm-dispatch/SKILL.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ dev 侧早推分支 —— 远程分支是在飞工作最硬的证据。**死认
584584
原话:「同意,就按语义面收窄,立卡并通知 spec 席」)—— 契约错毒化一切下游,
585585
全仓最贵(条款②闸门见「入队与落地」)。**负边界(维护者 2026-08-28 裁定)**:
586586
运行时权限/安全**行为**变更不是条款② —— 归人工地板「安全/权限边界」
587-
类(控制是裁决本身,不走复审链);条款②只指**已发布契约面**(两独立席位曾同错读,
587+
类(控制是裁决本身,不走契约复核);条款②只指**已发布契约面**(两独立席位曾同错读,
588588
故明写)。**卡面对条款②的复述仍是条款②**(座位复述会丢掉原文旁的例外,
589589
而被读的正是复述):额度耗尽豁免及其 `needs:contract-review` 补偿一并及于它;
590590
豁免够不到的地板只有维护者裁决能设。**席位档策略(同 2026-08-20 裁决)**:skills 车道外执行
@@ -755,11 +755,12 @@ PM 自己的工具 PR 留维护者。main-red 修复的跳队例外与事故锚
755755
⛔ 永不把路径触发读作条款②的完整覆盖 —— 它只盖路径肢;不触契约文件而改变接受
756756
/拒绝行为或扩大公开面的**内容肢**由声明行承载。档位以 dispatch-gates 常量
757757
`CONTRACT_REVIEW_TIER` 为准(档位单源,⛔ 本文与标签不写模型名,模型升级只改一行一个文件)。
758-
派发席职责止于:卡上记一行认定、停手;⛔ 禁止自查放行。`needs:contract-review`(标签
759-
命名审的对象,恒英文)由 PR 创建者随**可复审契约增量**同笔挂(draft PR,或先到的报告);
760-
队列/受阻卡的前瞻预挂已废止(维护者 2026-08-28 裁定)—— 前瞻条款②事实住卡上裁决
761-
/分诊评论、认领 `Clause-②` 申报与 `--tier` 输出;开着的载体恒为一单真实待审。
762-
复审链细则(载体纪律、资格与归属、降档保险丝)见 `references/contract-review.md`
758+
交付后复核由**派发席在席内完成**(维护者 2026-08-31 裁定;达档 PM 自审或派 fable 复核子任
759+
务皆可):PASS ⇒ 同席剥标、ready、auto-merge;FAIL ⇒ 补丁轮;⛔ 免复核不放行;真正设计分叉照
760+
旧进决策箱,席内复核 ⛔ 不替代维护者裁定;外部评审链降为可选事后审计,非放行前提。
761+
`needs:contract-review`(标签命名审的对象,恒英文)由 PR 创建者随**可复审契约增量**同笔挂
762+
(draft PR,或先到的报告),复核完成前短暂停靠;前瞻预挂已废止(维护者 2026-08-28 裁定)。
763+
席内复核细则(清单、隔离子代理、载体与保险丝)与裁定原话见 `references/contract-review.md`
763764
- **碰生成物的 PR,入队前先同步 + 整体重生成**(os-regen
764765
驱动零冲突标记地**静默丢掉一侧改动**): 四步序已机械化 `bash scripts/pm/os-regen-merge.sh`;
765766
陷阱、断言措辞与锚点禁令见 landing-operations A。
@@ -895,7 +896,8 @@ finding 定级换结果态,永不留挂)/ `Blocked-by:` 活性现验(合并一
895896
⛔ 永不整席等答复。`AskUserQuestion` 只是**在场加速器**:仅当维护者在本会话
896897
~30 分钟内有过人类输入才可发,每问必带推荐项,被 Skip 或长挂即转卡通道 ⛔ 不重弹 ——
897898
卡先于弹窗存在,弹窗怎么死盘面都诚实。**项目总监席:人工召唤,四职 = `needs:contract-review`
898-
复审链、决裁勤务、维护者动作台账、governed 合并审计**(维护者 2026-08-27 裁定,
899+
事后审计(可选,放行归派发席席内复核 —— 见条款②闸门)、决裁勤务、维护者动作台账、
900+
governed 合并审计**(维护者 2026-08-27 裁定,
899901
原话:「项目总监 由人工定期指挥,负责处理 contract-review 类别的和需要决裁的。」
900902
「需要维护者处理的事情,也归项目总监。」—— 决裁半边自此由 skills 席移交本席,
901903
改写 2026-08-26「skills 和决裁的问题,还是由skills席统一人工处理,我会要求你处理某个仓的
Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,57 @@
1-
# 契约复审链细则(references —— 按需加载)
1+
# 契约复核细则(席内)(references —— 按需加载)
22

3-
出处:主文件条款②闸门(原则/双肢与档位单源在彼);本表 = 复审链细则,⛔ 不引 issue 编号。
3+
出处:主文件条款②闸门(原则/双肢与档位单源在彼);本表 = 复核细则,⛔ 不引 issue 编号。
44

55
## 载体纪律(挂与清)
66

77
- **适用性 —— 内容肢及于 published `skills/**`**(维护者 2026-08-31 批 #12「同意」):作**可证伪的
8-
算子/契约语义主张**的改动挂标走本链;⛔ 判据不是「提到契约」,纯算子清单、拼写、
9-
格式不触发(标尺:10 处命中仅 3 处主张)。受管面人工合并 ⛔ 不替代本链,两道保障叠加。
8+
算子/契约语义主张**的改动挂标走本复核;⛔ 判据不是「提到契约」,纯算子清单、拼写、
9+
格式不触发(标尺:10 处命中仅 3 处主张)。受管面人工合并 ⛔ 不替代复核,两道保障叠加。
1010
- **PR 与卡双载体同笔挂**(维护者 2026-08-22:「简化一点是否可以直接挂 PR 侧」「两边都挂好
11-
」; PR 一存在即挂,报告先于 PR 到达则先挂卡侧、ACCEPT 时补齐 PR 侧),同笔在该 PR 上向复审
12-
席账号 request review(同裁决:「也可以直接要求复审」—— 仅通知,载体仍是标签)、停手
13-
-**不预挂**(维护者 2026-08-28 裁定):可复审增量存在前永不挂标,队列/受阻卡的提前挂已废
14-
止 —— 前瞻条款②事实走主文件闸门段的三条既有通道;开载体恒 = 真实待审。
11+
」; PR 一存在即挂,报告先于 PR 到达则先挂卡侧、ACCEPT 时补齐 PR 侧),同笔在卡上记一行
12+
条款②认定;停靠短暂(只防复核完成前误入队),⛔ 无「等外部席位」的无限期状态
13+
-**不预挂**(维护者 2026-08-28 裁定):可复审增量存在前永不挂标,提前挂已废止 —— 前瞻
14+
条款②事实住卡上裁决/分诊评论、`Clause-②` 申报与 `--tier` 输出;开载体恒 = 真实待审。
1515
- **载体不迁移**(维护者 2026-08-18,原话:「中期把闸门迁到 PR review 的 Request Changes
1616
上 我觉得没必要」): 闸门载体保持本标签,⛔ 不迁 PR review / Request Changes、不为迁移留门。
1717
- **重挂前先查裁决**:闸门标签缺失 ⇒ 先 grep 卡评论找复审结论 —— PASS +
1818
无标 + head 未动 = 已清标非被剥;head 后移或无结论才重挂(`get_reviews` 读空 ≠ 未复审)。
1919

20-
## 复审资格与归属
20+
## 复核归属与资格(席内)
2121

22-
- **资格** —— ① 跑在契约复审档位,硬条件,认定只认机读:自会话凭降档保险丝,子代理凭
23-
转录核验(下节);② 非该卡派发席,已从资格放宽为路径偏好(维护者 2026-08-21,原话:「你自
24-
己就是 Fable,自己就可以审核」):机读证实达档的派发席,可对自派的卡执行复审并清
25-
标(审的是低档实现者的契约增量,非自身产物);放宽的是独立席位,不是复审本身,主文件「
26-
⛔ 禁止自查放行」禁的是免复审直放,不禁本路径;低于档位的席照旧留标等待。
27-
- **归属**(维护者 2026-08-27 裁:「契约复审也是很重要的职责,也是需要定时处理的」):常设
28-
唯一 = **分诊席定时轮**,逐载体经转录核验的达档子代理复审,只审契约增量 diff、结论一
29-
行写卡;PASS 双载体同笔清标并清 review request,标清后方可入队;FAIL label-flip 交接;卡在决策
30-
⇒ 只进决策箱,⛔ 永不自裁;轮报设**复审清单**专节(同代裁清单强制审计形状)。总监席
31-
= 召唤兜底,只处理分诊明示停放、核验失败在案或老化超期的载体,加决裁批次内 BLOCKED
32-
分支;⛔ 永不与定时轮并行扫同一载体集。
33-
- **清标即落地**(维护者 2026-08-25,原话:「审核通过你应该直接负责合并吧,还要等原始的项
34-
目经理吗」):非受管 code PR 由**复审链同笔收口**:清标后按 `landing-operations.md` 走落地前检
35-
→ 转 ready → 挂 auto-merge/入队;车道 PM 窗口与 half-states 孤儿巡检退为**兜底**,⛔ 停手即复
36-
现「就绪却无人落地」。**三样不变**:受管面照旧 draft-only + 终局两条(人工直合或授权批
37-
准钉 head 入队,单源见主文件)、⛔ 链永不入队亦不代批;FAIL / REWORK 原样;降档保险丝原样。
22+
- **归属:该卡派发席,交付后收集复核当轮席内完成**(维护者 2026-08-31 裁定,原话:「项目经
23+
理是fable 或者可以派fable的子任务都可以自己contract view吧?」;沿 2026-08-21「你自己就是
24+
Fable,自己就可以审核」的放宽 —— 审的是低档实现者的契约增量,非自身产物;主文件
25+
「⛔ 免复核不放行」禁的是免复核直放,不禁本路径)。
26+
- **契约判断清单(收集复核的升格件,逐项落卡/PR 评论,⛔ 不是散文自述)**:① derived
27+
judgments 逐项 —— diff 引出的接受集/公开面变化逐条点名判对错;② semver 定级 —— 变更
28+
级别与 changeset 声明一致;③ 边界旗处置 —— dev 挂旗/open_questions 逐旗答复或升级。
29+
- **独立性件 —— 隔离复核子代理**:契约判断**真分叉**、或 dev 挂旗待裁 ⇒ 起**上下文
30+
隔离的 fable 复核子代理**出第二意见,只喂卡片、既有裁决与 PR 本体,⛔ 不喂派发令与
31+
派发席自己的结论(污染即失独立性);简报写成**对抗性**(找拒绝理由)。未达档席 ⛔ 不凭
32+
自述复核,恒走本路径;子代理裁决按转录核验采信(下节),逐字采纳或整体作废。
33+
- **放行 = 清标即落地**(维护者 2026-08-25,原话:「审核通过你应该直接负责合并吧,还要等原始
34+
的项目经理吗」):PASS ⇒ 同席同笔剥标(双载体),清标评论引 2026-08-31 裁定作 provenance,按
35+
`landing-operations.md` 走落地前检 → 转 ready → 挂 auto-merge/入队;FAIL ⇒ 补丁轮;卡在决策 ⇒
36+
只进决策箱,⛔ 永不自裁 —— 真正设计分叉照旧升级维护者;轮报设**复审清单**专节(同代
37+
裁清单强制审计形状)。**三样不变**:受管面照旧 draft-only + 终局两条(人工直合或授权批准
38+
钉 head 入队,单源见主文件)、⛔ 席位永不代批;FAIL / REWORK 原样;降档保险丝原样。
39+
- **外部评审链降为可选**(改写 2026-08-27「契约复审也是很重要的职责,也是需要定时处理
40+
的」所立的定时轮常设归属):分诊定时轮与总监席召唤非放行必要条件,在线时作**事后审计/抽
41+
**,其裁决仍被尊重 —— 审计 FAIL 按状态机 label-flip 交回派发席补丁轮;⛔ 不与席内复核
42+
抢同一载体的放行动作;资格与档位硬门对审计者同样成立。
3843

3944
## 降档保险丝(机读)
4045

41-
- 每场开场**必调一次 `get_session`**(claude-code-remote MCP,无参)读 `external_metadata.last_served_model`,⛔
42-
自述档位不是读数(静默降档腐蚀的恰是自述;实测与配置档陷阱见 platform-readings);读数 ≠
43-
`CONTRACT_REVIEW_TIER` ⇒ 该场整体跳过、标签原样留置 —— 卡在队列外等待是安全态。
46+
- 席内复核/审计每场前**必调一次 `get_session`**(claude-code-remote MCP,无参)读
47+
`external_metadata.last_served_model`,⛔ 自述档位不是读数(静默降档腐蚀的恰是自述;实测与配
48+
置档陷阱见 platform-readings);读数 ≠ `CONTRACT_REVIEW_TIER` ⇒ 本席 ⛔ 不自判清标,改走转录
49+
核验的 fable 复核子代理 —— 标签在复核完成前原样留置,卡在队列外等待是安全态。
4450
- **保险丝只测座位自会话**:`mode:subagent` 里的 `get_session` 量的是**派发会话**(实测:
4551
钉在地板档的子代理读回父档,⛔ 不作互证),传参只是配置 ⛔ 不作达档读数;
46-
条款②的 `mode:subagent` 派发照旧恒保留 `needs:contract-review`,免审跳过仅座位自会话成立
52+
条款②的 `mode:subagent` 派发照旧恒保留 `needs:contract-review` 至席内复核完成
4753
- **转录档位核验**(维护者 2026-08-27 裁)——「派更高档位子代理复审」仅核验通过才合法:采
4854
信/清标前 grep 子代理 transcript 中 harness 逐消息盖章的 `model` 字段,产出裁决的每轮都须读
4955
到契约复审档位,见回退证据 ⇒ 裁决整体作废;父会话仅两个合法动作 —— **逐字采纳或
5056
整体作废**(理由仅机械三种:核验失败/越范围/格式不完整),⛔ 永不改写/删节/润色。
51-
- 契约复审 ⛔ 不适用额度耗尽豁免降档(豁免对象是派发;复审正为补偿低档派发而存在)。
57+
- 契约复核 ⛔ 不适用额度耗尽豁免降档(豁免对象是派发;复核正为补偿低档派发而存在)。

.claude/skills/pm-dispatch/references/landing-operations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
车道 PM 的权责:验收(复核清单);**首次入队** —— ACCEPT 后挂 6–9 分钟 flip 定点,到点核门禁
2727
job 结论,绿即转 ready + 挂 auto-merge,未绿阶梯重挂;CI success webhook 不可靠,⛔ 不坐等不忙轮询;
2828
定点文本照定时器写法纪律;确认 **MERGED** —— 每轮同时读队列分支与 `origin/main`
29-
两个读数。**契约复审链 PASS 落地的 PR 到窗口时已 ready + auto-merge 在挂**(清标与落地同一笔,
30-
`contract-review.md`)—— 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。
29+
两个读数。**契约复核 PASS 落地的 PR 到窗口时已 ready + auto-merge 在挂**(席内清标与落地同一
30+
笔,`contract-review.md`)—— 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。
3131

3232
**转 ready / 挂 auto-merge 之前先判受管面**:`node scripts/pm/check-governed-merges.mjs --test` 加 PR 变更路
3333
径,一条命中 ⇒ 整 PR 改走人工合并道(复核照写 + 留 draft + 向授权批准人请审 + 状态评

.claude/skills/pm-dispatch/references/lanes/director.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ issue 编号;机器判据恒英文,引文逐字不译。
99
contract-review 类别的和需要决裁的。」—— 此句即本席的职责定义与召唤契约。
1010
- **人工召唤,⛔ 无 Routine 无 cron 无常设舰队位**:维护者说「处理决裁」/「处理
1111
contract-review」或 `/pm-dispatch director` 即入口;召唤间隔里决策卡与审计窗口**停放是设计安
12-
全态**(复审载体常设归分诊席定时轮,见职责一),召唤节奏即决裁与审计节奏。
12+
全态**(复核放行常设归派发席席内,见职责一),召唤节奏即决裁与审计节奏。
1313
- **档位** = `CONTRACT_REVIEW_TIER`(dispatch-gates 常量单源,⛔ 本文不写模型名);每场开场按降
1414
档保险丝机读认定(细则见 `../contract-review.md`);不达档只做免档整理(载体盘点、批次拟
1515
稿、「待您」清单归集),四职停放,⛔ 不出裁决、不清标、不摘标。
@@ -28,12 +28,12 @@ issue 编号;机器判据恒英文,引文逐字不译。
2828
- **创业阶段不渐进**(维护者 2026-08-27,逐字:「创业阶段不渐进 应该写入项目总监skills」):
2929
废弃别名与退役默认立即退休,无窗口无双拼写宽限;staged 仅凭具名外部用户证据可荐。
3030

31-
## 职责一:`needs:contract-review` 复审链
31+
## 职责一:`needs:contract-review` 事后审计/抽查(可选)
3232

33-
- **兜底位,非常设处理者**(维护者 2026-08-27 裁:「同意,继续」—— 常设定时处理归分诊
34-
席;归属、反双跑硬线与复审全链见 `../contract-review.md`,⛔ 不另抄):召唤时枚举载体(卡与
35-
PR 两侧),只处理分诊明示停放、核验失败在案或老化超期的,加决裁批次内 BLOCKED 分支,⛔
36-
不并行扫定时轮的载体集;非机械 CI 红交回具名读者,机械红可接手(经派发 dev 执行)。
33+
- **审计位,非放行链**(2026-08-31 裁定改制:放行常设归**派发席席内复核**,归属与全链见
34+
`../contract-review.md`,⛔ 不另抄):召唤时作事后审计/抽查 —— 枚举载体(卡与 PR 两侧)与近
35+
期落地的条款② PR,查复核质量与漏网;裁决仍被尊重但非放行必要条件,⛔ 不与席内复核抢
36+
同一载体的放行动作;非机械 CI 红交回具名读者,机械红可接手(经派发 dev 执行)。
3737
- **处理三分支**(维护者 2026-08-27,逐字未译:「刚才说的 needs:contract-review 类别,项目总监处理
3838
时,如果是收尾,应该帮忙处理完到合并。如果有大的错误,应该改标签。如果是卡在决策卡,和我讨论该
3939
怎么处理。」):
@@ -72,6 +72,6 @@ issue 编号;机器判据恒英文,引文逐字不译。
7272
- **决裁半边**:2026-08-26 裁定(原话见主文件总监段)的决裁归属由 2026-08-27 移交本席;
7373
skills 面照旧归 skills 席 —— 分界:改 skill/指令/governance 文本的工作归 skills 席,出裁
7474
决、清复审标、清点待人工清单的勤务归本席。
75-
- **复审链归属与代裁 runner**:skills 席自绑小时钟(维护者 2026-08-23:「要不还是你挂个定时处
76-
理审核吧」)实测已死,⛔ 不复活 → 移交本席召唤 → 2026-08-27 再裁:常设 = 分诊定时轮(核
77-
验子代理),本席退为兜底(`../contract-review.md` 归属条款为准);机读保险丝照旧,不可协商。
75+
- **复核归属与代裁 runner**:skills 席自绑小时钟(维护者 2026-08-23)实测已死,⛔ 不复活 → 移交
76+
本席召唤 → 2026-08-27 再裁常设 = 分诊定时轮 → 2026-08-31 再裁:放行改**派发席席内复核**,
77+
定时轮与本席降为可选事后审计(`../contract-review.md` 为准);机读保险丝照旧,不可协商。

.claude/skills/pm-dispatch/references/lanes/skills.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
`CLAUDE.md`;governed 面的治理执行文件(`.github/CODEOWNERS` 治理路由半边 +
1010
SUBJECT 是 governed 面本身的门禁/审计)。全量判据与裁决引文在 SKILL.md 域车道
1111
表;governed 面统一定义见 SKILL.md「ACCEPT 之后的路径分叉」。
12-
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作;契约复审链与决裁勤务归项目
13-
总监席(`lanes/director.md`);本席保留 skill 文本/governance 面与本车道,⛔ 不再代行。
12+
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作;契约复核归派发席席内、决裁勤务
13+
归项目总监席(`lanes/director.md`);本席保留 skill 文本/governance 面与本车道,⛔ 不再代行。
1414

1515
## 常设承诺
1616

scripts/pm/check-skill-line-ratchet.mjs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,18 @@ export const CEILINGS = new Map([
237237
// dispatch-runbook entry above — and the only other in-place payment available
238238
// was deleting a ruled clause, refused on the state-machine precedent. Landed
239239
// count, headroom 0 again, same convention.
240-
['.claude/skills/pm-dispatch/references/contract-review.md', 51],
240+
// Raised 51 → 57 by the in-seat contract-review rework (maintainer ruling
241+
// 2026-08-31, verbatim: 「项目经理是fable 或者可以派fable的子任务都可以自己
242+
// contract view吧?」— the clause-② release moves from the external review
243+
// chain to the dispatching seat). The judgment checklist, the context-isolated
244+
// fable review subagent and the chain's demotion to optional audit land HERE
245+
// so the ratcheted main file stays principles-only (it paid its own bullet
246+
// down to a pointer). Paid in place first: the wheel-ownership bullet, the
247+
// request-review clause and the standalone qualification bullet were deleted
248+
// or folded; the residual +6 could not be paid without deleting ruled clauses
249+
// (refused on the state-machine precedent). Landed count, headroom 0, same
250+
// convention.
251+
['.claude/skills/pm-dispatch/references/contract-review.md', 57],
241252
// Business-perspective decision-analysis writing guide (maintainer ruling
242253
// 2026-08-20: the four-facet analysis must argue from the business
243254
// standpoint). Set at landed line count (headroom 0, same convention).

0 commit comments

Comments
 (0)