LITE-031: GitHub Flavored Markdown extensions on the vendored parser

Now
OPEN
Sev
MED
Ask
gritzko
Rep
///lite
On1
LITE-030

The input dialect that actually matters is GitHub's, not bare CommonMark: READMEs, issues and every .md in the wild carry tables, task lists, ~~struck~~ text and bare www. links. The vendored commonmark.js (LITE-030) implements none of them — GFM's reference implementation is the C cmark-gfm, with no official JS port. This ticket adds the four extensions on top of the vendored parser, layered as separate files wherever the upstream hook allows, so re-vendoring an upstream bump stays a script re-run.

Input

Context

The GFM spec is 0.29-gfm (2019-04-06), based on CommonMark 0.29 — older than the 0.31.2 core the vendored parser implements; the extensions are additive, the base differences are not this ticket's business. A text dump of the spec sits at ~/tmp/gfm.txt (fetched 2026-08-14; the live page is https://github.github.com/gfm/).

Goals

The vendored parser accepts GFM and produces AST nodes the LITE-032 emitter can walk, with cmark-gfm agreeing on the rendered HTML for every ported example.

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome

Staged in work/LITE-031, 9 files, nothing posted. Orchestrator verification: test/mark/gfm/run.sh PASS at 49 checks, LITE-030's test/mark/run.sh still PASS at 66, and a document carrying all four extensions parses into the same node inventory cmark-gfm -t xml reports for it.