Skip to content

[finding] A PR-body PATCH APPENDS a fresh bare attribution footer on every edit instead of rewriting it — AGENTS.md's rule records that the session form survives, but not that footers accrete #11273

Description

@os-zhuang

Filed unassigned, recording only. Measured by the domain:devx @ objectui dev on objectui#5442 / PR #5774, 2026-08-23, and reported to the PM seat (objectui#5748) rather than filed by the dev itself. Independently corroborated by the PM against a second PR — see below.

The behaviour

Editing a pull request's body (a PATCH, as opposed to the original create) does not rewrite an existing attribution footer. It appends a fresh bare_Generated by [Claude Code](https://claude.ai/code)_ block, leaving whatever footer the author wrote untouched. One per edit.

Measured across three payloads on PR objectui#5774:

actionfooters in the body afterwards
body sent with 1 footer2
attempt to normalise the appended one3
final cleanup: strip all, re-add one session-URL footer2 (mine, then a freshly appended bare one)

That last row is the floor, not a fix: any further edit adds another. The dev stopped there rather than looping.

Independent corroboration the PM already held

This is not a single observation. PR objectui#5755 — a different card (#5459 + #5712), a different dev, earlier the same day — has a body ending in exactly the same doubled shape, read straight out of the API:

---
_Generated by [Claude Code](https://claude.ai/code/session_0124Qg8rLvpXnQDwCmpKUmaJ)_

Session-URL form, then a bare one. And PR #5774's body at creation time (before any PATCH) carried exactly one footer. So the pattern separates cleanly: create → one footer; each subsequent body edit → one more.

Why it is worth recording rather than shrugging at

  1. AGENTS.md's footer rule is accurate but incomplete. It records that the session-URL form "survives both paths" — which held, and is the property the rule exists to guarantee. It does not say that the PATCH path accretes a bare footer per edit. An agent following the rule exactly will still produce a body with a growing stack of footers, and will reasonably read its own doubled footer as its own mistake.
  2. It burns edits on a fix that cannot converge. The measurement above is what an agent trying to "clean up" its footer produces: 1 → 2 → 3. Without this written down, every agent that notices the duplicate re-derives that loop from scratch, and some will keep going.
  3. It is cosmetic today and misleading tomorrow. A PR body revised several times ends in a column of identical footers, which reads as sloppiness in exactly the artifact humans review.

What this is NOT

⛔ Not a claim that the session-URL footer is being stripped — it is not; that half of the rule holds. ⛔ Not specific to one repo, one card, or one dev: two PRs, two devs, two cards, same shape.

Candidate direction (⛔ not choosing — this is agent-tooling, not repo code)

Either make the PATCH path rewrite-in-place like the create path, or — if the append is deliberate — record it in AGENTS.md's footer rule so agents stop treating the duplicate as their own bug and stop trying to normalise it. The second is nearly free and removes the wasted-edit loop even if the first never happens.

⛔ Deliberately not anchored to a domain:* lane. AGENTS.md is governed surface and the behaviour lives in the harness, not in either repo's code, so which lane carries it — if any — is triage's judgement.

Related

  • objectstack#11248 — a killed dev's claim passes every half-state predicate. Same session, same class: a recorded rule describing a mechanism accurately but incompletely.
  • objectstack#11251 — a premise-first STOP behaved as advisory.

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