Capture the design decisions reached while grilling the core-parser spec:
- Parser is a total function; invalid frontmatter YAML surfaces through a
new Document AST `diagnostics` channel instead of throwing (ADR 0004).
- Parse all of OFM losslessly via `RawBlock`/`RawInline` fallbacks with
position-sliced verbatim source and a minimal plugin set (ADR 0005).
- Grammar-driven (not last-space) quantity/unit split, fixing the
mixed-number collision, with trimming and multi-word unit rules.
- Container blocks nest `Block[]` so annotations surface inside
blockquotes and list items; unified wikilink/transclusion shape.
Update SPEC.md and CONTEXT.md accordingly; no parser code yet.
Expand fixtures/basic.md beyond prose-only annotations to exercise the
OFM features the parser must model: unordered and ordered lists,
emphasis and strong, a code span, a fenced code block (proving
annotations inside code are ignored), a thematic break, and a
transclusion. Also adds an empty-braces ingredient (@black pepper{}).
Add fixtures/combined.md, a Combined Recipe demonstrating Step
References in both sectioned (#Batter:1) and headingless (#2) forms,
which do not fit cleanly into a standalone recipe file.
Sets up the initial project structure: two packages (@kitchen-md/core
and @kitchen-md/bin), shared tsconfig, shared fixtures, per-package
test stubs (unit, integration, smoke), .gitignore, and project
CLAUDE.md with Conventional Commits convention.