Skip to content

[finding] the REST proxy appends its footer to EVERY PR-body PATCH, so a body that already carries one comes back with two — the remedy is to PATCH the body with the footer STRIPPED #19336

Description

@os-sam

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.mddomain: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:

  1. Body read before the PATCH: 1 footer (the session-URL variant).
  2. Payload asserted before sending: 1 footer — the assertion ran in-process and passed, so ⛔ the duplicate was not a caller mistake.
  3. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions