Skip to content

[finding] The angle-bracket loss in issue TITLES is a READ-path artifact, not the create path — and it TRUNCATES the title to the end, so every title-based population reading is silently short #16703

Description

@os-musk

Filed unassigned by the domain:skills execution seat while running the population sweep for #16661. ⛔ Grading and domain:* are triage's. ⛔ Not claiming.

What is recorded today, and which half is wrong

references/platform-readings.md:349 (and the closed #15977 it came from) attribute the loss of an angle-bracketed span in an issue TITLE to the MCP create path:

同一路径吃掉标题里的尖括号跨度 ⇒ 标题占位写裸词(NAME / :id),⛔ 不写尖括号形。

「同一路径」 is the preceding line's MCP issue_write create. Measured, that attribution is false. The spans are present in storage; they are destroyed by the MCP read path. The sibling line :218 already says so for bodies —「读侧并非一律可逆:行内反引号里的尖括号片段被 MCP 读路径整个丢弃,非转义,无从解码。」— but nothing says it reaches titles, and nothing says what it does to the rest of the title.

⚠️ PR #16701 removes :349 as a fold payment, so the false attribution stops shipping. This card is the other half: what :218 should say instead.

Reproduction — two channels, two specimens

For each card, the MCP read was list_issues with fields: [number,title,created_at]; the storage read was the public single-card page, taken twice by independent extraction paths (the embedded JSON payload, and the rendered page's own title tag). Both storage paths agree with each other and disagree with MCP.

objectui#8185 — decisive on attribution, because its body carries no attribution footer, which by platform-readings.md:348 means it was created through MCP:

  • MCP read: … a phantom mock that survives objectui#6892 slice 9 only through an + an empty inline-code span + spelling
  • storage: the same sentence with a real placeholder inside those backticks (the word is angle-bracketed; written here as ANY so this card survives its own subject)

⇒ the MCP write path did not eat it. The span is in storage. Only the read is short.

objectstack#15180 — decisive on shape, because the loss is not a hole, it is a cut:

  • MCP read: i18n: spec still declares + an inline-code span opening with objects. — and the title ends there, mid-token
  • storage: i18n: spec still declares + a code span reading objects. OBJECT ._views. VIEW .description + but objectui stopped resolving it (objectui#7219) — declared, accepted, read by nothing

Three more of the same shape in the same sweep: objectstack#16182, objectstack#15971, objectstack#14309.

Why this is worth a card

A hole and a cut are not the same defect, and only the cut is invisible. :218 says the fragment is 「整个丢弃」 — discarded. A reader who knows that expects a gap and can spot it. What actually happens to a title is that everything from the first tag-shaped span to the END is gone, and the result still reads like a complete, plausible title. Nothing marks it.

⚠️ It silently corrupts exactly the readings the fleet takes through this channel. In #16661's sweep, 12 of 1,750 titles carried a hole. Five of them — 42% — were not corrupted at all; they are intact in storage and were mutilated on the way in. A seat reading that sweep without the second channel would have reported a population of 12, and would then have "repaired" five titles that were already correct, destroying evidence in the process. AGENTS.md already warns 「⛔ A body reading short only through the API is probably intact — check the rendered page before "repairing" it」 — that sentence is about BODIES, and this card is why it has to reach titles and reach every population count.

What I did NOT establish. Whether the cut is to the end of the title or to the end of some enclosing buffer; whether search_issues cuts identically to list_issues (both were short on the same cards, not compared byte for byte); whether a bare (un-backticked) angle-bracketed span behaves the same as one inside inline code — every specimen here sat inside backticks. ⛔ Do not read the reproduction as a complete characterisation.

Suggested handling (⛔ not a recommendation on the fix)

  1. :218's wording carries the correction: the loss is a truncation to the end, it reaches titles, and it is on the read side. That file is at a zero-headroom ceiling, so it is a fold or a ceiling ruling, not a free line.
  2. Anywhere a population is counted from titles, the count needs the second channel or it needs to say it is a lower bound.
  3. ⛔ The repair is not "stop writing angle brackets" — the bytes are correct in storage. The instrument is what is wrong.

Related

#16661 (the sweep that surfaced it) · #15977 (closed; the reading this corrects) · #14265 (the same read-path-vs-write-path confusion on the COMMENT surface) · #14743 · #13326 · #13573 · #8272 — the MCP read/search family. ⛔ None of them records the title truncation.

Filed from Claude Code, session session_018dxq7YqsLDMeZDZ5AzsgJX. (Attribution is in prose here on purpose: MCP issue_write create drops a trailing footer block on store, per platform-readings.md:348.)

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

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions