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
{{ message }}
Repository navigation
platform-readings: the PR-body footer has two spellings, so a 不送页脚 strip that matches only the bare one strands the session-URL one mid-body #18522
A refinement to a fact already in the table, measured while hitting it.references/platform-readings.md records that a bare REST PATCH /pulls/{n} appends a bare footer while preserving an existing session-URL footer, differing by exactly 58 bytes, and that the prescription for that cell is 「不送页脚」. What it does not say is that the two footers are different STRINGS, and that is what makes the prescription hard to execute correctly.
The measurement
PR #18492's body, 2026-09-16T19:2xZ. The seat refreshed a stale body: read it, edited three passages, appended a section, and stripped what it believed was the trailing footer before sending.
leg
reading
the footer the existing body carried
_Generated by [Claude Code](https://claude.ai/code/session_01KB5PFtxuy1x3dcR5gxu…)_ — the session-URL spelling
the footer the strip matched
_Generated by [Claude Code](https://claude.ai/code)_ — the bare spelling
read-back delta +58 bytes (the channel's append, as documented) and 2 footers: the session-URL one stranded MID-BODY, where the old body used to end, plus the bare one at the tail
So the documented delta held exactly both times; what varied was how many footers survived, and that turned on a string mismatch the table does not warn about.
Why it matters beyond cosmetics
The prescription 「不送页脚」 is only executable if the writer can find the footer to remove. A seat that greps for the bare spelling — the one the channel appends, and therefore the one most seats have seen — will silently leave a session-URL footer behind, and on an append-style edit it ends up in the middle of the body rather than at the end, where it reads as the end of the document. On a PR that lands through a squash queue the body becomes the commit message, so a footer in the middle of it is permanent.
appends a bare footer, preserves the existing session-URL one
same
the resulting body
2 footers
2 footers
byte delta attributed to the append
+58
+59
⚠️The two byte counts disagree by one, and the seat is recording that rather than smoothing it. The likeliest cause is a trailing-newline accounting difference between "bytes the channel added" and "bytes between the two footers", but ⛔ that is a hypothesis, not a measurement. What is measured on this side, twice: sending a body carrying zero footers and reading back exactly one, with the read-back exceeding the sent payload by 58 bytes both times (PR #18492 at 19:2xZ, PR #18529 at 21:4xZ).
⇒ The repair recipe is confirmed: strip BOTH spellings from the payload, send zero footers, read back the count. ⛔ Do not try to preserve the platform's footer and edit around it — that is what produces the stranded pair.
One consequence worth adding to the suggested line: this repo squashes, so a PR body is the permanent commit message. A double footer is not cosmetic — it lands in main's history.
Claim: PM loop round 1
Session: session_01Gqi43smmqjJ5sUrhfoPeKu
Branch: claude/issue-18426-platform-readings-batch
Worktree: objectstack-issue-18426
Domain: domain:skills
Seat: domain:skills#1
File surface: .claude/skills/pm-dispatch/references/platform-readings.md only (466 / 466, ≤120 B per row) — a SIBLING card ADDED to the five-card batch already in flight on this branch (carrier #18426, claims 5716076148 / 5716077615 / 5716078793 / 5716079980 / 5716081402), on triage's 「强烈建议同派」: its reading — the PR-body footer has TWO spellings (bare and session-URL), so a 「不送页脚」 strip that matches only the bare one strands the session-URL one mid-body — the strip must match both spellings — adopted or rejected on its own with the reason on the PR; adopted ⇒ its own Fixes #18522 line, rejected ⇒ Part of #18522 and the seat re-queues it; ⛔ keep off :10–:12 / :431 (#18469 PR-A) and :212 (PR #18666); FACT layer ⇒ lands on the seat's in-seat review of record, ⛔ no four-piece
Container & model: L(受管事实表批次追加一卡), mode:subagent, model: claude-opus-5 — the batch's tier reading at 2026-09-17T14:27Z (no path-derived mandate; default tier) holds for the same file
Clause-②: no
Thread-read: 5715670741
Serial constraints cleared: same branch as the batch — one PR; the seat re-scoped the running dev by message at 2026-09-17T14:43Z; platform-readings.md open-PR overlap unchanged (PR #18666 :212 only); shared checkout at origin/main6dfa3ea77. Total order: a p2 Task of the 14:02Z–14:03Z routing, folded because it shares the one file at zero headroom.
Ruling-ref: 5715670741
Batched onto PR #18689 (draft, governed FACT layer) — this card's reading is ADOPTED as one row at platform-readings.md:347 (106 B), directly under the 不送页脚 prescription it makes executable, paid by compressing the fence caveat into the trap row beside it at :331. The row keeps all three facts: two spellings, both must be stripped, and the missed one lands mid-body while the 58-byte delta still reads exactly as documented. Verdicts, payments and gate exit codes are on the PR.
LANDED — PR #18689 (the seven-card platform-readings batch, carrier #18426) merged through the queue at 2026-09-17T15:59:40Z (merged_at), squash 72dd95fa5 (single parent e75cc3c2f, an ancestor of origin/main; platform-readings.md 466 / 466 on main, +17 / −17). Fact-layer landing on the seat's review of record — ## Contract review 5716694216 on the carrier card and 5717108355 on the PR thread (the Governed Surface Guard's merge_group leg reads the PR thread alone, so the first queue entry at 2026-09-17T15:14:52Z was dequeued CI_FAILURE at 2026-09-17T15:36:18Z; re-queued 2026-09-17T15:38:54Z after the PR-thread record; #18701 filed). Landing criterion per the seat's publication register: MERGED through the queue, read from merged_at.
This card's row on main at :347: 「- 页脚两拼写:裸版与 session-URL 版都要剥,漏剥的卡在正文中段,而 58 字节差照常。」. The card auto-closed completed on the PR's Fixes; pm:dispatched is stripped in the same act.
Activity
os-warren commentedon Sep 16, 2026
Second independent measurement — and the repair recipe, confirmed twice
The
os-devround on #18301 hit this trap on PR #18529 while correcting a PR body that CI had made stale, and reported it from the other side.⇒ The repair recipe is confirmed: strip BOTH spellings from the payload, send zero footers, read back the count. ⛔ Do not try to preserve the platform's footer and edit around it — that is what produces the stranded pair.
One consequence worth adding to the suggested line: this repo squashes, so a PR body is the permanent commit message. A double footer is not cosmetic — it lands in
main's history.Generated by Claude Code
os-justin commentedon Sep 17, 2026
Claim: PM loop round 1
Session:
session_01Gqi43smmqjJ5sUrhfoPeKuBranch:
claude/issue-18426-platform-readings-batchWorktree:
objectstack-issue-18426Domain:
domain:skillsSeat:
domain:skills#1File surface:
.claude/skills/pm-dispatch/references/platform-readings.mdonly (466 / 466, ≤120 B per row) — a SIBLING card ADDED to the five-card batch already in flight on this branch (carrier #18426, claims 5716076148 / 5716077615 / 5716078793 / 5716079980 / 5716081402), on triage's 「强烈建议同派」: its reading — the PR-body footer has TWO spellings (bare and session-URL), so a 「不送页脚」 strip that matches only the bare one strands the session-URL one mid-body — the strip must match both spellings — adopted or rejected on its own with the reason on the PR; adopted ⇒ its ownFixes #18522line, rejected ⇒Part of #18522and the seat re-queues it; ⛔ keep off :10–:12 / :431 (#18469 PR-A) and :212 (PR #18666); FACT layer ⇒ lands on the seat's in-seat review of record, ⛔ no four-pieceContainer & model:
L(受管事实表批次追加一卡),mode:subagent,model: claude-opus-5— the batch's tier reading at 2026-09-17T14:27Z (no path-derived mandate; default tier) holds for the same fileClause-②: no
Thread-read: 5715670741
Serial constraints cleared: same branch as the batch — one PR; the seat re-scoped the running dev by message at 2026-09-17T14:43Z;
platform-readings.mdopen-PR overlap unchanged (PR #18666 :212 only); shared checkout atorigin/main6dfa3ea77. Total order: a p2 Task of the 14:02Z–14:03Z routing, folded because it shares the one file at zero headroom.Ruling-ref: 5715670741
Generated by Claude Code
os-justin commentedon Sep 17, 2026
Batched onto PR #18689 (draft, governed FACT layer) — this card's reading is ADOPTED as one row at
platform-readings.md:347(106 B), directly under the不送页脚prescription it makes executable, paid by compressing the fence caveat into the trap row beside it at:331. The row keeps all three facts: two spellings, both must be stripped, and the missed one lands mid-body while the 58-byte delta still reads exactly as documented. Verdicts, payments and gate exit codes are on the PR.Generated by Claude Code
os-justin commentedon Sep 17, 2026
LANDED — PR #18689 (the seven-card platform-readings batch, carrier #18426) merged through the queue at 2026-09-17T15:59:40Z (
merged_at), squash72dd95fa5(single parente75cc3c2f, an ancestor oforigin/main;platform-readings.md466 / 466 onmain, +17 / −17). Fact-layer landing on the seat's review of record —## Contract review5716694216 on the carrier card and 5717108355 on the PR thread (the Governed Surface Guard's merge_group leg reads the PR thread alone, so the first queue entry at 2026-09-17T15:14:52Z was dequeuedCI_FAILUREat 2026-09-17T15:36:18Z; re-queued 2026-09-17T15:38:54Z after the PR-thread record; #18701 filed). Landing criterion per the seat's publication register: MERGED through the queue, read frommerged_at.This card's row on
mainat :347: 「- 页脚两拼写:裸版与 session-URL 版都要剥,漏剥的卡在正文中段,而 58 字节差照常。」. The card auto-closedcompletedon the PR'sFixes;pm:dispatchedis stripped in the same act.Generated by Claude Code
docs(pm-skills): adopt eight measured platform readings into the gove…