Repository navigation
docs(pm): give the PR-body door its no-footer rule and the relay header its measured reason - #31070
Conversation
…er its measured reason The fleet-write relay header said an edit of a pull's body gets the bare footer block appended after the trailer. The relay's own read-back classifies those edits `identical` (stored === sent, nothing appended), as platform-readings.md now records. Keep the advice to send no footer and give the reason the code supports: the read-back reading, and the trailer rule that refuses a body whose last non-empty line is not the trailer. seat-post-protocol.md's PR-body door line now carries 「不送页脚」 on an adjoining line, paid for by deleting a Routine smoke-test line that restated the criterion and the zero-output rule two lines above it. Claude-Session: https://claude.ai/code/session_01J8VVAnnUAET63Ji7fAEG6v Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7 Contract-review-claim: session_01J8VVAj7CvjkGXvgXzd6RZ7 · head 443b28c · 2026-11-07T01:14Z The seat review runs at CONTRACT_REVIEW_TIER in an isolated subagent. No review seat ( |
|
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7 Contract reviewServed-tier: ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Findings
Implemented-by: VERDICT: PASS |
|
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7 维护者速读
席位核对 — ACCEPT · domain:skills#3 · head
|
Requested by Irene · project thread
Fixes #31059
Clause-②: no
Metadata-protocol: none
dispatch-gates --tierreads no path-derived model mandate for these two paths ("the tier stays the PM's per-card judgment call"). This card ran on the project's default model; had a MANDATORY model tier been read, it would be waived by the maintainer's standing order in this project (2026-11-03). The dispatching seat runs the contract review.维护者速读
seat-post-protocol.md的 PR 正文门行之后加一行「不送页脚」并指向platform-readings.md中继行;dispatch.mjs头注把「改 PR 正文会被追加裸页脚」这一过时理由改为中继读回identical与尾署名规则。issue_patch存 = 送、无追加;头注理由与之相抵,而 PR 正文门行本身没写不送页脚。skip-changeset),两文件行数不变;回滚即 revert。seat-post-protocol.mdL31–32(门行与新行);dispatch.mjsL454–456(头注)。node scripts/pm/check-skill-line-ratchet.mjs,预期退出 0,seat-post-protocol.md88 行(上限 88)、每行 ≤120 B。What changes
Item 1,
scripts/pm/fleet-write/dispatch.mjsheader L454–456 (comment only, no code). The comment said an edit of a pull's body "gets the bare footer block appended after the trailer (platform-readings.md, the edit side), so send no footer of your own". The advice stays; the reason now states what the code does:classifyReadBack(judgeStoredBody), and the classidenticalisstored === sent(declaredNormalisation,scripts/pm/post-stamped.mjsL2843). A body with a footer appended would readfooter-appended, notidentical.platform-readings.mdL343 (added by PR docs(pm-dispatch): point every PR-body rewrite at the issue_patch door #31058) records that the relayissue_patchreads a PR body backidentical, nothing appended.readPrBodyTrailerreads the trailer off that line only, so such a body carries neither the signature line nor the trailer, and the header's second rule refuses it as usage (2).The comment now reads (3 lines, as on
main):Item 2,
.claude/skills/pm-dispatch/references/seat-post-protocol.mdL31. L31 stays byte-identical (120 B, at the cap). The no-footer rule goes on a new adjoining line, L32 (103 B):- PR 正文不送页脚:中继 issue_patch 存 = 送、无追加(platform-readings.md 中继行)。The 120 B cap and the file's 88-line ceiling are unchanged.
Deleted restatement (deletion only; each fact's surviving home)
The added line is paid for by deleting one whole line in the same file, 〈座位 Routine 创建〉 L63 on
main(67 B):- ⛔ 不取会话看起来起来了;零产出即技术性失败。main(now L63):创建后先手动 fire 一轮烟测,判据取 GitHub 上的产出:标签写入、审计评论、座位贴编辑。— the criterion is GitHub output, which the deleted half only restated in the negativemain(now L61):create_trigger 开新会话的 Routine 拿不到 GitHub 工具、零产出;⛔ 不把它当座位 Routine 在跑。and L64 onmain(now L64):回滚 = delete_trigger + 清空座位登记 + 失败注记。PR #31058's body said the file had no restatement to pay with. This is the one I found on a full read; the seat's contract review judges whether it holds. No script or test pins the deleted text (
grepfor 看起来起来 and 技术性失败 across.claude,scripts,docsand AGENTS.md finds only this line).Tests
None: the diff is instruction text and one comment, 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)references/seat-post-protocol.mdscripts/pm/fleet-write/dispatch.mjs(code, not ratcheted)Every touched line:
seat-post-protocol.mdL31 120 B (unchanged), new L32 103 B, deletedmainL63 67 B.dispatch.mjsL454 106 → 115 B, L455 110 → 115 B, L456 74 → 105 B. The ratchet printsseat-post-protocol.md is 88 lines (ceiling 88; headroom 0).Sweep
pm-dispatchhas noevals/directory. The old reason ("appended after the trailer") appears nowhere else in.claude,scripts,docsor AGENTS.md; thedispatch.mjsself-test case "the platform's footer block appended lands" tests the classifier'sfooter-appendedclass and makes no claim about the relay, so it stays.Verification
Local gates on 443b28c: 46 derived, 46 run with exit 0, 0 NOT MEASURED (`dispatch-gates --ran`)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 46 commands (32 pnpm, 14 direct node) for the 2 changed paths. Each ran under a 900 s timeout withNODE_OPTIONS=--max-old-space-size=8192, its exit code captured before any pipe, after building@objectstack/formula,@objectstack/lintand@objectstack/objectql. All 46 exited 0 on the first run.check:pm-skill-ratchet,check:pm-skill-id-lint,check:pm-governed-merges,check:pm-fleet-write-dispatch,check:pm-post-stamped,check:doc-authoring,check:skill-frame-sync,check:scripts-symbol-anchors,check-comment-mask-corpus.mjsand the self-test ofcheck-harness-current.mjs.--ranprinted:46 derived famil(ies) accounted for — 46 run, 0 NOT-MEASURED (a DERIVED zero — all 46 recorded an exit code and none of them is 3).node scripts/pm/check-governed-merges.mjs --branch claude/project-thread-a9cfrb: GOVERNED, Tier S (席内达档复核落地):.claude/**×1;scripts/pm/fleet-write/dispatch.mjsis not on the register; 8 changed lines (+4 / −4), under 3000.node scripts/check-commit-card-trailers.mjs --range origin/main..HEAD: exit 0 before every push.Human Minimum
packages/specholds no runtime logic. (No schema touched.)main, one pull request..claude/**and ascripts/pm/**comment), so the PR takesskip-changeset. Both declaration lines are filled in above.packages/specnot touched; nothing to regenerate.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01J8VVAnnUAET63Ji7fAEG6v