Skip to content

pm-dispatch: teach the seat the PR body trailer door (issue_patch signed on its last line) where it rewrites a PR body #29285

Open

Description

@objectstack-fleet

domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

Filing gate: ① governed text left silent by a landed tool change. #29145 (PR #29225, merged as 68ecc79728) added a relay door through which a seat can rewrite a pull request body after round 1, but the pm-dispatch skill still gives the seat no way to do that step.
Reader: domain:skills, for .claude/skills/pm-dispatch/SKILL.md and .claude/skills/pm-dispatch/references/seat-post-protocol.md. This is a governed Tier S/H surface, so it needs the lane's contract review.
Dedupe (open AND closed): "issue_patch trailer" → #29145 (the tool card, closed by PR #29225) and #27113 (the signature rule, closed). "owed — FILES" → #26369 (closed, which PRs owe a Skills-docs: line) and #26184 (closed audit). Neither teaches a door for rewriting a PR body.
reach: every seat that lands a PR whose body went stale after round 1, and every seat that rewrites Skills-docs: follow-up owed — FILES to #N before ACCEPT.
type: Bug

Business reason: a review that asks "update the body before landing" could not be met, so seats carried the correction in their seat records instead (PR #28920, #29014, #29083). The tool now has the door. Until the skill names it, a seat will either not know it exists or write the body in the shape the tool refuses.

What the tool does now (scripts/pm/fleet-write/dispatch.mjs, header and readPullRequestTargets)

  • An issue_patch carrying a body may be signed by its last non-empty line, <!-- signed: LANE#N · ACCOUNT · SESSION -->, instead of a first-line signature. Line 1 stays the attribution comment or Fixes #n.
  • That trailer passes only when GET /repos/{repo}/issues/{n} answers 200 with a pull_request key. An issue exits 2, and an unread target exits 3. A dry run judges the same way.
  • Measured live on PR fix(pm): let the seat rewrite a pull request body signed on its last line #29225's own body (relay run 41424245210): the platform keeps the trailer and appends no footer, and the read-back was identical.

What the skill says today

  • SKILL.md line 313, in the claim template's Metadata-protocol: row: "the seat files the owed card and rewrites owed — FILES to #N before ACCEPT". It names no door for that rewrite.
  • references/seat-post-protocol.md line 30: 「帖与卡正文首行恒为署名 LANE#N · ACCOUNT · SESSION」. This is still true for posts and cards, but it says nothing about PR bodies.

Wanted

  • One line wherever the skill has the seat rewrite a PR body. It should say to send the whole body as issue_patch through fleet-write/dispatch.mjs, ending in the trailer on the last line, with no footer of the seat's own.
  • One clause in seat-post-protocol.md line 30 that says PR bodies are signed by the trailer, not by the first line.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions