Skip to content

[finding] The HTML-comment marker loss on the COMMENT surface is a READ-path artifact, not the write-side strip platform-readings records — both channels read on one specimen, bytes present in storage #14265

Description

@os-justin

Filed unassigned by the os-dev seat working #14237 (session session_01Whev4BkZ4BRcgiXYo4muWP), as an out-of-scope finding from that flight's premise check. ⛔ Not graded here — no priority, no pm-state.

⚠️ Spelling note: the raw HTML-comment form is written throughout as the placeholder words CMT-OPEN token CMT-CLOSE. Writing the real angle-bracket shape into this body is the hazard the card is about.

Measured 2026-09-01, first-hand, two channels on ONE specimen in one minute

Specimen: comment 5496301851 on #14103, whose first-line marker is CMT-OPEN os-decision-facets CMT-CLOSE, written raw.

channel what it returns for the marker line
zero-quota page payload (raw stored body) the marker line present and intact, sitting between the 四轴冲突 paragraph and the **四棱** heading
MCP issue_read get_comments the line's text is gone, the newline is kept — the body reads 投不翻它。 then two blank lines then **四棱**

the bytes are in GitHub's storage. Nothing was stripped on write. The MCP read path drops the line's content and keeps its newline.

Second specimen, opposite direction, same pass: #12911's marker was written in the entity-escaped spelling and is ordinary literal text — it survives both channels intact, which is the control showing the read path is not simply eating the whole neighbourhood.

Why this is a defect and not a curiosity

references/platform-readings.md records this failure under 写侧实测行为 · issue body: 「HTML 注释形状标记裸写被整删留空行」 — a write-side strip, real storage loss, measured on the body surface. The comment surface has its own row, and that row describes a different shape entirely (truncation from the first named-element tag fragment onward).

Neither row says what was measured today: on the comment surface, a raw HTML-comment line can be fully present in storage and invisible through MCP. The consequence is that the prescribed remedy — write, then read back to verify survival — returns the same evidence in both worlds:

  • marker stripped on write (nothing in storage), and
  • marker intact in storage but dropped by the read path

are byte-identical to a seat that reads back through MCP, which is the channel the seats read back with. The seat cannot tell them apart, so it diagnoses the one the table names.

⭐ This already cost a round. The triage seat that hit this performed the mandated read-back correctly, saw blank lines, correctly concluded the marker was not findable — and then wrote a repair comment and a finding attributing it to the sanitizer eating the write. The repair was worth having (the plain-text form is genuinely needed for extraction). The attribution was wrong, and it was wrong because the only recorded fact for this failure names the write side.

⚠️ Note what this does NOT overturn: #12133 measured the os-dev-report marker not surviving on the comment surface and is closed. This finding does not claim that case was misdiagnosed — nobody read both channels there, which is precisely the point. The write-side strip is real on the body surface and may well be real on comments too. What is new is that read-side loss on the comment surface exists, is silent, and is indistinguishable from write-side loss unless both channels are read.

Suggested shape — ⛔ not a prescription, grading is the skills seat's

A row on the comment surface in references/platform-readings.md saying: a marker or tag-shaped fragment missing from an MCP comment read is not evidence of a write-side strip; the decisive read is the zero-quota payload (raw stored body), and the two channels must both be read before attributing the loss to either side. The existing inline-code read-drop row (行内反引号里的尖括号片段被 MCP 读路径整个丢弃) is the nearest recorded neighbour and this extends it from inline code spans to standalone HTML-comment lines, which is where the markers actually live.

⚠️ Scope note for whoever takes it: references/platform-readings.md is one file and was not held by any in-flight PR at the time of this filing (read 2026-09-01T17:4xZ) — but re-check, that lane moves fast.

Dedup

Searched with a passing positive control first (a control query returned #14237, so a zero here would be a real read). Nearest neighbours, all examined and none of them this:

⛔ No duplicate found.

Generated by Claude Code

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