Layer the remaining flake outputs onto the build: a default app pointing at
the compiled binary, a dev shell exposing the pinned Bun, biome, and bun2nix,
a `use flake` .envrc for direnv, and a checks set aggregating the Bun test
tiers, a build-seam smoke check against the Nix-built binary, and biome lint
through the treefmt-nix flake-parts module.
The dev shell and the build share the one pinned nixpkgs-bun input so Bun
cannot drift between them. treefmt's biome reuses the repo's biome.json with
VCS disabled for the sandbox, and packages/core/src/index_test.ts is
reformatted by biome so the new lint gate is green.
Bring core-parser.md in line with the resolved design in CONTEXT.md and
ADRs 0004/0005, and promote a new decision to normalise ingredient/cookware
units.
- Full sync of the core-parser spec: diagnostics/total-function channel,
container blocks (ListItemBlock, BlockquoteBlock), RawInline alongside
RawBlock via position-slicing, the unified WikilinkNode/TransclusionNode
shape as two typed nodes, and the minimal remark plugin set.
- New ADR 0006: normalise ingredient/cookware units via a known-alias table
with passthrough, case-insensitive, canonical-only; align Timer matching
to case-insensitive too.
- SPEC.md: units are normalised (new Units section, alias table); Timer table
marked case-insensitive.
- CONTEXT.md: add Unit Normalisation entry, resolve the open item.
- fixtures/basic.md: add a blockquote (callout) carrying an annotation and a
non-canonical unit so the integration test exercises containers and
normalisation.
- Expand the core test.todo checklists to cover the new behaviour (containers,
raw fallbacks, diagnostics, unit normalisation, wikilink/transclusion
variants); still pending, suite stays green.
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.