--- name: commonmark-conformance description: Grow Panache's CommonMark spec conformance under `Flavor::CommonMark` by running every `spec.txt` example through the shared parser, comparing rendered HTML against the spec's expected HTML (byte-equality after list-item whitespace normalization), and triaging failures into renderer / parser-shape / flavor-leak / dialect-divergence / missing-feature buckets. Use when asked to advance the CommonMark pass rate, grow the allowlist, or unblock a CommonMark regression. --- Panache's parser is shared across all flavors (Pandoc, Quarto, RMarkdown, GFM, CommonMark, MultiMarkdown). Each flavor selects a baseline set of extensions through `Extensions::for_flavor()`. Under `Flavor::CommonMark`, almost every Pandoc-specific extension is disabled, leaving only constructs that appear in the [CommonMark spec](https://spec.commonmark.org/). Conformance is tracked by running every `spec.txt` example through the parser and comparing rendered HTML against the spec's expected HTML. Follow the CommonMark conformance and parser invariants in the repository's root `AGENTS.md`; the workflow below supplies the task-specific procedure. ## Harness layout | Path | Purpose | | --------------------------------------------------------------- | -------------------------------------------------------------- | | `crates/panache-parser/tests/fixtures/commonmark-spec/spec.txt` | Vendored CommonMark spec. | | `crates/panache-parser/tests/commonmark.rs` | Test runner (`commonmark_allowlist`, `commonmark_full_report`). | | `crates/panache-parser/tests/commonmark/spec_parser.rs` | Parses `spec.txt` into example records. | | `crates/panache-parser/tests/commonmark/html_renderer.rs` | Test-only CST → HTML renderer (not a public API). | | `crates/panache-parser/tests/commonmark/allowlist.txt` | Example numbers currently passing. CI fails on regression. | | `crates/panache-parser/tests/commonmark/blocked.txt` | Examples we deliberately do not target yet, with reasons. | The renderer mirrors the byte-equality comparison commonmark-hs uses: the output is normalized via `