diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 840d8b754c..0887aa5762 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -249,8 +249,8 @@ skills,类似分诊」)—— 贴内指针指向其车道文件,升级走技能 **工具加载纪律(fire 开局)**:互斥检查/自退判断只按名加载所需工具 —— `ToolSearch` 用 `select:mcp__github__list_issues,mcp__github__issue_read` 形式,判定「本轮有活」之后才加载其余;⛔ 开局不做泛关键词 ToolSearch(一次注入全家桶 schema —— 分诊席 2026-08-20 自测:空转轮 ~12 万 token,~8 万是这张门票);可验判据:空转轮 ~4 万以内,分诊下轮自测读数回报。只约束分诊 fresh session 的开局;执行座位(常驻会话)与 dev(需全工具面)不受此约束。 **Backlog sweep(常设职责,不等请求)。** 每轮扫任一析取命中的卡:① 全裸(无`pm:*`、 -无 `needs-user-decision`、无 `domain:*`);② 有 `pm:queue` 无 `domain:*`(**仅限主仓** —— 姊妹 -仓没有车道标签,这形状是它们队列卡的常态);③ 有 `domain:*` 无 pm-state。②③ 只取 `updated_at` +无 `needs-user-decision`、无 `domain:*`);② 有 `pm:queue` 无 `domain:*`(**凡有车道标签的仓皆扫**, +今日为主仓与 objectui —— 三流拆分见多仓协调;豁免仅余真无车道标签的仓 cloud、objectos,该形状在那里才是队列卡常态);③ 有 `domain:*` 无 pm-state。②③ 只取 `updated_at` 早于 ~2 分钟的卡且不是可选项 —— 半标注卡是协议自己按设计生产的(一次标签写入即把老卡打成半标 注),只带路由或状态机其一的卡对两个视图同时不可见。排除:`tracking`、`status:parked`(其正常形 状恰是「带域标签无 pm-state」)、全部 `pm:seat` 贴、`qa-run` 记录(协议载体非工作);存量大时每轮限量 —— 新入卡①优先最新,半状态治愈积压②③**最老优先、P0 嫌疑先行**,⛔ 优先最新不适用(细则见 runbook)。**紧急卡直接分诊** @@ -316,7 +316,7 @@ hold 评论纪律见状态模型,hold 重验只在 `Restart-when:` 命中时发 - **置信门(全部成立才可代裁)**:① 四棱同向(全指向同一选项,任何分裂即升级);②不在人工地板上 ;③ 不收窄、不推翻任何既有维护者裁决;④ 执行是**否决窗口不是许可门**—— 裁定 → 一次标签写入 换 `needs-user-decision` 为工作态 → 卡上贴四棱块 + 结论 + `auto-adjudicated` 标记 → 轮次报 - 告设**代裁清单**专节(聚合漂移的刹车);⑤ 代裁分析跑在 `claude-fable-5`(与维护者手工流程同档),档位同用复审链降档保险丝的机器读数认定 —— 代裁前 `get_session` 读 `external_metadata.last_served_model`(⛔ 自述档位不是读数),≠ 本项档位 ⇒ 本 fire 代裁整体跳过、卡原样留在决策箱走维护者路径(恒安全)。 + 告设**代裁清单**专节(聚合漂移的刹车);⑤ 代裁分析跑在 `claude-fable-5`(与维护者手工流程同档),达档认定与未达处置同复审链降档保险丝(机器读数为准;未达 ⇒ 本 fire 代裁整体跳过、卡原样留在决策箱走维护者路径,恒安全)。 - **回翻条款**:代裁卡实施中发现契约终究要动 ⇒ dev 停手,卡回`needs-user-decision` —— 报告分叉,⛔ 永不静默重裁。 ## 执行座位职责 @@ -405,7 +405,7 @@ dev 侧推分支要早 —— 远程分支是在飞工作最硬的证据。**死 拿不准就升一档 —— 错派低档的返工贵过省下的额度);上限 `fable`(最重协议/流程/编排卡,按卡取用非新 默认)。**⛔ 强制条款两条**:① 凡改**协议语义面**的卡一律 `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-20 裁决)**:skills 车道外执行 PM 席默认 `opus` 会话,fable 保留给分诊 Routine(代裁 + 契约复审)、本席与条款②工作 —— 各自档位与 Routine UI pin 归既有条款,本行记策略 ⛔ 不建触发器不另抄。降档出口两条:**额度耗尽豁免**(维护者 2026-08-13 +2026-08-12 裁定,原话:「同意,就按语义面收窄,立卡并通知 spec 席」)—— 契约错毒化一切下游,全仓最贵(条款②闸门见「入队与落地」)。**卡面对条款②的复述仍是条款②**(座位复述会丢掉原文旁的例外,而被读的正是复述):额度耗尽豁免及其 `needs:contract-review` 补偿一并及于它;豁免够不到的地板只有维护者裁决能设。**席位档策略(同 2026-08-20 裁决)**:skills 车道外执行 PM 席默认 `opus` 会话,fable 保留给分诊 Routine(代裁 + 契约复审)、本席与条款②工作 —— 各自档位与 Routine UI pin 归既有条款,本行记策略 ⛔ 不建触发器不另抄。降档出口两条:**额度耗尽豁免**(维护者 2026-08-13 原话:「fable 如果用完了,可以用 opus」):仅当 fable 实测不可用(限流/墙杀中途,重派同样可降) 才落 `opus`,⛔ 不再往下;与**主动预降**(余量吃紧可预先降档),两者档位与理由皆记入认领评论「Container & model」行。明确不变(合并后按席内 分派面适用):spec 文本面照旧 sonnet/opus;机器面与下游适配默认 opus,门禁语义设计升 fable,拿 @@ -518,9 +518,9 @@ os-zhuang 审核。我的手机github 应该会收到推送消息吧」;当日 - **条款②入队闸门(维护者 2026-08-16 批准;声明肢 2026-08-17 裁定)**:翻 ready / 入队前先取 PR **实际 diff** —— diff 是事实,卡片语义是预测;`--tier` 嫌疑行是提示不是裁定。**双肢命中 任一且派发档位低于契约复审档位 ⇒ ⛔ 禁止入队**:路径肢 = diff 触及契约面(`packages/spec/src/**`,含 error-code-ledger 与 `*.zod.ts` 契约 schema);声明肢 = 认领评论声明 `Clause-②: yes`,与路径无关(错误的 `no` 是记录在案、可审计的假申报,不再是静默缺口)。⛔ 永不把路径触发读作条款②的完整覆盖 —— 它只盖路径肢;不触契约文件而改变接受/拒绝行为或扩大公开面的**内容 - 肢**由声明行承载。档位以 dispatch-gates 常量 `CONTRACT_REVIEW_TIER` 为准(档位单源,⛔ 本文与标签不写模型名,模型升级只改一行一个文件)。派发席职责止于:卡上记一行认定、挂 `needs:contract-review`(标签命名审的对象,恒英文)、停手;⛔ 禁止自查放行。 -- **`needs:contract-review` 复审链**:复审资格 —— ① 跑在契约复审档位,硬条件,认定只认降档保险丝的机读;② 非该卡派发席,已从资格条件放宽为路径偏好(维护者 2026-08-21,原话:「你自己就是 Fable,自己就可以审核」):经同一机读证实达档的派发席,可对自派的卡执行契约复审并清标(派发席不写代码,审的是低档实现者的契约增量,不是自己的工作产物);放宽豁免的是独立席位,不是复审本身 —— 一行结论照样先落卡、后清标,上条「⛔ 禁止自查放行」禁的是免复审直放,不禁本路径;低于契约复审档位的席照旧留标等待。归属:常设 = 分诊席(Routine 模型由维护者在 Routines UI - 钉在契约复审档位),分诊轮子轮清该标签仍是默认清标路径(达档席自清仅是后备)—— 只审契约增量 diff、结论一行写在卡上、清标签后卡方可入队;每小时一轮即天然攒批;过渡期(分诊 Routine 未建成前)由 skills 席代行。**降档保险丝**: + 肢**由声明行承载。档位以 dispatch-gates 常量 `CONTRACT_REVIEW_TIER` 为准(档位单源,⛔ 本文与标签不写模型名,模型升级只改一行一个文件)。派发席职责止于:卡上记一行认定、挂 `needs:contract-review`(标签命名审的对象,恒英文)——**PR 与卡双载体同笔挂**(维护者 2026-08-22:「简化一点是否可以直接挂 PR 侧」「两边都挂好」;PR 一存在即挂,报告先于 PR 到达则先挂卡侧、ACCEPT 时补齐 PR 侧),同笔在该 PR 上向复审席账号 request review(同裁决:「也可以直接要求复审」—— 仅通知,载体仍是标签)、停手;⛔ 禁止自查放行。 +- **`needs:contract-review` 复审链**:复审资格 —— ① 跑在契约复审档位,硬条件,认定只认降档保险丝的机读;② 非该卡派发席,已从资格条件放宽为路径偏好(维护者 2026-08-21,原话:「你自己就是 Fable,自己就可以审核」):经同一机读证实达档的派发席,可对自派的卡执行契约复审并清标(审的是低档实现者的契约增量,非自身产物 —— 派发席不写代码);放宽豁免的是独立席位,不是复审本身 —— 一行结论照样先落卡、后清标,上条「⛔ 禁止自查放行」禁的是免复审直放,不禁本路径;低于契约复审档位的席照旧留标等待。归属:常设 = 分诊席(Routine 模型由维护者在 Routines UI + 钉在契约复审档位),分诊轮子轮清该标签仍是默认清标路径(达档席自清仅是后备)—— 只审契约增量 diff、结论一行写在卡上、PASS 双载体同笔清标(PR 与卡各按标签纪律硬步骤)并清 review request 或留一条 review 评论,标清后卡方可入队;每小时一轮即天然攒批;过渡期(分诊 Routine 未建成前)由 skills 席代行。**降档保险丝**: 子轮开场**必调一次 `get_session`**(claude-code-remote MCP,无参)读 `external_metadata.last_served_model`,⛔ 自述档位不是读数(静默降档腐蚀的恰是自述;实测与配置档陷阱见 platform-readings);读数 ≠ `CONTRACT_REVIEW_TIER` ⇒ 该子轮整体跳过、标签原样留置 —— 卡在队列外等待是安全态;契约复审 ⛔ 不适用额度耗尽豁免降档(豁免的对象是派发;复审的存在意义就是补偿一次低于地板的派发)。**载体不迁移**(维护者 2026-08-18,原话:「中期把闸门迁到 PR review 的 Request Changes 上 我觉得没必要」):闸门载体保持本标签,⛔ 不迁 PR review / Request Changes、不为迁移留门;挂与清皆按标签纪律的 read-modify-write 硬步骤写。 - **碰生成物的 PR,入队前先同步 + 整体重生成**(os-regen 驱动零冲突标记地**静默丢掉一侧改动**): 四步序已机械化 `bash scripts/pm/os-regen-merge.sh`;陷阱、断言措辞与锚点禁令见 landing-operations A。