Problem
`read` and `export` write a paragraph's text as Markdown without escaping a leading block marker, so text that looks like a Markdown block turns into that block on the next publish. Found in the second review of #55.
Reproduced 2026-09-25 (read → publish):
| storage |
read writes |
publish sends |
| ` 1. not a list ` |
`1. not a list` |
`- not a list
` |
| ` # not heading ` |
`# not heading` |
`not heading` |
| ` > 5 errors ` |
`> 5 errors` |
`5 errors ` |
The page's content changes silently on a read → update cycle, and the Markdown is a fixed point after the first cycle, so no round-trip test notices. It affects every paragraph `read` writes: top level, layout cells, macro bodies, and (since #55) raw table cells. A GFM pipe-table cell is not affected, because its text is inline.
Notes
Problem
`read` and `export` write a paragraph's text as Markdown without escaping a leading block marker, so text that looks like a Markdown block turns into that block on the next publish. Found in the second review of #55.
Reproduced 2026-09-25 (read → publish):
1. not a list
`- not a list
`# not heading
`not heading
`> 5 errors
`The page's content changes silently on a read → update cycle, and the Markdown is a fixed point after the first cycle, so no round-trip test notices. It affects every paragraph `read` writes: top level, layout cells, macro bodies, and (since #55) raw table cells. A GFM pipe-table cell is not affected, because its text is inline.
Notes
` (`renderBlock`'s `p` case), escaping a leading marker with a backslash (`1\.`, `\#`, `\>`).