Problem
components/expected-pages.tsx hardcodes the route table as JSX rows, and its
own copy says the table "is the contract between product and engineering". The
same table exists in docs/SITE_MAP.md. Two hand-maintained copies of the same
truth will disagree — and the component itself is already stale, listing
/product and /contracts as "Planned" when both routes exist.
What to do
- Move the route data into a single typed module (
lib/site-map.ts) with a
Route type and an explicit status union.
- Render the component from that data.
- Generate
docs/SITE_MAP.md from the same source in a script, and have CI fail
when the committed markdown is stale.
- Correct the statuses to reflect reality.
Acceptance criteria
Notes
The staleness is the argument for the change: the table drifted within one
release of being written.
Problem
components/expected-pages.tsxhardcodes the route table as JSX rows, and itsown copy says the table "is the contract between product and engineering". The
same table exists in
docs/SITE_MAP.md. Two hand-maintained copies of the sametruth will disagree — and the component itself is already stale, listing
/productand/contractsas "Planned" when both routes exist.What to do
lib/site-map.ts) with aRoutetype and an explicit status union.docs/SITE_MAP.mdfrom the same source in a script, and have CI failwhen the committed markdown is stale.
Acceptance criteria
Notes
The staleness is the argument for the change: the table drifted within one
release of being written.