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

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

## 载体纪律(挂与清)

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

## 复审资格与归属
## 复核归属与资格(席内)

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

## 降档保险丝(机读)

- 每场开场**必调一次 `get_session`**(claude-code-remote MCP,无参)读 `external_metadata.last_served_model`,⛔
自述档位不是读数(静默降档腐蚀的恰是自述;实测与配置档陷阱见 platform-readings);读数 ≠
`CONTRACT_REVIEW_TIER` ⇒ 该场整体跳过、标签原样留置 —— 卡在队列外等待是安全态。
- 席内复核/审计每场前**必调一次 `get_session`**(claude-code-remote MCP,无参)读
`external_metadata.last_served_model`,⛔ 自述档位不是读数(静默降档腐蚀的恰是自述;实测与配
置档陷阱见 platform-readings);读数 ≠ `CONTRACT_REVIEW_TIER` ⇒ 本席 ⛔ 不自判清标,改走转录
核验的 fable 复核子代理 —— 标签在复核完成前原样留置,卡在队列外等待是安全态。
- **保险丝只测座位自会话**:`mode:subagent` 里的 `get_session` 量的是**派发会话**(实测:
钉在地板档的子代理读回父档,⛔ 不作互证),传参只是配置 ⛔ 不作达档读数;
条款②的 `mode:subagent` 派发照旧恒保留 `needs:contract-review`,免审跳过仅座位自会话成立
条款②的 `mode:subagent` 派发照旧恒保留 `needs:contract-review` 至席内复核完成
- **转录档位核验**(维护者 2026-08-27 裁)——「派更高档位子代理复审」仅核验通过才合法:采
信/清标前 grep 子代理 transcript 中 harness 逐消息盖章的 `model` 字段,产出裁决的每轮都须读
到契约复审档位,见回退证据 ⇒ 裁决整体作废;父会话仅两个合法动作 —— **逐字采纳或
整体作废**(理由仅机械三种:核验失败/越范围/格式不完整),⛔ 永不改写/删节/润色。
- 契约复审 ⛔ 不适用额度耗尽豁免降档(豁免对象是派发;复审正为补偿低档派发而存在)。
- 契约复核 ⛔ 不适用额度耗尽豁免降档(豁免对象是派发;复核正为补偿低档派发而存在)。
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/landing-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
车道 PM 的权责:验收(复核清单);**首次入队** —— ACCEPT 后挂 6–9 分钟 flip 定点,到点核门禁
job 结论,绿即转 ready + 挂 auto-merge,未绿阶梯重挂;CI success webhook 不可靠,⛔ 不坐等不忙轮询;
定点文本照定时器写法纪律;确认 **MERGED** —— 每轮同时读队列分支与 `origin/main`
两个读数。**契约复审链 PASS 落地的 PR 到窗口时已 ready + auto-merge 在挂**(清标与落地同一笔,
见 `contract-review.md`)—— 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。
两个读数。**契约复核 PASS 落地的 PR 到窗口时已 ready + auto-merge 在挂**(席内清标与落地同一
笔,见 `contract-review.md`)—— 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。

