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
7 changes: 3 additions & 4 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -403,12 +403,11 @@ dev 侧推分支要早 —— 远程分支是在飞工作最硬的证据。**死
目经理技能 必须要使用 Fable 5」。**派发模型是 PM 的逐卡显式决定** —— 下限 `sonnet`(机械卡:正确
性由门禁农场机械判定,失败在漏跑门不在判断);默认判断档 `opus`(M/L、裁决实施、任何带设计判断的卡;
拿不准就升一档 —— 错派低档的返工贵过省下的额度);上限 `fable`(最重协议/流程/编排卡,按卡取用非新
默认)。**⛔ 强制条款两条**:① 凡改 `.claude/skills/pm-dispatch/**` 的卡一律
`model: "claude-fable-5"`;② 凡**改变契约接受/拒绝行为或扩大公开面**的卡(`domain:spec` 语义面;
默认)。**⛔ 强制条款两条**:① 凡改**协议语义面**的卡一律 `model: "claude-fable-5"` —— 面 = 本 `SKILL.md` 主文件、决策框架拷贝所在文件(以 `check:skill-frame-sync` 强制处为准)与 `.claude/agents/os-dev.md`(2026-08-20 收窄,维护者原话:「接受你的建议」—— fable 当审计师用,不当施工队用);仅 `references/**` 面、或任一 pm-dispatch 治理面上一行级机械文本改动的卡降为 **opus 施工**(纯机械一行 PM 酌定可至 sonnet 地板),**补偿控制即既有技能面复核档要求**(ACCEPT 路径分叉 ①:复核席跑契约复审档位)—— opus 施工的治理面改动只经 fable 档复核到达维护者,⛔ 不新增标签不新增链;② 凡**改变契约接受/拒绝行为或扩大公开面**的卡(`domain:spec` 语义面;
判据即分诊代裁的机械边界测试与 spec 席内分派判据 —— `references/lanes/spec.md`,⛔ 不另抄第二份)一律 `claude-fable-5`(维护者
2026-08-12 裁定,原话:「同意,就按语义面收窄,立卡并通知 spec 席」)—— 契约错毒化一切下游,全仓最贵(条款②闸门见「入队与落地」)。两条唯一降档出口:**额度耗尽豁免**(维护者 2026-08-13
2026-08-12 裁定,原话:「同意,就按语义面收窄,立卡并通知 spec 席」)—— 契约错毒化一切下游,全仓最贵(条款②闸门见「入队与落地」)。**席位档策略(同 2026-08-20 裁决)**:skills 车道外执行 PM 席默认 `opus` 会话,fable 保留给分诊 Routine(代裁 + 契约复审)、本席与条款②工作 —— 各自档位与 Routine UI pin 归既有条款,本行记策略 ⛔ 不建触发器不另抄。降档出口两条:**额度耗尽豁免**(维护者 2026-08-13
原话:「fable 如果用完了,可以用 opus」):仅当 fable 实测不可用(限流/墙杀中途,重派同样可降)
才落 `opus`,⛔ 不再往下,档位与理由记入认领评论「Container & model」行。明确不变(合并后按席内
才落 `opus`,⛔ 不再往下;与**主动预降**(余量吃紧可预先降档),两者档位与理由皆记入认领评论「Container & model」行。明确不变(合并后按席内
分派面适用):spec 文本面照旧 sonnet/opus;机器面与下游适配默认 opus,门禁语义设计升 fable,拿
不准升档照旧。**档位逐次派发显式传参,永不省略**(解析顺序、pin 语义与允许名单回退陷阱以 os-dev
定义 frontmatter 注释为权威),连同尺寸写进同一行;分诊 suggestion 行是输入不是决定,不采纳给理由。
Expand Down
13 changes: 13 additions & 0 deletions scripts/pm/check-dispatch-gates.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,19 @@ const TOOL = 'scripts/pm/dispatch-gates.mjs';
*/
const SURFACE_MODULE = 'scripts/i18n-bundle-surface.mjs';

/**
* The frame-sync gate whose COPIES table the tool's self-test pins the tier
* mandate against, declared for the same reason as SURFACE_MODULE above
* (#9116): since the 2026-08-20 clause-① narrowing, part of the
* fable-mandatory surface is DEFINED as "every file carrying an enforced copy
* of the decision frame", and the tool's self-test reaches that table through
* a spawned import — which is not a discoverable watch hint. Without this
* constant, a change to that gate's COPIES would move this gate's verdict
* while deriving nothing, which is the blind-spot shape the tool exists to
* remove. Pinned live in the tool's own self-test.
*/
const FRAME_MODULE = 'scripts/check-skill-frame-sync.mjs';

const result = spawnSync(process.execPath, [join(ROOT, TOOL), '--self-test'], { stdio: 'inherit' });

if (result.error) {
Expand Down
Loading
Loading