Repository navigation
docs(pm): landing pre-check ③ points at the by-design-red clause - #18450
os-elon-musk merged 1 commit into
Conversation
③ listed one exception (a merge-base red with the same failure signature) and carried no pointer to the three-condition 按设计而红 clause in the pm-dispatch SKILL.md, so the two 细则 disagreed on their face: a seat reading ③ alone would stall a correctly-confirmed PR, or infer a general escape hatch that does not exist. Re-key the row in place: name the clause by pointer, keep its single home in SKILL.md + core-rules (⛔ do not restate the three conditions). Paid by deletion inside the row — 「全部」 drops (全绿 already quantifies) and 「上同名同失败签名」 narrows to 「同签名」, which the next row already defines (「签名 = 失败步 + 首错行」). The 「⛔ 非 required 子集」 discipline and the merge-base exception both stay readable in the row. 110 B → 118 B (cap 120); file stays at 60 / 60. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HPfcjvF23QBoBj7P47DDxs
Contract reviewServed-tier: Skills seat, ① Derived judgments
② Semver levelNone owed: nothing publishes; ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
|
Landing provenance — skills seat, Generated by Claude Code |
Fixes #18404
Landing pre-check ③ in
.claude/skills/pm-dispatch/references/contract-review.mdlisted exactly one exception and carried no pointer to the three-condition 「按设计而红」 clause thatSKILL.mdandreferences/core-rules.mdalready state. This re-keys that one row in place so it names the clause by pointer. The clause's single home is unchanged — this PR does not restate its three conditions, and does not touchSKILL.mdorcore-rules.md.The card's central premise ("no such exception exists in the protocol") was refuted in triage comment 5695296976: the clause exists, spelled 「按设计而红」, which the card's 「按设计红」 /
by-designprobe missed. What survived — and what this PR implements — is the smaller, real defect: ③ carried no pointer to it, so the two 细则 disagreed on their face.The row, before and after
Before (
contract-review.md:45, 110 bytes):After (118 bytes, cap 120):
Paid by deletion inside the row, per the ratchet (60 / 60, headroom 0):
SKILL.mdstates the enqueue bar in full (「入队资格 = 每个 check 为 success 或预期 skip …⛔ 不是 required 子集」).The PM's suggested wording measured 139 bytes and the nearest variants that kept 「全部」 measured 125 bytes, both over the 120-byte cap; 118 bytes is the widest spelling found that keeps the merge-base exception with its 「红」 intact.
维护者速读(草稿)
改了什么 — PM 技能事实层一行:落地前检 ③ 原来只写了一条例外(merge-base 上同签名的红不计),现在加一个指针,指向
SKILL.md里已经存在的「按设计而红」三条款,作为 ③ 的第二条例外。三条款本身不复述,仍然只住在SKILL.md+core-rules.md。整个 PR 只动这一行。为什么改 —
scripts/check-empty-changeset.mjs会故意制造永久红(它自己写着「staying red is what puts the decision in front of a person instead of routing around it」),所以「带一条按设计红 + 维护者确认」是个会反复出现的形态。协议里本来就有处置它的三条款,但读 ③ 的人看不到指针:要么误以为 ③ 有个通用逃生口,要么把一个已被正确确认的 PR 卡住。这次把两条细则对齐。风险与代价(含回滚) — 风险低:纯文本,不发布任何东西,不改任何门禁行为。唯一的实质取舍是为了塞进 120 字节上限做的两处删减(「全部」与「上同名同失败签名」),两处的语义都在同文件下一行或
SKILL.md里逐字保留。回滚 = revert 这一个 commit,文件回到 110 字节的原行,行数不变(60 / 60)。席位意见 — (留空,待席位复核填写)
你要做的 — 读一遍上面 before / after 两行,确认 118 字节的新拼写没有削弱 ③ 的 「⛔ 非 required 子集」 纪律,也没有把三条款搬出
SKILL.md。Acceptance notes
contract-review.md; ⛔ no change toSKILL.md,core-rules.mdorreview-checklist.md(the last already says 「第三种情形见 SKILL.md」).pnpm check:pm-skill-ratchet✓ 「.claude/skills/pm-dispatch/references/contract-review.md is 60 lines (ceiling 60; headroom 0)」. Row 118 bytes against the 120-byte per-line cap.skip-changeset. AGENTS.md Post-Task Checklist step 3, verbatim: 「⛔ neverskip-changeset: that label is for a diff that publishes nothing from any released package.」.claude/**is not shipped by any package'sfiles[], so this diff publishes nothing and the label is exactly what step 3 permits.node scripts/pm/dispatch-gates.mjs --commandswere run in the foreground at headd8636f54; 15 / 15 exit 0, reconciled with--ran(「15 derived famil(ies) accounted for — 15 run, 0 NOT-MEASURED (a DERIVED zero)」).pnpm check:pm-governed-prosealso run: exit 0.pnpm check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET — unbuilt workspace packages, the gate's own words: 「Nothing was measured」); afterturbo run build --filter=@objectstack/formula --filter=@objectstack/lintit exits 0.Generated by Claude Code