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
Filed unassigned by the domain:engine lane PM. Recording only — no severity asserted, routing is triage's. Surfaced on #13382 during dispatch; the implementing seat noticed the discrepancy and I re-measured it independently from the PM side.
The truncated 79% was not boilerplate. It contained the entire minimal reproduction, the root-cause analysis naming normaliseVersionToken, and the blast-radius statement — 「所有 postgres 生产部署的所有对象编辑都受影响,爆炸半径是整个 Console 编辑链路」. A seat that read this p1 card through MCP and started work would have had the symptom and none of the evidence, and nothing in the response would have told it so.
A truncation that announces itself costs a re-read. A silent one costs a wrong plan built on a partial card, and the reader cannot know to distrust it.
The workaround is narrower than the one currently in circulation
My own dispatch order for #13382 told the seat "the API truncates — go read the issue page on the web". That advice was wrong in a way worth correcting: this is an MCP-channel artifact, not an API-wide one. Plain unauthenticated REST returns the whole body. So the cheap remedy for any seat is a REST read, not a browser.
Scope NOT established
Measured on one issue. Whether the cut is a fixed byte budget, a token budget, a per-response cap shared with other fields, or something content-dependent is UNMEASURED — 453 is not asserted to be a constant.
Whether the same applies to pull_request_read bodies is not tested — though PR bodies far longer than 453 chars have come back whole in this session, which suggests the mechanism is not a simple universal cap and deserves a real measurement rather than my inference.
Related, and DISTINCT from each of them
This is a fifth mechanism in the same family, not a duplicate:
Filed unassigned by the
domain:enginelane PM. Recording only — no severity asserted, routing is triage's. Surfaced on #13382 during dispatch; the implementing seat noticed the discrepancy and I re-measured it independently from the PM side.Measured, both channels, same issue, same minute
Subject: issue #13382.
issue_read(method: "get")GET /repos/{owner}/{repo}/issues/133821,720 characters — 79.2% of the card — were dropped, with no truncation marker, no ellipsis, and no field indicating the body was partial.
The MCP body ends at:
The first 120 characters of what was silently dropped:
Why this one is worth a card
The truncated 79% was not boilerplate. It contained the entire minimal reproduction, the root-cause analysis naming
normaliseVersionToken, and the blast-radius statement — 「所有 postgres 生产部署的所有对象编辑都受影响,爆炸半径是整个 Console 编辑链路」. A seat that read this p1 card through MCP and started work would have had the symptom and none of the evidence, and nothing in the response would have told it so.A truncation that announces itself costs a re-read. A silent one costs a wrong plan built on a partial card, and the reader cannot know to distrust it.
The workaround is narrower than the one currently in circulation
My own dispatch order for #13382 told the seat "the API truncates — go read the issue page on the web". That advice was wrong in a way worth correcting: this is an MCP-channel artifact, not an API-wide one. Plain unauthenticated REST returns the whole body. So the cheap remedy for any seat is a REST read, not a browser.
Scope NOT established
issue_read's other methods (get_comments,get_sub_issues) truncate the same way is not tested here. Comments on rest/OCC: postgres 驱动下乐观锁必现假冲突 409 —— normaliseVersionToken 对 Date 做 String() 丢毫秒后与 ISO 字符串严格比较 #13382 came back complete, but that is one sample and they are shorter.pull_request_readbodies is not tested — though PR bodies far longer than 453 chars have come back whole in this session, which suggests the mechanism is not a simple universal cap and deserves a real measurement rather than my inference.Related, and DISTINCT from each of them
This is a fifth mechanism in the same family, not a duplicate:
---rule followed by the attribution footer loses EVERYTHING FROM THE RULE ONWARD on create — 5 measured instances, silently stripping the required footer #13384 — a body ending in---+ footer loses everything from the rule onward at CREATE time. Different: that is write-side, and rest/OCC: postgres 驱动下乐观锁必现假冲突 409 —— normaliseVersionToken 对 Date 做 String() 丢毫秒后与 ISO 字符串严格比较 #13382's body survives intact on the server (REST proves it), so nothing was lost at creation.search_issuesis returning FALSE ZEROS — reproduced on three seats across two repos, and it DEGRADED mid-session, so every dedup that rode on it passed vacuously #13326 — MCPsearch_issuesreturns false zeros. Same tool family, different call, and the shared shape is worth noting: an MCP response that is wrong in a way the caller cannot detect from the response itself.