Filed unassigned, observation class, by the skills-seat dev landing the ratchet-script pack (session session_01RMTpSRF5CjMmQBFfPtPCwJ, PR #12263, branch claude/issue-11947-table-row-byte-pins). ⛔ Not fixed there — that dispatch scoped #12081 to "the measured lines" under the card's own predicate, and this population is outside it by construction.
The gap in the instrument
#12081 measures a line-end event: a soft break sitting after an ASCII ,;: between Han characters. Its own "Not asserted" section names the mechanism that makes that predicate incomplete, and this is that mechanism's other half:
⭐ And it is self-concealing under re-wrap: re-flowing such a paragraph and re-wrapping it faithfully must preserve the space (it is what the text renders as), so the space migrates from a line break into a literal ", " in the source.
Once the space has migrated, the defect is still there and still renders — it is simply no longer at a line end, so #12081's predicate returns 0 for it. The predicate measures where the defect is hiding, not how much of it there is.
Measured, on origin/main at eeec62a98 plus PR #12263's branch
Counting a literal Han + ASCII ,;: + space + Han inside one source line, over the CEILINGS corpus, excluding fenced/front-matter regions and multi-line 「…」 rulings (the same exclusions #12263 used):
| count | file |
|---|
| 7 | .claude/skills/pm-dispatch/references/platform-readings.md |
| 6 | .claude/agents/os-dev.md |
| 1 | .claude/skills/pm-dispatch/SKILL.md |
| 14 | total |
These 14 are untouched by PR #12263, which closed the 34 line-end breaks and left this population exactly as it found it (measured: 11 literal occurrences in the 15 files that PR touched, 11 → 11, delta 0).
⭐ The migration caught in the act, with a before/after
This is not a hypothesis about what re-wraps do. platform-readings.md was rewritten by #12091 earlier the same day #12081 was filed. Running both predicates across that rewrite:
BEFORE #12091 (ef786a51): line-end breaks = 7 | literal in-source = 0 | lines = 315
NOW (eeec62a98): line-end breaks = 0 | literal in-source = 7 | lines = 314
All seven, converted, one PR, no content change intended and none made — the re-wrap was faithful, which is precisely why it preserved the space. It is also why #12081's own file table (which lists platform-readings.md at 7) no longer reproduces: re-deriving that predicate today returns 0 for the file, and a reader would conclude the defect was fixed there. It was not; it moved.
⚠️ This is the exact misreading the card warned about, and it has now happened once, unprompted, inside the observation window. A reviewer auditing #12091 by eye would have seen seven spaces appear in Chinese prose and reasonably called it a regression.
Why it may be worth more than its count
Not asserted
Adjacent, same instrument, recorded here rather than as a second card
The card's predicate also requires the successor to be Han. platform-readings.md:53 ends 不翻转; with ③ on the next line — the mark is narrow, so that break renders as a space too, but it falls outside the predicate. The #12263 wrapper rule does cover it going forward (it keys on the mark following Han, whatever follows the mark), so only the existing source line remains.
Dedup
Searched open issues on 空格 / re-wrap / soft break / literal / stray space / 标点; one hit, #12081 itself, which is the line-end half and is being closed by #12263. No card covers the literal population.
Filed unassigned, observation class, by the skills-seat dev landing the ratchet-script pack (session
session_01RMTpSRF5CjMmQBFfPtPCwJ, PR #12263, branchclaude/issue-11947-table-row-byte-pins). ⛔ Not fixed there — that dispatch scoped #12081 to "the measured lines" under the card's own predicate, and this population is outside it by construction.The gap in the instrument
#12081 measures a line-end event: a soft break sitting after an ASCII
,;:between Han characters. Its own "Not asserted" section names the mechanism that makes that predicate incomplete, and this is that mechanism's other half:Once the space has migrated, the defect is still there and still renders — it is simply no longer at a line end, so #12081's predicate returns 0 for it. The predicate measures where the defect is hiding, not how much of it there is.
Measured, on
origin/mainateeec62a98plus PR #12263's branchCounting a literal
Han + ASCII ,;: + space + Haninside one source line, over theCEILINGScorpus, excluding fenced/front-matter regions and multi-line 「…」 rulings (the same exclusions #12263 used):.claude/skills/pm-dispatch/references/platform-readings.md.claude/agents/os-dev.md.claude/skills/pm-dispatch/SKILL.mdThese 14 are untouched by PR #12263, which closed the 34 line-end breaks and left this population exactly as it found it (measured: 11 literal occurrences in the 15 files that PR touched,
11 → 11, delta 0).⭐ The migration caught in the act, with a before/after
This is not a hypothesis about what re-wraps do.
platform-readings.mdwas rewritten by #12091 earlier the same day #12081 was filed. Running both predicates across that rewrite:All seven, converted, one PR, no content change intended and none made — the re-wrap was faithful, which is precisely why it preserved the space. It is also why #12081's own file table (which lists
platform-readings.mdat 7) no longer reproduces: re-deriving that predicate today returns 0 for the file, and a reader would conclude the defect was fixed there. It was not; it moved.Why it may be worth more than its count
hanAsciiPunctTail) stops NEW breaks being offered, so the line-end population should stay at 0 — but it does nothing about literals already in source, and nothing stops an author typing one.platform-readings.mdL53–L56 uses; ③/; ④before circled enumeration markers, where a space is arguably deliberate house style. A fix would need that triage first, which is why this is filed rather than fixed.Not asserted
Adjacent, same instrument, recorded here rather than as a second card
The card's predicate also requires the successor to be Han.
platform-readings.md:53ends不翻转;with③on the next line — the mark is narrow, so that break renders as a space too, but it falls outside the predicate. The #12263 wrapper rule does cover it going forward (it keys on the mark following Han, whatever follows the mark), so only the existing source line remains.Dedup
Searched open issues on
空格 / re-wrap / soft break / literal / stray space / 标点; one hit, #12081 itself, which is the line-end half and is being closed by #12263. No card covers the literal population.