Skip to content

Commit f5c08e9

Browse files
committed
docs(agents,skills,pm): make the remaining one-shot-executor fences executable, and re-lock the retirement pin
Every instruction addressed to a one-shot executor must be terminal within the run. Four sites still asked for a mid-run channel that executor does not have; three of them are rewritten here (the fourth rides its own PR on SKILL.md): - os-dev.md — "go ask" about PR state a dev did not set becomes forbid plus a terminal route: never correct it, put the question in the report, and report `blocked` where it blocks the work. - dispatch-runbook.md — the verbatim dispatch-word sentence about a producer in another package drops its "notify first, then fix" sequencing and keeps the trace: fix at the producer, record the landing point and the reasoning. - checklist-test/SKILL.md and its RUNNER.md twin — an auth/authz repro no longer says "stop and wait for the maintainer"; the run ends with that report, which the RUNNER rule already calls a completed verdict. Both copies move together. Two clauses on the same file, both line-neutral and paid for by deleted rationale, never by re-wrap: the line-ratchet clause gains the ruled measurement-first exception for a governed ledger at zero headroom, and the PR rules gain the clause-2 carrier line (the dev hangs `needs:contract-review` on the PR in the same write and reports the pair predicate's exit). The skill line ratchet's `max-table-row-bytes` pin for the retirement playbook drops 328 to 326, the value the gate has been printing as an advisory on every run. Lowering a shrink-only pin needs no ruling; the gate now prints none. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
1 parent 3e270d4 commit f5c08e9

5 files changed

Lines changed: 19 additions & 18 deletions

File tree

.claude/agents/os-dev.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ model: opus
3535
- 你的身份位是认领评论里的分支;仓 CLAUDE.md 的 claim-first 已由 PM 的认领满足。
3636
- 你恒不写 assignee;到手时它为空照常开工,报进 `summary`
3737
- 发现与他人在途工作重复,停下报 `blocked`
38-
- PR 上不是你设置的状态属于另一个 actor:去问,⛔ 永不去纠正。
38+
- PR 上不是你设置的状态属于另一个 actor:⛔ 永不去纠正;疑问进报告,挡住报 blocked
3939
- 共享身份让所有人的写入都像你写的;被改写的 body 只是关于 body 的证据,不证明别的。
4040
- 回退他人的操作(尤其 ready 翻转)永不轮到你;把意外写进 `summary`
4141
3. **范围 = 这张 issue,别无其它。** 顺路撞见的无关缺陷立成新的无 assignee issue。
@@ -276,19 +276,19 @@ model: opus
276276
- 关键词是 `fix/fixes/fixed/close/closes/closed``resolve/resolves/resolved`;让它们远离其它卡号。
277277
-`#<n> is not addressed here``out of scope: #<n>``#<n> remains open`
278278
- PR 正文与 commit message 分开解析:卡片关系只在正文声明一次,commit ⛔ 不带卡片 trailer。
279-
- squash 会把全部 commit message 连成一条落地,逐条诚实拼成的一条自相矛盾。
280279
- 标题与散文用英文(见 AGENTS.md);引用的中文裁决保持原文不译,改写引文就是改写裁决。
281280
- 受管面(见 AGENTS.md)PR 正文带 `## 维护者速读(草稿)` 节,中文、业务角度,席位意见留空。
282281
- 五段固定:改了什么/为什么改/风险与代价(含回滚)/席位意见/你要做的;席位定稿成评论。
283282
- 正文以 session-URL 形式的署名页脚收尾(见字节与 sanitizer 纪律节)。
283+
- 认领写 `Clause-②: yes` ⇒ 开 PR 同笔挂 `needs:contract-review`,报告附 `--pair N` 退出码。
284284
-`skills/**`(对外发布的技能包)的 diff:PR 正文报两个读数,并默认拒绝小功能大扩写。
285285
- 两个读数缺一不可:被改文件的整文件 before/after,与整包 before/after(全部 SKILL.md 之和)。
286286
- 行数为准,姊妹门禁定义 token 计数后同报 token。
287287
- 净增预算装不下 ⇒ 按 `blocked` 报缺口;⛔ 不自行扩写或抬预算:预算归 PM,抬它归维护者。
288-
- 付行数棘轮的唯一合法货币是删内容:⛔ 不拿 re-wrap(折行合并)当筹行。
289-
- 棘轮治理的是内容体量,行数只是机读代理,新增以删减付账;密度优化只随净减内容的 PR。
290-
- 分界只问折行有没有为新增内容买行,门禁分不出两种 net-0。
288+
- 付行数棘轮的唯一合法货币是删内容:⛔ 不拿 re-wrap(折行合并)当筹行,新增以删减付账。
289+
- 密度优化只随净减内容的 PR;分界只问折行有没有为新增内容买行。
291290
- ⛔ 不把不买内容的密度修复当筹行拒掉;删不出等量内容 ⇒ 报 `blocked`,⛔ 不抬 ceiling。
291+
- 例外:派发令点名测量优先的零余量受管账本 ⇒ 落行、不动上限行、红着报实测行数。
292292
- `skip-changeset` 标签按仓库分流,先认清目标仓有没有这个机制;判据:不从任何包发布东西。
293293
- 例:`docs/adr/**` · `.claude/**` · `scripts/pm/**` · 仓根工具配置 · 私有 workspace · 注释。
294294
- 本仓库:标签是真实机制,打标签是你的步骤、不是 CI 的,PR 一开出就打。

.claude/skills/checklist-test/SKILL.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,10 +225,10 @@ QA-source: #运行记录号 · area.item · 条款
225225
- **不伪造覆盖。** 缺 fixture → `blocked(fixture)` 带理由;console 没构建 → 构建它
226226
或记 `blocked(environment)`;证到一半的项是 `partial`,不是 `pass`。带证据的
227227
blocked 判定是一次成功运行;伪造的 pass 不是。
228-
- **认证 / 授权漏洞的复现,永不发布到 GitHub 的任何地方** —— 不进运行 issue,不进跟
229-
踪卡,不进评论。记下项 id、条款与 `detail withheld pending maintainer`,复现留在会
230-
话里,停下等维护者。⚠ 这与 RUNNER 规则 2 是**同一条规则写在两处**,⛔ 两边都不是
231-
对另一边的优先级主张;完整论证与它的维护者裁定在 RUNNER。
228+
- **认证 / 授权漏洞的复现,永不发布到 GitHub 的任何地方** —— 不进运行 issue,不进跟踪
229+
,不进评论。记下项 id、条款与 `detail withheld pending maintainer`,复现留在会话里,本轮以该报
230+
告终局,⛔ 不等维护者。⚠ 这与 RUNNER 规则 2 是**同一条规则写在两处**,⛔ 两边都不是对
231+
另一边的优先级主张;完整论证与它的维护者裁定在 RUNNER。
232232
- **不把 blocked 项当可运行的跑** —— 解析器隐藏它们正为此。
233233
- **一个选择器、一次运行、一张 issue。** release sweep 把 `since:vN`
234234
`priority:P0` 作为分开的两轮跑 → 两张 issue,不要糊在一起。

.claude/skills/pm-dispatch/references/dispatch-runbook.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@
209209
- 派发那刻现取,把该副本的 commit 与 md5 记进派发词。
210210
- ⛔ 仓内任何文件不得另立第三份,`check:skill-frame-sync` 全树扫;os-dev 定义没带就停下索取。
211211
- 文件面两句原文照抄:预期落点是 X。
212-
- 若实测表明真正的生产者在别包,报备后按生产者侧修,落点与理由写进报告和 PR 正文。
212+
- 若实测表明真正的生产者在别包,直接按生产者侧修,落点与理由写进报告和 PR 正文。
213213
- ⛔ 不在消费者侧打补丁;只写一个路径名,是要求 dev 在守约与修对之间二选一。
214214
- 跨包常等于跨车道,PM 事后补跨座位声明。
215215
- 模型标识只禁内容工件:PR 标题与正文、代码注释、文档、changeset、评论。

docs/qa/platform-checklist/RUNNER.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,14 @@ test-run output the clause's `evidence` field names.
6767
the run issue, not a tracking or extracted card, not a comment. Relocating it is not a
6868
mitigation — a tracking card is a public issue in a public repo just the same. Such a
6969
`fail` **is a completed verdict** when it records the item id, the clause, and `detail
70-
withheld pending maintainer`; the reproduction stays in the runner session, and the
71-
runner stops there and waits for the maintainer. Existence published, recipe withheld,
72-
is a complete and actionable report — getting a defect fixed never requires handing
73-
anyone a working exploit. (Maintainer disclosure ruling, 2026-08-18, recorded on
74-
#9387; the `checklist-test` skill states the same guardrail in the same terms — one
75-
rule written in both places, not a precedence claim by either.) **No other failure
76-
class is softened by this**: everything else owes its reproduction rule in full.
70+
withheld pending maintainer`; the reproduction stays in the runner session, and the run
71+
ends there with that report — a one-shot runner has no channel to wait on. Existence
72+
published, recipe withheld, is a complete and actionable report — getting a defect
73+
fixed never requires handing anyone a working exploit. (Maintainer disclosure ruling,
74+
2026-08-18, recorded on #9387; the `checklist-test` skill states the same guardrail in
75+
the same terms — one rule written in both places, not a precedence claim by either.)
76+
**No other failure class is softened by this**: everything else owes its reproduction
77+
rule in full.
7778
3. **Classify blockers honestly.** Missing seed/persona/fixture → `blocked(fixture)`,
7879
and *record the gap on the item* (`fixtures.knownGaps` or `blocked`) so the next
7980
sweep doesn't rediscover it. A defect in the fixture itself (seed silently failing,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1049,7 +1049,7 @@ export const MAX_TABLE_ROW_BYTES = new Map([
10491049
['.claude/skills/checklist-test/SKILL.md', 221],
10501050
['.claude/skills/checklist-author/SKILL.md', 0],
10511051
['.claude/skills/dogfood-verification/SKILL.md', 0],
1052-
['.claude/skills/spec-property-retirement/SKILL.md', 328],
1052+
['.claude/skills/spec-property-retirement/SKILL.md', 326],
10531053
// Lowered 1081 → 768 by the rules-only rewrite: the translations row lost its
10541054
// in-cell narrative; the widest survivor is that same row. Landed width, headroom 0.
10551055
['AGENTS.md', 768],

0 commit comments

Comments
 (0)