Markdown render measurement baseline

Corpus: 1,312 tracked, eligible Markdown documents at c3f3653a199997a1e2fc7bbcac7da21d95ce3649. Only tracked eligible files from the catalog are included; untracked notes and non-Markdown formats are excluded. No render errors. Source is frozen through Git, identified by path/hash; reports retain no source or rendered HTML. Historical command used before dependency removal (reference mode is now retired):

sh
python3 scripts/markdown_metrics.py --reference --output /tmp/render-baseline.json
python3 -B tests/markdown_metrics_test.py

After restoration, use --baseline docs/plans/markdown_dependency_removal/render_baseline.json and omit --reference. This reuses the original source bytes, not newly edited documents. The archived Stage 1 probe captured the reference AST before removal; current tooling rejects reference mode and never reinstalls the bundle. Archived baseline evidence remains readable without it. Historical rewriting must carry the old/new corpus revision mapping so frozen source can still be located after commit IDs change.

Count interpretation and validation

The JSON reports semantic parser node counts independently of source candidate occurrences. They are deliberately not interchangeable or additive. For example tables, rows, cells, list containers/items and inline code are distinct semantic units; nested lists overlap total lists. Source patterns retain delimiter/marker variants but have ambiguity: multiline/nested inline syntax, bare URLs, indentation, Setext headings, loose lists, math and shortcut references need review. They are labeled candidates, not asserted fully parsed uses. Zero matches do not prove an arbitrary unsupported form absent. HTML counts include escaped nodes; parsing does not imply output executes. Front matter is excluded by source scan but included by the independent parser, explaining some differences. Code bodies are counted as example lines and excluded from prose source matching; inline code is masked first.

The mixed hand-counted fixture in tests/markdown_metrics_test.py validates repeated uses on a line, nested/item overlap, tables/cells, reference definitions versus uses, code exclusion, zero-use output, source locations, front matter and unclosed fences. This validates representative units, not full Markdown grammar. The JSON includes all observed parser node classes, all declared source categories including zero use, errors, and per-document locations for manual review. No diagram/math/footnote engines were installed or executed.

Semantic reference counts

Parser node typeUsesDocuments
BlockQuote657630
Code311511171
Document13121312
Emphasis31490
FencedCode32385
Heading107501311
HtmlBlock154
HtmlInline66
IndentedCode11
Link3972727
ListBlock125411294
ListItem414821294
Newline8766191
Paragraph495561312
Strikethrough11
Strong4926884
Table9355
TableCell255555
TableRow75955
TableSection18555
TaskListItemMarker101244
Text1065061312
ThematicBreak184

Source syntax candidates

Syntax/variantOccurrencesDocumentsRare (≤5 docs)
autolink_bare_candidate25147no
autolink_email_candidate00yes
autolink_url11yes
blockquote_line689630no
blockquote_nested_line00yes
code_example_line123885no
emphasis_asterisk_candidate26778no
emphasis_underscore_candidate1814no
fence_backtick32385no
fence_language28482no
fence_mermaid62yes
fence_tilde00yes
footnote_candidate00yes
front_matter11yes
gfm_alert_candidate00yes
hardbreak_backslash00yes
hardbreak_spaces2155219no
heading_atx107481311no
heading_setext_candidate1147100no
html_comment_start102yes
html_tag_candidate2713no
image_markdown_candidate00yes
indented_code_candidate94469no
inline_code311051171no
link_fragment_candidate17053no
link_inline_candidate3864723no
link_reference_explicit_candidate00yes
link_reference_shortcut_candidate112657no
list_continuation_candidate15607590no
list_loose_candidate5657855no
list_nested_item9670451no
list_ordered_item2030386no
list_unordered_item394631287no
math_candidate108no
reference_definition261yes
strikethrough_candidate11yes
strong_asterisk_candidate4907884no
strong_underscore_candidate11yes
table_cell_candidate256355no
table_row_candidate76155no
table_separator9355no
task_checked57333no
task_unchecked41930no
thematic_break_candidate185yes
unclosed_fence00yes