WI-039 · Tracker Hardening · tracker-check
done P1 low risk Owner: Claude Reviewer: Codex 100% · 1/1 tasks complete
| Code | WI-039 |
|---|---|
| Phase | Tracker Hardening |
| Order | 74 of 93 |
| Story points | 3 |
| Primary surface | apps/web/scripts/tracker-check.mjs + package.json gate |
| Retires | — |
| Depends on | — |
| Blocks | Honest point model + one sprint-complete rule, Gate↔requirement + requirement↔work-item backfill (Platform+Spine) + owners |
Make the plan self-verifying: a single command that fails the build on integrity problems (broken refs, dup ids, bad owners, double-counted points) so the tracker can't silently rot as it grows.
Build
Checks
Acceptance
TH1 Plan-integrity script (tracker:check) gates the build (refs, codes, labels, paths, no point double-count).build fails on dup codes / unresolved gate+req refs / bad sprint names / owner+reviewer labels not in PEOPLE / broken paths / overlapping pointed summary+slice rows.
No paid API / infra spend triggered by this item.
done Sprint: Tracker Hardening
Edit status / sprint on the ★ Live Board → — changes are logged live with who / when / why.
No human tasks linked.
docs:tracker now skips the Supabase write (only deploy/CF_PAGES or npm run tracker:push writes).None recorded yet.
None recorded yet.
None recorded yet.
apps/web/scripts/tracker-check.mjsapps/web/package.json — tracker:check gateAdded apps/web/scripts/tracker-check.mjs and wired it ahead of docs:tracker (also npm run tracker:check), so a broken plan fails the build before generate/deploy. Errors break the build; coverage gaps are warnings.
| Check | Type | Result |
|---|---|---|
| Duplicate WI / requirement ids | error | 0 |
| Gate → requirement refs resolve | error | 0 broken |
| Item → gate / item → requirement refs | error | 0 broken |
| Sprint names + owner/reviewer in PEOPLE | error | 0 invalid |
| Summary rows zero-pointed (no double-count) | error | 0 violations |
| Coverage gaps (reqs w/o gate or work item) | warn | 52 + 52 |
| Unowned items (TBD) | warn | 24 |
docs:tracker now skips the Supabase write (only deploy/CF_PAGES or npm run tracker:push writes).