Filed by the domain:spec seat 3 (session_01HnRAeVTLJevtQ5iCPX6JSm), ⏱️ 2026-09-20T11:52Z. ⛔ Not triaged, ⛔ no domain:*, ⛔ no priority. Lands on .claude/skills/pm-dispatch/references/platform-readings.md ⇒ domain:skills by the domain table.
The standing defect this closes
The domain:spec seat-3 shift brief (5737570951 ⑥) recorded this as an open, unfixed error, verbatim:
两次违反 AGENTS.md:432 给已带页脚的 PR 正文 PATCH 出第二个页脚(#19112 / #19115,⛔ 未修复:第三次写只会叠第三个)
⇒ The predecessor knew the symptom and expected a third write to stack a third footer. The mechanism and the remedy are now measured.
Mechanism, measured on PR #19322 this round
The two footers are not the same string, which is what gives the mechanism away:
| footer |
source |
_Generated by [Claude Code](https://claude.ai/code/session_<id>)_ |
written by the author (the os-dev executor, on its POST /pulls create call) |
_Generated by [Claude Code](https://claude.ai/code)_ |
appended by the proxy, bare, no session segment |
Sequence, with the readings:
- Body read before the PATCH: 1 footer (the session-URL variant).
- Payload asserted before sending: 1 footer — the assertion ran in-process and passed, so ⛔ the duplicate was not a caller mistake.
- Read back after
PATCH /repos/{o}/{r}/pulls/19322: 2 footers, the second being the bare variant, appended after the first.
⇒ The proxy appends its footer to a PR-body PATCH unconditionally — it does ⛔ not check whether one is already present, and it does ⛔ not recognise the session-URL variant as its own.
⭐ The remedy (verified, not proposed)
PATCH the body with every trailing footer block stripped, and let the proxy append exactly one.
Applied on the same PR: stripped both trailing footer blocks (payload footers = 0, 8065 bytes), PATCHed, read back ⇒ exactly 1 footer, body content intact, 0 angle brackets. The tail reads …\n\n---\n_Generated by [Claude Code](https://claude.ai/code)_.
⇒ the predecessor's prediction that 「第三次写只会叠第三个」 holds only for a payload that carries a footer. A payload with none converges on one.
What to write into platform-readings.md
- A PR-body
PATCH gets the proxy's footer appended unconditionally; a body sent with a footer comes back with N+1.
- ⇒ strip trailing footer blocks from the payload before a body PATCH; ⛔ never send one.
- ⛔ The status code does not settle it: the 200 was identical in both the wrong and the right case. Read the body back and count.
- ⚠️ The two variants differ (session-URL vs bare), so a naive 「does it already have one」 check by exact string comparison answers the wrong question. Count the marker
Generated by [Claude Code], ⛔ not the full URL.
⛔ This seat did not edit .claude/** — governed surface, skills lane. Related but distinct: #19309 (the Served-tier: grammar), also filed to that file this round.
Dedupe words
PR body PATCH duplicate footer · proxy appends footer unconditionally · strip footer before body patch · AGENTS.md:432 second footer · session-url vs bare footer variant
Generated by Claude Code
Filed by the
domain:specseat 3 (session_01HnRAeVTLJevtQ5iCPX6JSm), ⏱️ 2026-09-20T11:52Z. ⛔ Not triaged, ⛔ nodomain:*, ⛔ no priority. Lands on.claude/skills/pm-dispatch/references/platform-readings.md⇒domain:skillsby the domain table.The standing defect this closes
The
domain:specseat-3 shift brief (5737570951⑥) recorded this as an open, unfixed error, verbatim:⇒ The predecessor knew the symptom and expected a third write to stack a third footer. The mechanism and the remedy are now measured.
Mechanism, measured on PR #19322 this round
The two footers are not the same string, which is what gives the mechanism away:
_Generated by [Claude Code](https://claude.ai/code/session_<id>)_os-devexecutor, on itsPOST /pullscreate call)_Generated by [Claude Code](https://claude.ai/code)_Sequence, with the readings:
PATCH /repos/{o}/{r}/pulls/19322: 2 footers, the second being the bare variant, appended after the first.⇒ The proxy appends its footer to a PR-body PATCH unconditionally — it does ⛔ not check whether one is already present, and it does ⛔ not recognise the session-URL variant as its own.
⭐ The remedy (verified, not proposed)
PATCH the body with every trailing footer block stripped, and let the proxy append exactly one.
Applied on the same PR: stripped both trailing footer blocks (payload footers = 0, 8065 bytes), PATCHed, read back ⇒ exactly 1 footer, body content intact, 0 angle brackets. The tail reads
…\n\n---\n_Generated by [Claude Code](https://claude.ai/code)_.⇒ the predecessor's prediction that 「第三次写只会叠第三个」 holds only for a payload that carries a footer. A payload with none converges on one.
What to write into
platform-readings.mdPATCHgets the proxy's footer appended unconditionally; a body sent with a footer comes back with N+1.Generated by [Claude Code], ⛔ not the full URL.⛔ This seat did not edit
.claude/**— governed surface, skills lane. Related but distinct: #19309 (theServed-tier:grammar), also filed to that file this round.Dedupe words
PR body PATCH duplicate footer·proxy appends footer unconditionally·strip footer before body patch·AGENTS.md:432 second footer·session-url vs bare footer variantGenerated by Claude Code