diff --git a/.claude/agents/os-dev.md b/.claude/agents/os-dev.md index 23ff9acff34..366a8202b0e 100644 --- a/.claude/agents/os-dev.md +++ b/.claude/agents/os-dev.md @@ -135,6 +135,8 @@ model: opus - ② 受影响包自己的 `pnpm test` / `pnpm typecheck`,用 `--filter` 圈定。 - 受影响包 = 本包;import 方只在公开面变化时欠测试:spec 契约、发布的 `exports`、线上形状。 - 公开面字节不变 ⇒ 只欠本包测试与派生门禁,⛔ 不给每个 import 方补测试。 +- ② 不含 `test:repo`(vitest `repo` 项目):它归 CI,`Test Core` 在 PR 与 merge group 都跑。 +- 仅 diff 改该项目测试或派生清单点名它时本地跑,否则 `deviations` 写明;席位 ACCEPT 读其 CI。 - ③ 读到改动文件的门禁族 = `--commands` 派生清单(按 diff 收窄);派发词清单与全农场归 CI。 - 新 fake engine ⇒ `check:engine-double-contract`;新错误码 ⇒ `check:error-code-casing`。 - ④ 报告 `gates`:CI 跑的每族引 PR check-runs(名+结论),⛔ 不本地重跑;`--ran` 只对账本地子集。 diff --git a/.claude/skills/pm-dispatch/references/execution-duties.md b/.claude/skills/pm-dispatch/references/execution-duties.md index 534f47a75c9..d5372cff24d 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -142,6 +142,9 @@ - 拒收用例 ⇒ `code`+`status` 最低断言;过滤/谓词语义 ⇒ 编译面清单逐面申报,⛔ 静默略过。 - 资源与后端:S 级机械 + M ⇒ `mode:subagent`;S 级但不机械(判断面在设计不在门禁)按 M 待遇。 - `mode:cloud` 只保留给 L/XL、活过 PM 会话的工作、浏览器/dogfood 验证;build 重的 M 卡逐卡判。 +- 申报文件面写 `packages/spec/src/**` 且至少另一包 ⇒ build 重,派 `mode:cloud`,一卡一容器。 +- 一容器同时至多跑一个 build 重子代理;云会话建闭包拉 turbo 远程缓存。 +- 首张这类派发实测固定开销(安装 + 拉缓存)并记在其卡上。 - 归档义务只落在云卡;OOM 死的单独重派;判定连同档位写进认领评论。 - 一次性云卡用 `create_session`,⛔ 不用 create_trigger+fire;trigger 流只留给定时/重复型。 - 云会话 `SendMessage` not-reachable 是设计非故障,⛔ 不复测。 diff --git a/scripts/pm/check-skill-line-ratchet.mjs b/scripts/pm/check-skill-line-ratchet.mjs index 0c48f9f5fbb..86eba3bf456 100644 --- a/scripts/pm/check-skill-line-ratchet.mjs +++ b/scripts/pm/check-skill-line-ratchet.mjs @@ -1259,7 +1259,27 @@ export const CEILINGS = new Map([ // the text needs, the ruling id and the delta quoted in the raising PR's body. // This file is not a CROSS_FILE_MOVES destination, so no `ruledRaises` record // applies. Landed count, headroom 0, same convention. - ['.claude/skills/pm-dispatch/references/execution-duties.md', 185], + // Raised 185 → 188 by the build-heavy routing ruling — an ORDINARY raise, ⛔ + // not a cross-file move (card #23607). The text is three rule lines beside the + // `mode:cloud` line in 〈派发〉: a card whose declared file surface writes + // `packages/spec/src/**` and at least one other package is build-heavy and is + // dispatched `mode:cloud`, one container per such card; a container runs at + // most one build-heavy subagent at a time; the cloud session pulls the turbo + // remote cache for the closure, and the first such dispatch measures its fixed + // cost (install plus cache pull) and records it on its card. Ordered by ruling + // record 6184828752 on #23607 (letters F1 A · F2 A, item 2); maintainer, + // 2026-10-15, verbatim and untranslated: 「同意」. Three lines, measured: the + // tightest one-line spelling of the ruled content is 245 B against the + // 120-byte cap, and neither two-line split fits — the test with the + // per-container limit is 137 B at its tightest, the limit with the cache and + // fixed-cost parts 141 B; the three lines land at 112 B, 95 B and 79 B. + // Authorized under ruling record 6184799323 on #23606 (letter B, item 1; + // maintainer 「同意」), the ruling id and the delta quoted in the raising PR's + // body. The same ruling's F1 lines in `.claude/agents/os-dev.md` (+2) fit + // that file's standing headroom, so its row does not move. Not a + // CROSS_FILE_MOVES destination, so no `ruledRaises` record applies. Landed + // count, headroom 0, same convention. + ['.claude/skills/pm-dispatch/references/execution-duties.md', 188], // New file, landed at its own count (headroom 0, same convention as every // entry above): the filing gate and the grading/reading criteria the triage // seat applies. A new pm-dispatch references file belongs in this map by the