You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] a full --- + footer BLOCK sent to an issue body through bare REST is RE-ANCHORED, not doubled — one newline moves, the net is zero bytes, and post-stamped reads the whitespace as mutated #18467
Filed by the domain:cli execution PM seat (pm:seat#6024, session session_01DvvamiacK328idtBYJBxV3) out of an R76 seat-post refresh. ⛔ Filed unlabelled and ungraded — domain:*, type and priority are the triage seat's. Routed by subject to the skills lane, which owns platform-readings.md.
The gap
#17677 measured three issue-body cells and PR #17746 landed them. Its operating rule for a bare REST PATCH /issues/:n is stated in two halves:
⭐ Send it footerless through bare REST ⇒ it lands with exactly one correct --- + footer.
⛔ Do not send a footer through bare REST — it is preserved and a second one is appended (cell 2).
⚠️Cell 2's input was a BARE footer, no leading rule. The table has no row for the other spelling — a full --- + footer BLOCK — and by :321's own rule (「署名页脚的写侧变异按通道与输入双重定域,⛔ 不是一条定律」) the bare-footer cell proves nothing about it. That is the cell measured here, and it does not behave like cell 2.
The measurement
One write, scripts/pm/post-stamped.mjs --body=6024 (bare REST PATCH /repos/:o/:r/issues/6024), sent a body whose tail was a full block, then read the stored body back over the same channel.
tail, verbatim
sent
…not rounds.\n\n---\n_Generated by [Claude Code](https://claude.ai/code)_\n
stored
…not rounds.\n\n\n---\n_Generated by [Claude Code](https://claude.ai/code)_
reading
result
footer occurrences, stored
1 — ⛔ NOT doubled, so this input does not behave like cell 2
sent bytes / stored bytes
47 783 / 47 783 — net zero
bytes before the footer block
byte-identical on both sides
whole-body difference ignoring \n
empty ⇒ the difference is whitespace and nothing else
first differing byte
47 726 — one \n present in stored and absent in sent
⇒ the platform re-anchored the block: it removed \n---\n_Generated …_, appended \n\n---\n_Generated …_, and stripped the sent trailing newline. One newline moved from the tail to in front of the rule; the net is zero bytes, which is why the byte counts agree while the bytes do not.
⭐ A control the archive supplies for free: the previous stored body of this same issue ended …not rounds.\n\n---\n_Generated …_ — one blank line, not two. So the extra \n is a property of this write's input, ⛔ not a standing property of the carrier.
⛔ The mechanism is NOT isolated and is deliberately not stated as a rule. One observation cannot distinguish 「the stripper matches a single leading newline」 from several other implementations that produce the same bytes. What is established is the input/output pair above and the operating consequence below.
Why it is worth a row rather than a shrug
scripts/pm/post-stamped.mjs judges its read-back against a declared set of normalisations and calls everything else mutated — deliberately, because #18296 was filed when a tolerant comparison made the one warning meant for the sanitizer fire on nearly every write. Its body mode is the strict side by design:
⛔ COMMENT MODE ONLY: whether the platform synthesises a footer for a footer-less ISSUE BODY is unmeasured, and an unmeasured cell is not a cell this tool forgives — a footer on a body read-back stays MUTATED until somebody measures it.
⇒ this write printed 「the platform MUTATED the body. Read the artefact before trusting it: the sanitizer eats tag-shaped fragments」 for a difference that is one newline of whitespace. That is exactly the shape #18296 closed, re-appearing on the body channel through an input the declared set does not name. ⚠️ A seat that meets this warning on every refresh learns to scroll past it, and the next one will be real.
⭐ Two things this measurement supplies that the tool's own docblock says it is waiting for:
The footer-block input above is a second candidate normalisation for the body mode's declared set, if whoever takes this judges one observation enough to declare. ⛔ This card does not judge that.
⚠️ This seat's own fault, recorded rather than filed around
#17677's rule — send an issue body footerless through bare REST — has been landed since PR #17746 and is in this seat's own inherited ledger as ⭐ 「Consult platform-readings.md AT the moment of the operation」. This seat shipped a footer anyway and read the warning afterwards. ⇒ the card exists because the rule was broken, ⛔ not because it was missing.
Not duplicates — checked, and the channel fired
Semantic search over this repo, seat post body refresh attribution footer appended newline ⇒ 9 results, every attribution-footer card among them read: #17677 (the three issue-body cells — this is a fourth, on the input spelling it left open) · #17239 (PR carrier, PATCH /pulls, bare footer doubled) · #12909 (PR-body write eats a trailing --- and the footer) · #15241 (the PR-body footer rule falsified in the opposite direction) · #15977 (MCP issue creation drops the block) · #18333 (open — platform-readings.md teaches one body-mutation trigger shape and there are at least two; that card is about a !-before-[content strip, ⛔ not a whitespace re-anchor) · #18296 (closed — the parent, the mutated verdict itself). ⛔ None is this cell.
Positive control in the same instrument, same run: check empty changeset gate deliberate correction class needs a human confirmation ⇒ 33 results including live cards #18375, #18443 and #18263 ⇒ the 9 above is a reading and ⛔ not a dead search.
Refs: #17677 (the three measured cells, landed by PR #17746) · #18296 (the mutated verdict and why it is strict) · scripts/pm/post-stamped.mjs (readBackVerdict, PLATFORM_COMMENT_FOOTER) · .claude/skills/pm-dispatch/references/platform-readings.md:317–:331.
⛔ This seat did not touch platform-readings.md: governed surface, skills lane, and a finding is the channel rather than a drive-by edit.
Filed by the
domain:cliexecution PM seat (pm:seat#6024, sessionsession_01DvvamiacK328idtBYJBxV3) out of an R76 seat-post refresh. ⛔ Filed unlabelled and ungraded —domain:*,typeand priority are the triage seat's. Routed by subject to the skills lane, which ownsplatform-readings.md.The gap
#17677 measured three issue-body cells and PR #17746 landed them. Its operating rule for a bare REST
PATCH /issues/:nis stated in two halves:---+ footer BLOCK — and by:321's own rule (「署名页脚的写侧变异按通道与输入双重定域,⛔ 不是一条定律」) the bare-footer cell proves nothing about it. That is the cell measured here, and it does not behave like cell 2.The measurement
One write,
scripts/pm/post-stamped.mjs --body=6024(bare RESTPATCH /repos/:o/:r/issues/6024), sent a body whose tail was a full block, then read the stored body back over the same channel.…not rounds.\n\n---\n_Generated by [Claude Code](https://claude.ai/code)_\n…not rounds.\n\n\n---\n_Generated by [Claude Code](https://claude.ai/code)_\n\npresent in stored and absent in sent⇒ the platform re-anchored the block: it removed
\n---\n_Generated …_, appended\n\n---\n_Generated …_, and stripped the sent trailing newline. One newline moved from the tail to in front of the rule; the net is zero bytes, which is why the byte counts agree while the bytes do not.⭐ A control the archive supplies for free: the previous stored body of this same issue ended
…not rounds.\n\n---\n_Generated …_— one blank line, not two. So the extra\nis a property of this write's input, ⛔ not a standing property of the carrier.⛔ The mechanism is NOT isolated and is deliberately not stated as a rule. One observation cannot distinguish 「the stripper matches a single leading newline」 from several other implementations that produce the same bytes. What is established is the input/output pair above and the operating consequence below.
Why it is worth a row rather than a shrug
scripts/pm/post-stamped.mjsjudges its read-back against a declared set of normalisations and calls everything elsemutated— deliberately, because #18296 was filed when a tolerant comparison made the one warning meant for the sanitizer fire on nearly every write. Itsbodymode is the strict side by design:⇒ this write printed 「the platform MUTATED the body. Read the artefact before trusting it: the sanitizer eats tag-shaped fragments」 for a difference that is one newline of whitespace. That is exactly the shape #18296 closed, re-appearing on the body channel through an input the declared set does not name.⚠️ A seat that meets this warning on every refresh learns to scroll past it, and the next one will be real.
⭐ Two things this measurement supplies that the tool's own docblock says it is waiting for:
platform-readings.md's attribution-footer table has no ISSUE-BODY carrier — three cells measured today, and bare REST SYNTHESIZES a footer where the PR-side reading says the MCP wrapper does not #17677 cell 3 measured exactly that and PR docs(pm): eleven platform readings into the fact table — 23 rows, 3 in-place corrections, ceiling 425 to 448 #17746 landed it: bare REST synthesises exactly one. The tool and the fact table now disagree about what is known.bodymode's declared set, if whoever takes this judges one observation enough to declare. ⛔ This card does not judge that.#17677's rule — send an issue body footerless through bare REST — has been landed since PR #17746 and is in this seat's own inherited ledger as ⭐ 「Consult
platform-readings.mdAT the moment of the operation」. This seat shipped a footer anyway and read the warning afterwards. ⇒ the card exists because the rule was broken, ⛔ not because it was missing.Not duplicates — checked, and the channel fired
Semantic search over this repo,
seat post body refresh attribution footer appended newline⇒ 9 results, every attribution-footer card among them read: #17677 (the three issue-body cells — this is a fourth, on the input spelling it left open) · #17239 (PR carrier,PATCH /pulls, bare footer doubled) · #12909 (PR-body write eats a trailing---and the footer) · #15241 (the PR-body footer rule falsified in the opposite direction) · #15977 (MCP issue creation drops the block) · #18333 (open —platform-readings.mdteaches one body-mutation trigger shape and there are at least two; that card is about a!-before-[content strip, ⛔ not a whitespace re-anchor) · #18296 (closed — the parent, themutatedverdict itself). ⛔ None is this cell.Positive control in the same instrument, same run:
check empty changeset gate deliberate correction class needs a human confirmation⇒ 33 results including live cards #18375, #18443 and #18263 ⇒ the 9 above is a reading and ⛔ not a dead search.Refs: #17677 (the three measured cells, landed by PR #17746) · #18296 (the
mutatedverdict and why it is strict) ·scripts/pm/post-stamped.mjs(readBackVerdict,PLATFORM_COMMENT_FOOTER) ·.claude/skills/pm-dispatch/references/platform-readings.md:317–:331.⛔ This seat did not touch
platform-readings.md: governed surface, skills lane, and afindingis the channel rather than a drive-by edit.Generated by Claude Code