CLAUDE WATERMARK REMOVER · MARKDOWN TEST
Why did a row of asterisks turn into a horizontal rule?
Removing U+200B leaves three adjacent asterisks, which CommonMark renders as a thematic break.
What changed in the preview
The test puts U+200B after the first asterisk on a standalone line. The original render produces a paragraph with emphasis around the hidden character and one literal asterisk. The cleaned render is a single horizontal-rule element. The cleaner changed one code point; the parser changed the block type. If you mean to document the asterisks themselves, show them as inline code or escape a marker in the Markdown. A source diff and a rendered preview reveal different parts of this change: one shows the deletion, the other shows the new divider.
What this test covers
This standalone asterisk line is the only measured divider. Adjacent list context and the dash-based setext heading rule were not tested.
Measured HTML
The first preview contains a literal U+200B, displayed below as \u200B. The HTML is shown as text.
Before cleanup
<p><em>\u200B</em>*</p>
After cleanup
<hr />
Reproduce locally
Save reproduce.cjs and tested-app.js together. Run npm install --no-save commonmark@0.31.2, then node reproduce.cjs. Compare with the recorded input, output and HTML. The test uses the homepage callback with a minimal DOM. It does not use Claude output or test statistical watermark detection.
See the CommonMark specification and another measured Markdown case.