**转 ready / 挂 auto-merge 之前先判受管面**:`node scripts/pm/check-governed-merges.mjs --test` 加 PR 变更路
径,一条命中 ⇒ 整 PR 改走人工合并道(复核照写 + 留 draft + 向授权批准人请审 + 状态评
Expand Down
18 changes: 9 additions & 9 deletions .claude/skills/pm-dispatch/references/lanes/director.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ issue 编号;机器判据恒英文,引文逐字不译。
contract-review 类别的和需要决裁的。」—— 此句即本席的职责定义与召唤契约。
- **人工召唤,⛔ 无 Routine 无 cron 无常设舰队位**:维护者说「处理决裁」/「处理
contract-review」或 `/pm-dispatch director` 即入口;召唤间隔里决策卡与审计窗口**停放是设计安
全态**(复审载体常设归分诊席定时轮,见职责一),召唤节奏即决裁与审计节奏。
全态**(复核放行常设归派发席席内,见职责一),召唤节奏即决裁与审计节奏。
- **档位** = `CONTRACT_REVIEW_TIER`(dispatch-gates 常量单源,⛔ 本文不写模型名);每场开场按降
档保险丝机读认定(细则见 `../contract-review.md`);不达档只做免档整理(载体盘点、批次拟
稿、「待您」清单归集),四职停放,⛔ 不出裁决、不清标、不摘标。
Expand All @@ -28,12 +28,12 @@ issue 编号;机器判据恒英文,引文逐字不译。
- **创业阶段不渐进**(维护者 2026-08-27,逐字:「创业阶段不渐进 应该写入项目总监skills」):
废弃别名与退役默认立即退休,无窗口无双拼写宽限;staged 仅凭具名外部用户证据可荐。

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

- **兜底位,非常设处理者**(维护者 2026-08-27 裁:「同意,继续」—— 常设定时处理归分诊
席;归属、反双跑硬线与复审全链见 `../contract-review.md`,⛔ 不另抄):召唤时枚举载体(卡与
PR 两侧),只处理分诊明示停放、核验失败在案或老化超期的,加决裁批次内 BLOCKED 分支,⛔
不并行扫定时轮的载体集;非机械 CI 红交回具名读者,机械红可接手(经派发 dev 执行)。
- **审计位,非放行链**(2026-08-31 裁定改制:放行常设归**派发席席内复核**,归属与全链见
`../contract-review.md`,⛔ 不另抄):召唤时作事后审计/抽查 —— 枚举载体(卡与 PR 两侧)与近
期落地的条款② PR,查复核质量与漏网;裁决仍被尊重但非放行必要条件,⛔ 不与席内复核抢
同一载体的放行动作;非机械 CI 红交回具名读者,机械红可接手(经派发 dev 执行)。
- **处理三分支**(维护者 2026-08-27,逐字未译:「刚才说的 needs:contract-review 类别,项目总监处理
时,如果是收尾,应该帮忙处理完到合并。如果有大的错误,应该改标签。如果是卡在决策卡,和我讨论该
怎么处理。」):
Expand Down Expand Up @@ -72,6 +72,6 @@ issue 编号;机器判据恒英文,引文逐字不译。
- **决裁半边**:2026-08-26 裁定(原话见主文件总监段)的决裁归属由 2026-08-27 移交本席;
skills 面照旧归 skills 席 —— 分界:改 skill/指令/governance 文本的工作归 skills 席,出裁
决、清复审标、清点待人工清单的勤务归本席。
- **复审链归属与代裁 runner**:skills 席自绑小时钟(维护者 2026-08-23:「要不还是你挂个定时处
理审核吧」)实测已死,⛔ 不复活 → 移交本席召唤 → 2026-08-27 再裁:常设 = 分诊定时轮(核
验子代理),本席退为兜底(`../contract-review.md` 归属条款为准);机读保险丝照旧,不可协商。
- **复核归属与代裁 runner**:skills 席自绑小时钟(维护者 2026-08-23)实测已死,⛔ 不复活 → 移交
本席召唤 → 2026-08-27 再裁常设 = 分诊定时轮 → 2026-08-31 再裁:放行改**派发席席内复核**,
定时轮与本席降为可选事后审计(`../contract-review.md` 为准);机读保险丝照旧,不可协商。
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/lanes/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
`CLAUDE.md`;governed 面的治理执行文件(`.github/CODEOWNERS` 治理路由半边 +
SUBJECT 是 governed 面本身的门禁/审计)。全量判据与裁决引文在 SKILL.md 域车道
表;governed 面统一定义见 SKILL.md「ACCEPT 之后的路径分叉」。
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作;契约复审链与决裁勤务归项目
总监席(`lanes/director.md`);本席保留 skill 文本/governance 面与本车道,⛔ 不再代行。
- QA 管理循环执行归本席;qa-run 记录是协议载体不是工作;契约复核归派发席席内、决裁勤务
归项目总监席(`lanes/director.md`);本席保留 skill 文本/governance 面与本车道,⛔ 不再代行。

## 常设承诺

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