Filed by the domain:engine execution seat, session_01CqmCgU5RGDoJYhHUMVp2af, R1, out of PR #18615 (#18000). ⛔ No domain:* and no priority:* asserted. Routing note for triage: this is a references/ fact-table increment and belongs to the domain:skills lane, which self-triages its own findings.
This is the third of the three classes a shift report may raise — 平台事实变化 → references 事实表改一行. It is one line, it refines a cell that already exists, and it is ⛔ not a new rule.
The existing recorded fact
pm-dispatch already records that the edit verb is the hazard:
⭐⭐ A REST PATCH to a PR body appends the platform's own footer — and POST (create) does NOT. … the hazard is the edit verb specifically. Strip every footer from the body you send, then read back and confirm.
That much held again here and needs no change.
The increment — the two channels append different footers
Measured on one PR, #18615, both channels, same session:
| channel |
what the body ends up carrying |
POST /repos/{owner}/{repo}/pulls (create) |
the author's footer stored verbatim, including the session-URL form https://claude.ai/code/session_… |
PATCH /repos/{owner}/{repo}/pulls/{n} (edit) |
exactly one bare footer — _Generated by [Claude Code](https://claude.ai/code)_, with zero session-URL footers — even though the body was sent with every footer stripped |
⇒ A PR body edit silently downgrades the attribution form. The create channel preserves which session wrote it; the edit channel replaces that with a session-less footer.
Why it is worth a line rather than a shrug
The session id in a footer is how a later reader attributes a body to a run. A seat that opens a PR with the session-URL form and later edits the body for any reason — a correction, a Clause-② fix, a gate-count reconciliation — loses that attribution and will not notice, because the body still ends in a footer that looks right.
⇒ The practical consequence, and the reason this belongs in the fact table rather than in someone's memory: durable attribution on an edited body must live in body PROSE, ⛔ not in the footer. On #18615 the correcting dev put the session id inside the correction blockquote for exactly this reason, which is the behaviour the line should prescribe.
⛔ Bounds of this reading — do not over-generalise it
- Measured on one PR, in one repo, by one session. ⛔ Not swept across repos or accounts.
- ⛔ Do not generalise to the create channel, which stored the session-URL form verbatim on this same PR. The two channels were measured separately and differ.
- ⛔ Not measured for issue-comment
PATCH. ⚠️ This seat edited two issue comments this same round and observed no footer duplication and no downgrade in either — but those bodies carried the bare form already, so they could not have shown a downgrade. That is an untested cell, ⛔ not a clean one.
Suggested shape of the change
One row in .claude/skills/pm-dispatch/references/platform-readings.md's write-side footer cell, splitting the existing 「edit appends the platform footer」 note by which footer each channel produces, plus the prose-attribution prescription.
Dedupe words
PR body edit footer · session-URL footer · attribution footer channel · PATCH pulls body · platform-readings write side
Re-check
# in a worktree with a disposable draft PR only:
# create with a session-URL footer, read back -> expect verbatim
# PATCH the body with ALL footers stripped, read back -> expect one BARE footer
Generated by Claude Code
Filed by the
domain:engineexecution seat,session_01CqmCgU5RGDoJYhHUMVp2af, R1, out of PR #18615 (#18000). ⛔ Nodomain:*and nopriority:*asserted. Routing note for triage: this is areferences/fact-table increment and belongs to thedomain:skillslane, which self-triages its own findings.This is the third of the three classes a shift report may raise — 平台事实变化 →
references事实表改一行. It is one line, it refines a cell that already exists, and it is ⛔ not a new rule.The existing recorded fact
pm-dispatchalready records that the edit verb is the hazard:That much held again here and needs no change.
The increment — the two channels append different footers
Measured on one PR, #18615, both channels, same session:
POST /repos/{owner}/{repo}/pulls(create)https://claude.ai/code/session_…PATCH /repos/{owner}/{repo}/pulls/{n}(edit)_Generated by [Claude Code](https://claude.ai/code)_, with zero session-URL footers — even though the body was sent with every footer stripped⇒ A PR body edit silently downgrades the attribution form. The create channel preserves which session wrote it; the edit channel replaces that with a session-less footer.
Why it is worth a line rather than a shrug
The session id in a footer is how a later reader attributes a body to a run. A seat that opens a PR with the session-URL form and later edits the body for any reason — a correction, a
Clause-②fix, a gate-count reconciliation — loses that attribution and will not notice, because the body still ends in a footer that looks right.⇒ The practical consequence, and the reason this belongs in the fact table rather than in someone's memory: durable attribution on an edited body must live in body PROSE, ⛔ not in the footer. On #18615 the correcting dev put the session id inside the correction blockquote for exactly this reason, which is the behaviour the line should prescribe.
⛔ Bounds of this reading — do not over-generalise it
PATCH.Suggested shape of the change
One row in
.claude/skills/pm-dispatch/references/platform-readings.md's write-side footer cell, splitting the existing 「edit appends the platform footer」 note by which footer each channel produces, plus the prose-attribution prescription.Dedupe words
PR body edit footer·session-URL footer·attribution footer channel·PATCH pulls body·platform-readings write sideRe-check
Generated by Claude Code