From 443b28c228844c12d6c3d84bc474cdf22e49447c Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 7 Nov 2026 00:52:17 +0000 Subject: [PATCH] docs(pm): give the PR-body door its no-footer rule and the relay header its measured reason MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .claude/skills/pm-dispatch/references/seat-post-protocol.md | 2 +- scripts/pm/fleet-write/dispatch.mjs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/seat-post-protocol.md b/.claude/skills/pm-dispatch/references/seat-post-protocol.md index a1f78599f00..e1303845049 100644 --- a/.claude/skills/pm-dispatch/references/seat-post-protocol.md +++ b/.claude/skills/pm-dispatch/references/seat-post-protocol.md @@ -29,6 +29,7 @@ - 写侧刷新三时刻:派发、收班、暂停或交接前;时间戳恒取自 `scripts/pm/post-stamped.mjs`。 - 帖与卡正文首行恒为署名 `LANE#N · ACCOUNT · SESSION`;缺即写工具拒发(`post-stamped.mjs` 头注)。 - PR 正文末非空行署 ``,整篇经 `dispatch.mjs` 的 `issue_patch`。 +- PR 正文不送页脚:中继 `issue_patch` 存 = 送、无追加(`platform-readings.md` 中继行)。 - 刷新前回执敲门;`--body` 拦截:评论晚于末次戳 ⇒ `--ack-through=ID`;空座欠账无卡号 ⇒ 拒写。 - 耐久状态只住正文或以 App 写入;正文守中继上限 60,000 字节,超大贴由半状态巡查浮出。 - 协议升级迁移状态、或巡检发现正文不符时,当场改正文 + 审计评论。 @@ -60,7 +61,6 @@ - `create_trigger` 开新会话的 Routine 拿不到 GitHub 工具、零产出;⛔ 不把它当座位 Routine 在跑。 - 模型不能经 API 钉住,同样在 UI 钉;Routine 继承环境默认模型,环境默认变了它跟着变。 - 创建后先手动 fire 一轮烟测,判据取 GitHub 上的产出:标签写入、审计评论、座位贴编辑。 -- ⛔ 不取会话看起来起来了;零产出即技术性失败。 - 回滚 = `delete_trigger` + 清空座位登记 + 失败注记。 - 档位按职责挑,⛔ 不按重要性挑;Routine 席的档位与 cron 是维护者在 UI 上的可调项。 - 项目席巡查默认每小时(总监席无);存根记 `Patrol: TRIGGER_ID · CRON`、`Mailbox: PR #n`,放宽注由。 diff --git a/scripts/pm/fleet-write/dispatch.mjs b/scripts/pm/fleet-write/dispatch.mjs index e1b85226cb8..2e882b93214 100644 --- a/scripts/pm/fleet-write/dispatch.mjs +++ b/scripts/pm/fleet-write/dispatch.mjs @@ -451,9 +451,9 @@ * The read runs after the packer and BEFORE the dry-run exit, so a dry run refuses what the send would; it * needs the token and the proxy route the send needs, and the process re-execs for it the way the send does. * - * `comment_edit` takes no trailer: a comment is a post, never a pull request body. The stored body is the - * platform's, not this door's: 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. + * `comment_edit` takes no trailer: a comment is a post, never a pull request body. Send no footer of your own: the + * read-back reads a pull's edited body `identical`, stored === sent, nothing appended (`platform-readings.md`, the + * relay `issue_patch` line), and a footer after the trailer leaves a body the second rule above refuses. * * ## Exit codes — capture them BEFORE any pipe *