Skip to content

Commit 584fe2e

Browse files
os-zhuangclaude
andauthored
fix(pm): make dispatch-gates name the repo it answers about, and refuse a contradicted --repo assertion (#11126)
* fix(pm): make dispatch-gates name the repo it answers about, and refuse a contradicted --repo assertion The tool derives gate families from the tree it runs in and never said so. Handed a sister repo's paths it returned a confident, well-formed, exit-0 answer about the wrong repo, with no tell — and four of the five repos in scope hold no copy of the script at all, so every sister-repo dispatch was exposed to it. Every derivation now opens with a banner naming the repo and commit the answer came from, and `--repo <owner>/<name>` turns a caller's expectation into a checked assertion that refuses, naming both repos, on mismatch. Paths are repo-relative, so a path's home repo is never guessed: the banner is the unconditional tell and the assertion is the mechanical one. The no-path merge-base mode is untouched apart from the banner. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e * chore(pm): raise the os-dev.md line ceiling 399→405 per the 2026-08-23 maintainer ruling The merge group for this PR went red on check-skill-line-ratchet: os-dev.md composes to 401 lines against main (which #11112 took to 395), and to 405 once the queued #11137 (395→399) lands ahead of it — each PR green alone, over the ceiling only in composition. Maintainer ruling, 2026-08-23, on this PR (option B of the three put to them, verbatim): 「B:提天花板 399→405」 — keep the +6-line cross-repo caveat and raise the ceiling, quoted in the PR body as the ratchet requires. Sized to exactly 405 so headroom returns to zero once both queued PRs land. Gate + 19-case self-test green at this commit. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2d8b92f commit 584fe2e

3 files changed

Lines changed: 382 additions & 4 deletions

File tree

.claude/agents/os-dev.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ JSON,所以终报消息就是 JSON 本身,别无其它。
136136
半归 PM,在你报告之后读真实门禁 job 结论。⛔ 这不是跳过点名族的许可 —— 它们是你仍然欠的
137137
便宜一半;你不再欠的是报告前等 CI。
138138

139+
**该脚本只住在 objectstack,答案永远只关于它自己所在的那棵树** —— 每次推导第一行(stderr)
140+
点名答案取自哪个仓与 commit,读之前先核对。姊妹仓(objectui / cloud)没有 `scripts/pm/`,
141+
把它们的路径喂到 objectstack 的检出里,得到的是 objectstack 的门禁族:形态完整、退出码
142+
0、全错;那边的清单从该仓自己的 `package.json``.github/workflows/` 手工推导。要机械保
143+
险就加 `--repo <owner>/<name>` 申报本次答案该属于哪个仓 —— 不匹配即拒绝并同时点名两个仓。
144+
139145
**仓级扫描(以 `pnpm lint` = `eslint . --no-inline-config` 扫全仓为首)是 CI 拥有的运
140146
行,永不是你欠的。** 前台上限之内跑得完就**可以**跑(轻载实测 ~2 分钟;争用下会被 cap
141147
杀,见「资源纪律」规则 6);默认交付形态是**已证明的收窄**:定向跑受影响文件,并证明这

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,10 @@ export const CEILINGS = new Map([
112112
// platform capabilities implemented upstream, 展现平台能力, 不扩散需求, runs on
113113
// community edition). Set at landed line count (headroom 0, same convention).
114114
['.claude/skills/pm-dispatch/references/lanes/hotcrm.md', 45],
115-
['.claude/agents/os-dev.md', 399],
115+
// 399 → 405 (#11126): maintainer-ruled (2026-08-23, option B, quoted in that
116+
// PR) — the +6-line cross-repo dispatch-gates caveat, sized so the queued
117+
// #11137 (395→399 on main) and this PR's +6 compose to exactly 405.
118+
['.claude/agents/os-dev.md', 405],
116119
// #9473: the other four `.claude/skills/` are read in full by the sessions
117120
// that use them too — the erosion mechanism the ratchet exists to stop
118121
// isn't specific to the pm-dispatch surface. Set at current counts on

0 commit comments

Comments
 (0)