A gap is a position where, on valid input (accepted by the language’s external
authority — typescript / yaml / parse5), the flat TextMate highlighter paints a token a
different visual role than the Monogram parser assigns it by construction. These are the
floor-blind divergences the generative scope≡role check (test/generative.ts) DISCOVERS over
grammar-derived inputs — the monogram#23/#24 class — which the corpus-bound scope-gap metric is
blind to (a small/clean corpus may never contain the shape, and the role-graded metric ignores
punctuation-floor mis-paints). Each gap’s input is minimized (delta-debugged to a minimal
repro that still parses and still diverges) and fingerprinted (a content hash, stable across
commits) so the ledger is deterministic and commit-trackable.
Regenerate: node test/gap-ledger.ts --write · verify up-to-date: node test/gap-ledger.ts --check.
0 gaps across 6 grammars · 0 dropped.
No gaps currently surface. The generative check reports no valid-input flat-highlighter divergence on the derived corpus. (This is the ledger MECHANISM; it lists what the check finds.)