Repository navigation
Commit cb8f520
docs(pm-dispatch): point the PR-body door's three pointers at it without restating the no-footer rule (#31079)
<!-- claude-projects-attribution: {"github_login":"huangyiirene"} -->
_Requested by **Irene** · [project
thread](https://claude.ai/code/project/chan_01TJXtQ1tVD26ecLDZxFS67x?thread=cmsg_01TJXtQ1tVD26ecLDZxFS67x2bRxGynbUjVmYxkdXkEU9Z)_
Fixes #31071
Clause-②: no
Metadata-protocol: none
`dispatch-gates --tier` reads a MANDATORY model tier for
`.claude/skills/pm-dispatch/SKILL.md` (clause ① of the model-tiering
ruling); it is waived by the standing order of the maintainer in this
project (2026-11-03), and this card ran on the project's default model.
The dispatching seat runs the contract review.
## 维护者速读
- 改了什么:三处指向 PR 正文门(`seat-post-protocol.md`
L31)的指针各删掉自带的「不送页脚」副本,只留指针;规则唯一的家是 `seat-post-protocol.md` L32。
- 为什么改:#31050 → #31059 → #31071 链上每次评审都发现一处重述;本 PR
先全量扫描门的所有指针,一次清完,不再开第四张卡。
- 风险与回滚:只删内部 agent 规程里的重述文字,三文件行数不变、不发包(`skip-changeset`);回滚即 revert。
- 先看:`rest-channel.md` L17、`platform-readings.md` L290、`SKILL.md` L313
末尾;对照 `seat-post-protocol.md` L31–32。
- 两分钟验证:`node scripts/pm/check-skill-line-ratchet.mjs`,预期退出 0,三文件 319 /
458 / 82 行(上限不变)。
- 需要你做的:无,席位落地。
## What changes
Each pointer keeps pointing at the door; only its own copy of the rule
goes.
| File · line | `main` | head |
|---|---|---|
| `.claude/skills/pm-dispatch/references/rest-channel.md` L17 | ``
…(`seat-post-protocol.md` 正文行,不送页脚)。 `` | `` …(`seat-post-protocol.md`
正文行)。 `` |
| `.claude/skills/pm-dispatch/references/platform-readings.md` L290 | ``
- ⇒ 该正文改走 `seat-post-protocol.md` 的 PR 正文行,不送页脚。 `` | `` - ⇒ 该正文改走
`seat-post-protocol.md` 的 PR 正文行。 `` |
| `.claude/skills/pm-dispatch/SKILL.md` L313 (`Metadata-protocol:` row
of the claim template) | `` …through the PR-body line of
`references/seat-post-protocol.md`, with no footer
(`references/platform-readings.md`)) `` | `` …through the PR-body line
of `references/seat-post-protocol.md`) `` |
The rule's home, unchanged: `seat-post-protocol.md` L32 `` - PR
正文不送页脚:中继 `issue_patch` 存 = 送、无追加(`platform-readings.md` 中继行)。 ``, under
the door line L31. L32 also carries the `platform-readings.md` pointer
that SKILL.md L313 dropped, so no reader loses the path to the reading.
## Tests
None: the diff deletes restated instruction text, with no runtime
behaviour to test. The gates below are the checks.
## Acceptance notes
### Line budget (`scripts/pm/check-skill-line-ratchet.mjs`, exit 0)
| File | Lines (main → head) | Ceiling | Bytes (main → head) | Touched
line bytes (main → head) |
|---|---|---|---|---|
| `references/rest-channel.md` | 82 → 82 | 82 | 7,739 → 7,726 | L17 118
→ 105 |
| `references/platform-readings.md` | 458 → 458 | 458 | 47,039 → 47,026
| L290 78 → 65 |
| `SKILL.md` | 319 → 319 | 319 | 32,229 → 32,177 | L313 750 → 698 |
Net lines 0 per file; no ceiling or pin moves. SKILL.md L313 sits inside
the claim template's ```` ```text ```` fence (L302–L319); the ratchet's
own `classifyLine` reads it as class `fence`, exempt from the 120 B cap,
before and after. The other two touched lines are prose under 120 B on
both sides. Bytes measured without the newline.
### Sweep (closes the chain #31050 → #31059 → #31071)
Before editing, on `origin/main` 3f61e4f: `git grep -nE "PR 正文行|PR-body
line|正文行|不送页脚|no footer" -- .claude`, plus a wider `页脚|footer` pass and
every `seat-post-protocol` pointer.
- Copies of the rule found: exactly the three lines above. Fixed here.
- `.claude/agents/os-dev.md` L66 points at `seat-post-protocol.md`
without spelling the rule. Left.
- `platform-readings.md` L332–353 and L402–407 (including L335, L339,
L405) are measurement readings, not pointers. Left.
- The other `正文行` hits (`os-dev.md` L276–277, `SKILL.md` L92 and L109,
`dispatch-runbook.md` L163, `state-machine.md` L27, `triage-duties.md`
L24) mean a body line in general, not the PR-body door. Left.
- `os-dev.md` L397 and L405 are the attribution-footer clause homed in
AGENTS.md (不循环重贴页脚), a different rule. Left.
- Other `seat-post-protocol` pointers (`lanes/director.md` L83,
`seat-lifecycle.md` L23 and L63) point at other sections and spell no
footer rule. Left.
- `pm-dispatch` has no `evals/` directory.
After this PR, `git grep -nE "不送页脚|no footer" -- .claude` finds only the
home (`seat-post-protocol.md` L32) and the readings
(`platform-readings.md` L335, L339, L405).
## Verification
<details><summary>Local gates on 2125972: 22 derived, 22 run with exit
0, 0 NOT MEASURED (`dispatch-gates --ran`)</summary>
- `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` derived 22 commands (17 pnpm, 5 direct node)
for the 3 changed paths. Each ran under a 900 s timeout with
`NODE_OPTIONS=--max-old-space-size=8192`, its exit code captured before
any pipe, after building `@objectstack/formula`, `@objectstack/lint` and
`@objectstack/objectql`. All 22 exited 0 on the first run.
- They include `check:pm-skill-ratchet`, `check:pm-skill-id-lint`,
`check:pm-governed-merges`, `check:pm-governed-prose`,
`check:doc-authoring`, `check:skill-frame-sync`,
`check-comment-mask-corpus.mjs` and the self-test of
`check-harness-current.mjs`.
- `--ran` printed: `22 derived famil(ies) accounted for — 22 run, 0
NOT-MEASURED (a DERIVED zero — all 22 recorded an exit code and none of
them is 3)`.
- Also run, outside the derived list: `pnpm
check:pm-settings-deny-roster` (exit 0), the one artifact-roster family
whose roster sits under `.claude`.
</details>
- `node scripts/pm/check-governed-merges.mjs --branch
claude/project-thread-smbdef`: GOVERNED, Tier S (席内达档复核落地): `.claude/**`
×3; 6 changed lines (+3 / −3), under 3000.
- `node scripts/check-commit-card-trailers.mjs --range
origin/main..HEAD`: exit 0 before every push.
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(No schema touched.)
- [x] 2. Every name I added uses the casing for its kind. (No names
added.)
- [x] 3. No formatter ran. (Markdown only.)
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. Nothing publishes (`.claude/**` only), so the PR takes
`skip-changeset`. Both declaration lines are filled in above.
- [x] 6. `packages/spec` not touched; nothing to regenerate.
- [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 维护者速读 section is
Chinese, per the lane template.)
- [x] The *Before Submitting* list in CONTRIBUTING.md is done.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01J8VVAnKJn5WEgnj43PxAB8
Co-authored-by: Claude <noreply@anthropic.com>1 parent cf4b9bf commit cb8f520
3 files changed
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | | - | |
| 313 | + | |
314 | 314 | | |
315 | 315 | | |
316 | 316 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
287 | 287 | | |
288 | 288 | | |
289 | 289 | | |
290 | | - | |
| 290 | + | |
291 | 291 | | |
292 | 292 | | |
293 | 293 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
0 commit comments