Turned the MDX-never-reads-data rule into a pre-commit failure
Added a pre-commit hook that fails the commit if any MDX file imports from @/data/*, imports @/lib/data-registry, or string-references a content/data/*.jsonl path. Closes F10 from the concept audit.
MDX pages on this site aren't supposed to read data directly — they go through registered components like <TrendChart> or <NowPanel> that call src/lib/<wing>/source.ts or data-registry.ts. That boundary was a convention in AGENTS.md and ADR-003, which means it held right up until it didn't. I added scripts/check-mdx-boundary.ts to the pre-commit chain to make it a compile error instead of a vibe.
The script walks every content/docs/**/*.mdx and flags three things: imports from @/data/*, imports of @/lib/data-registry, and bare string literals pointing at content/data/*.jsonl. On violation it fails the commit with the file, line, offending text, and a one-line pointer at the right integration path. I skipped the staged-vs-unstaged dance — scanning the whole docs tree is fast enough that I'd rather not reason about what a rebase or cherry-pick leaves in the index. Closes F10 from the concept audit.
Deleted the eight legacy top-level routes; 308s now guarded by a spec
Deleted the eight pre-Fardin-Docs top-level routes — about, work, blog, contact, uses, failures, for-ai, interview — 2,298 lines gone. The 308 redirects in next.config.ts cover every legacy URL, and a Playwright spec asserts they still land on the right /docs/* target.
Killed the last three metaphor fields in the frontmatter schema
Renamed the three surviving metaphor fields — wing→section, affectTone→mood, exhibit→homeSlot — across 143 MDX files and the whole schema layer. A codemod did the migration in one pass.