Skip to content

docs(pm-skill): clause-② CONTENT limb reaches published skills/** — ruled applicability, narrowed criterion - #13746

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-13588-clause2-content-limb
Aug 31, 2026
Merged

docs(pm-skill): clause-② CONTENT limb reaches published skills/** — ruled applicability, narrowed criterion#13746
os-zhuang merged 1 commit into
mainfrom
claude/issue-13588-clause2-content-limb

Conversation

@huangyiirene

Copy link
Copy Markdown
Collaborator

Part of #13588 — half A of the two ruled halves. Half C is reported separately; this PR does not carry it.

Draft on purpose, and it stays draft. .claude/** is a governed surface: human merge only. Never flip to ready, never enqueue.

What the adjudication says

Maintainer, 2026-08-31, 第 6 场总监席决裁批 #12, verbatim 「同意」. Quoted rather than paraphrased, because the exceptions are the load-bearing half:

A(纳入,判据收窄):published skills/**作出可证伪的算子/契约语义主张的改动落入条款② CONTENT 肢 ⇒ 该 PR 挂 needs:contract-review 走复审链(标签时序照旧遵守 2026-08-28 不预挂裁定:PR 存在的同笔挂)。判据是「可证伪的语义主张」,⛔ 不是「提到契约」——纯算子清单、拼写、格式改动不触发(#13539 实测:10 处命中仅 3 处有主张,即为标尺)。受管面人工合并照旧,两道保障叠加不互替。

执行落点:A 半是 skill/SOP 文本变更(受管面,skills 车道,draft + 人工合并;条款②细则单源 references/contract-review.md 的适用性段同笔补一句)

The change

One bullet, three lines, at the head of 载体纪律(挂与清) in .claude/skills/pm-dispatch/references/contract-review.md — the ruled single source. It carries all four load-bearing parts of the ruling: the scope (published skills/**), the narrowed criterion (可证伪的算子/契约语义主张), the explicit ⛔ negative (not 「提到契约」; operator lists, spelling and formatting do not trigger), and the 10-hits/3-claims yardstick. Provenance is dated in the text.

Attach timing is deliberately not restated: the adjacent bullet directly below is the 2026-08-28 不预挂 ruling, which already governs it. One rule, one home.

Why the ceiling moves 48 → 51, and what was tried first

check-skill-line-ratchet.mjs holds this file at 48 lines, headroom 0. Its own discipline: "RAISING one requires a maintainer ruling quoted in the raising PR's body… A protocol change that would cross a ceiling pays its way by moving narrative out (SKILL.md → references/) or compressing in place, instead of raising the roof." The ruling above is that evidence, and here is why neither in-place route was available:

  • Moving narrative out is not available. This is the references file; the only direction left is SKILL.md, which is the wrong direction and out of scope.
  • Compressing in place would be re-wrap funding. Measured on this file: 41 content lines, 577 bytes of total slack under the 120-byte cap, mean width 105.9/120. The addition is 332 bytes. Absorbing it without a new line means re-wrapping the whole file — refused per the 2026-08-17 rule, exactly as recorded on the dispatch-runbook.md entry in the same map.
  • The only other in-place payment was deleting a ruled clause — refused on the state-machine.md precedent in the same map (43 → 44, same shape: one ruled addition, no payment available, landed count, headroom 0).

The raise lands at the landed count with headroom 0 again, same convention as every neighbouring entry, and the CEILINGS comment carries the measurement so it is checkable without re-deriving it.

Measured, not assumed

  • The file is 51 lines, every line ≤ 120 bytes (the gate's own wrapLine did the wrapping). Gate verdict lines, quoted from the gate:
    • ✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/contract-review.md is 51 lines (ceiling 51; headroom 0).
    • ✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/contract-review.md: widest table row is 0 bytes (pin 0; headroom 0).
  • No published skills/** file is touched, so the published-bundle line/token readings do not apply to this diff. The edited skill root is .claude/skills/**, priced in LINES by the ratchet above — which is exactly the reading reported here.

Gates

Derived from the REAL diff with node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack in a fresh worktree (not from a hand-written path list), and run at the final commit b812c180. 20 commands, exit code captured before any pipe:

  • 19 green (exit 0), including check:pm-skill-ratchet, check:pm-skill-id-lint, check:skill-frame-sync, check:doc-authoring, check:agent-test-spelling, check:pm-governed-merges, check:pm-dispatch-gates, check:parse-guard, check:entry-guard, check:watch-hint-literal, check:pnpm-filter-targets, check:cli-command-ids, check:bash32-floor, check:cross-package-test-inputs, check:doc-formula-expressions, check-ci-filter-parity, check-cross-package-test-inputs, check-shard-attestation, bare-root-worklist --self-test.
  • 1 NOT MEASURED: node scripts/check-test-completeness.mjs exits 3 with PREREQUISITE NOT MET — it grades a saved turbo run test log that only CI produces. Its own output states this is "not a red, and there is nothing here to fix". Recorded as NOT MEASURED, not as green and not as red.
  • pnpm check:nul-bytes green separately (standing rule for any edit): check-nul-bytes: OK (scanned 7572 text file(s) … no raw ASCII control bytes).
  • Because this diff edits a gate script, that script's own suite was run rather than only its derived family. check-skill-line-ratchet --self-test passes (it is the script's test suite — there is no separate *.test.ts for it). The three other gates in the tree that read this script by name were then enumerated by git grep and run directly, since the path derivation names only one of them: check:pm-dispatch-gates exit 0, node scripts/check-published-list-mirrors.mjs exit 0, node scripts/check-skills-token-ratchet.mjs exit 0 (✓ 38 authored bundle file(s) within their ceilings).

Changeset

None, deliberately. The diff is .claude/** + scripts/pm/** only — nothing publishes from any package — so it is on the closed skip-changeset list, and that label is applied in the same stroke as this PR rather than after a red Check Changeset.

One thing this PR does NOT close, reported rather than fixed

The two-limb (双肢) definition itself lives in pm-dispatch/SKILL.md, which is out of scope for this card (fable-mandated face under its own line ratchet), and its clause-② gate paragraph routes readers here only for 载体纪律、资格与归属、降档保险丝 — applicability is not among the three topics it names. The criterion is reachable in practice, because the operative half of the ruling is an attach rule and 载体纪律 is exactly where an attaching seat lands. But a reader who consults only SKILL.md's 双肢 paragraph will not see the skills/** face named. Closing that gap needs a SKILL.md edit; flagged here for the PM to route, not taken.


Generated by Claude Code

Records the 2026-08-31 adjudication (第 6 场总监席决裁批 #12, maintainer
verbatim 「同意」) in the ruled single source for the review chain: a change
to published `skills/**` that makes a FALSIFIABLE operator/contract semantic
claim falls under clause ②'s CONTENT limb and goes through the review chain.

The criterion is narrowed on purpose — 「可证伪的语义主张」, not 「提到契约」.
Pure operator lists, spelling and formatting changes do not trigger it; the
yardstick is the measured 10-hits/3-claims split.

The line ceiling for the file moves 48 -> 51 by the same ruling; the CEILINGS
comment carries the measurement showing the three lines could not be paid in
place without re-wrap funding, which is refused.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EnE7G31tqbxN1rqpQmzurT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants