Skip to content

Commit 1d16d64

Browse files
docs(pm-dispatch): a precedent-settled new key or export name is the seat's call under the veto window (#29825)
<!-- claude-projects-attribution: {"github_login":"os-support-ai"} --> _Requested by **Yibo Wang** · [project thread](https://claude.ai/code/project/chan_01BVUyyPie8gHwoPM18iABwB?thread=cmsg_01BVUyyPie8gHwoPM18iABwBUyArWn6eHL33NNgvdpkwiW)_ Fixes #29663 ## 维护者速读 - 改了什么:pm-dispatch 技能文本加两句:先例已定拼写的新键名/值/导出名归席位,PR 点名先例、否决窗口落地;分诊审计不自加批准门,只有语义或契约形状真分歧才呈你。 - 为什么改:你 2026-11-03 的两条回答(「只有真分歧才送」「立,我来立」);此前六个 PR 只为等一个已有先例的名字获批而停在队外。 - 风险与回滚:只改规则文本,不动代码、门禁或已裁的六张卡;回滚即 revert 本 PR。 - 先看:`.claude/skills/pm-dispatch/SKILL.md` 〈升级与决策〉新增行(及为付行数删掉的「速读六行固定」一行,它在 `os-dev.md` 原样保留),再看 `references/triage-duties.md` 第 40 行。 - 两分钟验证:`pnpm check:pm-skill-ratchet && pnpm check:pm-skill-id-lint`,预期两门绿,SKILL.md 仍为 319 行。 - 需要你做的:无,席位达档复核后落地。 Clause-②: no Metadata-protocol: none ## What changes Two sentences of rule text under `.claude/skills/pm-dispatch/`, nothing else. - `SKILL.md` 〈升级与决策〉, right after the discretion sentence (「其余归 PM 裁量:派发与排序,维护者否决窗口而非许可门」), gains one line: 「新键/值/导出名有先例(spec、生产者或标准同词同概念):席位点名先例,否决窗口落地。」 — the precedent test (same word, same concept, in the spec, the producer or the standard the key implements), the seat's call, landed under the veto window with the precedent named in the PR body. The escalation test two lines above it (「选项在产品语义或公开契约形状上真实分歧且既有规范定不了」) stays the only path to the maintainer. - `references/triage-duties.md`, right after the `needs-user-decision` definition line, gains one line: 「先例已定新键/导出名非契约形状提案;分诊审计 ⛔ 不自加门,唯语义/形状真分歧呈人。」 — a precedent-settled name is not a 契约形状提案, triage's audit comment adds no approval gate of its own, and only a genuine divergence on semantics or shape goes to the maintainer. - Line ratchet, `SKILL.md`: paid line for line. The cut is 「速读六行固定:改了什么/为什么改/风险与回滚/先看/两分钟验证/需要你做的。」 in the seat-record block; its content lives verbatim in `.claude/agents/os-dev.md` (「六行固定:改了什么/为什么改/风险与回滚/先看/两分钟验证/需要你做的。」), the file whose reader writes those six lines; the SKILL.md lines beside it still say the seat corrects the six lines of the dev's draft. No re-wrap anywhere. ## Why The maintainer's order, quoted on the card verbatim: 「以后新键名/导出名还送你批吗? → 只有真分歧才送」 and 「立一张 skills 卡补这句澄清吗? → 立,我来立」. Neither file said what a new key name on an already-ruled protocol card is, and triage read every such name as a 契约形状提案 that waits for the maintainer's approval line. ## Tests Rule text only; no test file moves. The gates that read these files are in Verification. ## Acceptance notes - Premise measured on `origin/main` @ `10e4a774` before the edit: `SKILL.md` 319 lines at its ratchet ceiling (319); `triage-duties.md` 96 lines, the `needs-user-decision` definition on line 39 (the card says 42); no 「先例」/precedent rule in either file. - Line budget as dispatched: `SKILL.md` net 0 (319 → 319), `triage-duties.md` +1 (96 → 97). Touched lines: 114 and 116 bytes, under 120. No issue number in operative text. - Nothing in `AGENTS.md`, the DELIBERATE CORRECTION class of `check-empty-changeset`, or the six already-ruled cards moves. - Concurrent `.claude/skills/pm-dispatch/**` work (the one-line `references/execution-duties.md` edit on another seat's PR) touches neither file here; the branch was fast-forwarded to `origin/main` @ `10e4a774` before the edit. - `skip-changeset`: `.claude/**` publishes nothing from any released package. ## Verification Head `87c5223b` = `origin/main` @ `10e4a774` + this one commit. Every reading below was taken on that tree. <details><summary>Derived gates — dispatch-gates --commands --repo objectstack-ai/objectstack</summary> 22 families derived (2 paths vs merge base 10e4a77). All 22 run, each exit code captured before any pipe: 22 × exit 0. `check:doc-formula-expressions` first answered exit 3 (PREREQUISITE NOT MET: `@objectstack/formula` and `@objectstack/lint` not built); after `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` under `os-verify-lock` (VERDICT command-exit 0, 113 s) it was rerun: exit 0. `dispatch-gates --ran`: 22 derived, 22 run, 0 NOT-MEASURED, 0 UNRUN. Included: `check:pm-skill-ratchet` exit 0, `check:pm-skill-id-lint` exit 0, `check:pm-governed-prose` exit 0, `check:skill-frame-sync` exit 0. </details> <details><summary>Not run locally</summary> `pnpm lint` and the rest of the repo-wide farm are CI's run. Tier: `dispatch-gates --tier` on `SKILL.md` answers MANDATORY claude-fable-5-1 (clause ①); the sentence landed in `SKILL.md` as well as `references/triage-duties.md`, so the tier stays as dispatched. </details> ## Human Minimum - [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic. (not touched) - [x] 2. Every name I added uses the casing for its kind. (no names added) - [x] 3. No formatter ran; `pnpm lint` is CI's run on this PR. - [x] 4. One issue, one branch off an up-to-date `main`, one pull request. - [x] 5. Publishes nothing (`skip-changeset`); both declaration lines are above. - [x] 6. `packages/spec` not touched. - [x] 7. No hand edits to `content/docs/references/`, `packages/*/CHANGELOG.md` or `content/docs/releases/`. - [x] 8. Title, body and comments are in English; the quoted rulings stay verbatim. - [x] The *Before Submitting* list in CONTRIBUTING.md is done. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01WGufzeuZW7cui7Lktvjq41 --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent e756782 commit 1d16d64

2 files changed

Lines changed: 3 additions & 2 deletions

File tree

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
189189
- ② PR 悬着等人批,同笔挂 `needs-user-decision`;人工直合即审核记录,授权批准 ⇒ 席位落地。
190190
- 指针 `ACCEPT → PR #n comment <id>`;受管/spec 面欠完整复核 ①–④,席未达档起隔离达档复核。
191191
- 核对六项:形态/前提实测/门禁 check-runs/接受的偏差/范围外去向+`Skills-docs:`/落地条款。
192-
- 速读六行固定:改了什么/为什么改/风险与回滚/先看/两分钟验证/需要你做的。
193-
- 草稿归 dev:每个 PR 正文带 `## 维护者速读` 六行,中文、业务角度,不写席位意见。
192+
- 草稿归 dev:PR 正文带 `## 维护者速读` 六行(见 os-dev.md),中文、业务角度,不写席位意见。
194193
- 终稿 = 席位对照自己读的 diff 校正六行、加席位意见行,置顶席位记录;维护者只读评论。
195194
- PR 上的标签 = 待维护者审阅,不入六态;与请审同为等人批清单,随获批或撤回判决离开。
196195
- 批准判定单源 = 队列守卫常量 `GOVERNED_APPROVERS`:授权账户 APPROVED 即算,⛔ 不卡 `commit_id`。
@@ -213,6 +212,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
213212
- 或责任三答齐指他人代码、已有正路、仅最高权限可达 ⇒ 只提文档或决策卡,⛔ 不派码。
214213
- 或修复以猜测(键名、值形状、模式表)定安全边界 ⇒ 决策卡先比对声明式方案。
215214
- 或修复需破坏性/难回滚动作;其余归 PM 裁量:派发与排序,维护者否决窗口而非许可门。
215+
- 新键/值/导出名有先例(spec、生产者或标准同词同概念):席位点名先例,否决窗口落地。
216216
- 人工地板与风险/工作量判据(`triage-duties.md`)任一命中即呈维护者,⛔ 不入 PM 裁量。
217217
- 不升级类(碰产品行为或契约即报 fork):恢复不变量;任务顺序;验证策略;说明书脱节。
218218
- 四类记账事同属不升级类,恒以无产品可见行为变化为界:去重与卡片合并;台账与记账整理;

‎.claude/skills/pm-dispatch/references/triage-duties.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
- 或实测拖慢车队开发:正确源上假红/假绿、反复重跑、同因丢复核轮;卡须具名实例。
3838
- `pm:queue` 也收恢复不变量的 finding、test-only pin,与实现未被裁错的说明书脱节(修文档)。
3939
- `needs-user-decision` = 设计卡、feature/契约形状提案、需要 appetite 的多周程序。
40+
- 先例已定新键/值/导出名非契约形状提案;分诊审计 ⛔ 不自加门,唯语义/形状真分歧呈人。
4041
- 碰迁移形状或删已发布能力也进决策箱;说明书脱节不进:有裁定出处才是 (b),否则改文档。
4142
- 决策卡速读居四棱块之上、同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。
4243
- 首行写立卡门类别 ①–④;四类定义、⛔ 清单、四答、理由判据与配额见 `filing-gate.md`。

0 commit comments

Comments
 (0)