Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .claude/agents/os-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ model: opus
- 你的身份位是认领评论里的分支;仓 CLAUDE.md 的 claim-first 已由 PM 的认领满足。
- 你恒不写 assignee;到手时它为空照常开工,报进 `summary`。
- 发现与他人在途工作重复,停下报 `blocked`。
- PR 上不是你设置的状态属于另一个 actor:去问,⛔ 永不去纠正。
- PR 上不是你设置的状态属于另一个 actor:⛔ 永不去纠正;疑问进报告,挡住报 blocked
- 共享身份让所有人的写入都像你写的;被改写的 body 只是关于 body 的证据,不证明别的。
- 回退他人的操作(尤其 ready 翻转)永不轮到你;把意外写进 `summary`。
3. **范围 = 这张 issue,别无其它。** 顺路撞见的无关缺陷立成新的无 assignee issue。
Expand Down Expand Up @@ -276,19 +276,19 @@ model: opus
- 关键词是 `fix/fixes/fixed/close/closes/closed` 与 `resolve/resolves/resolved`;让它们远离其它卡号。
- 写 `#<n> is not addressed here`、`out of scope: #<n>` 或 `#<n> remains open`。
- PR 正文与 commit message 分开解析:卡片关系只在正文声明一次,commit ⛔ 不带卡片 trailer。
- squash 会把全部 commit message 连成一条落地,逐条诚实拼成的一条自相矛盾。
- 标题与散文用英文(见 AGENTS.md);引用的中文裁决保持原文不译,改写引文就是改写裁决。
- 受管面(见 AGENTS.md)PR 正文带 `## 维护者速读(草稿)` 节,中文、业务角度,席位意见留空。
- 五段固定:改了什么/为什么改/风险与代价(含回滚)/席位意见/你要做的;席位定稿成评论。
- 正文以 session-URL 形式的署名页脚收尾(见字节与 sanitizer 纪律节)。
- 认领写 `Clause-②: yes` ⇒ 开 PR 同笔挂 `needs:contract-review`,报告附 `--pair N` 退出码。
- 触 `skills/**`(对外发布的技能包)的 diff:PR 正文报两个读数,并默认拒绝小功能大扩写。
- 两个读数缺一不可:被改文件的整文件 before/after,与整包 before/after(全部 SKILL.md 之和)。
- 行数为准,姊妹门禁定义 token 计数后同报 token。
- 净增预算装不下 ⇒ 按 `blocked` 报缺口;⛔ 不自行扩写或抬预算:预算归 PM,抬它归维护者。
- 付行数棘轮的唯一合法货币是删内容:⛔ 不拿 re-wrap(折行合并)当筹行。
- 棘轮治理的是内容体量,行数只是机读代理,新增以删减付账;密度优化只随净减内容的 PR。
- 分界只问折行有没有为新增内容买行,门禁分不出两种 net-0。
- 付行数棘轮的唯一合法货币是删内容:⛔ 不拿 re-wrap(折行合并)当筹行,新增以删减付账。
- 密度优化只随净减内容的 PR;分界只问折行有没有为新增内容买行。
- ⛔ 不把不买内容的密度修复当筹行拒掉;删不出等量内容 ⇒ 报 `blocked`,⛔ 不抬 ceiling。
- 例外:派发令点名测量优先的零余量受管账本 ⇒ 落行、不动上限行、红着报实测行数。
- `skip-changeset` 标签按仓库分流,先认清目标仓有没有这个机制;判据:不从任何包发布东西。
- 例:`docs/adr/**` · `.claude/**` · `scripts/pm/**` · 仓根工具配置 · 私有 workspace · 注释。
- 本仓库:标签是真实机制,打标签是你的步骤、不是 CI 的,PR 一开出就打。
Expand Down
8 changes: 4 additions & 4 deletions .claude/skills/checklist-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,10 @@ QA-source: #运行记录号 · area.item · 条款
- **不伪造覆盖。** 缺 fixture → `blocked(fixture)` 带理由;console 没构建 → 构建它
或记 `blocked(environment)`;证到一半的项是 `partial`,不是 `pass`。带证据的
blocked 判定是一次成功运行;伪造的 pass 不是。
- **认证 / 授权漏洞的复现,永不发布到 GitHub 的任何地方** —— 不进运行 issue,不进跟
踪卡,不进评论。记下项 id、条款与 `detail withheld pending maintainer`,复现留在会
话里,停下等维护者。⚠ 这与 RUNNER 规则 2 是**同一条规则写在两处**,⛔ 两边都不是
对另一边的优先级主张;完整论证与它的维护者裁定在 RUNNER。
- **认证 / 授权漏洞的复现,永不发布到 GitHub 的任何地方** —— 不进运行 issue,不进跟踪
,不进评论。记下项 id、条款与 `detail withheld pending maintainer`,复现留在会话里,本轮以该报
告终局,⛔ 不等维护者。⚠ 这与 RUNNER 规则 2 是**同一条规则写在两处**,⛔ 两边都不是对
另一边的优先级主张;完整论证与它的维护者裁定在 RUNNER。
- **不把 blocked 项当可运行的跑** —— 解析器隐藏它们正为此。
- **一个选择器、一次运行、一张 issue。** release sweep 把 `since:vN` 与
`priority:P0` 作为分开的两轮跑 → 两张 issue,不要糊在一起。
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/references/dispatch-runbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@
- 派发那刻现取,把该副本的 commit 与 md5 记进派发词。
- ⛔ 仓内任何文件不得另立第三份,`check:skill-frame-sync` 全树扫;os-dev 定义没带就停下索取。
- 文件面两句原文照抄:预期落点是 X。
- 若实测表明真正的生产者在别包,报备后按生产者侧修,落点与理由写进报告和 PR 正文。
- 若实测表明真正的生产者在别包,直接按生产者侧修,落点与理由写进报告和 PR 正文。
- ⛔ 不在消费者侧打补丁;只写一个路径名,是要求 dev 在守约与修对之间二选一。
- 跨包常等于跨车道,PM 事后补跨座位声明。
- 模型标识只禁内容工件:PR 标题与正文、代码注释、文档、changeset、评论。
Expand Down
15 changes: 8 additions & 7 deletions docs/qa/platform-checklist/RUNNER.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,14 @@ test-run output the clause's `evidence` field names.
the run issue, not a tracking or extracted card, not a comment. Relocating it is not a
mitigation — a tracking card is a public issue in a public repo just the same. Such a
`fail` **is a completed verdict** when it records the item id, the clause, and `detail
withheld pending maintainer`; the reproduction stays in the runner session, and the
runner stops there and waits for the maintainer. Existence published, recipe withheld,
is a complete and actionable report — getting a defect fixed never requires handing
anyone a working exploit. (Maintainer disclosure ruling, 2026-08-18, recorded on
#9387; the `checklist-test` skill states the same guardrail in the same terms — one
rule written in both places, not a precedence claim by either.) **No other failure
class is softened by this**: everything else owes its reproduction rule in full.
withheld pending maintainer`; the reproduction stays in the runner session, and the run
ends there with that report — a one-shot runner has no channel to wait on. Existence
published, recipe withheld, is a complete and actionable report — getting a defect
fixed never requires handing anyone a working exploit. (Maintainer disclosure ruling,
2026-08-18, recorded on #9387; the `checklist-test` skill states the same guardrail in
the same terms — one rule written in both places, not a precedence claim by either.)
**No other failure class is softened by this**: everything else owes its reproduction
rule in full.
3. **Classify blockers honestly.** Missing seed/persona/fixture → `blocked(fixture)`,
and *record the gap on the item* (`fixtures.knownGaps` or `blocked`) so the next
sweep doesn't rediscover it. A defect in the fixture itself (seed silently failing,
Expand Down
2 changes: 1 addition & 1 deletion scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1049,7 +1049,7 @@ export const MAX_TABLE_ROW_BYTES = new Map([
['.claude/skills/checklist-test/SKILL.md', 221],
['.claude/skills/checklist-author/SKILL.md', 0],
['.claude/skills/dogfood-verification/SKILL.md', 0],
['.claude/skills/spec-property-retirement/SKILL.md', 328],
['.claude/skills/spec-property-retirement/SKILL.md', 326],
// Lowered 1081 → 768 by the rules-only rewrite: the translations row lost its
// in-cell narrative; the widest survivor is that same row. Landed width, headroom 0.
['AGENTS.md', 768],
Expand Down
Loading