diff --git a/docs/work/_system/_state.json b/docs/work/_system/_state.json index 8663199..22b8c73 100644 --- a/docs/work/_system/_state.json +++ b/docs/work/_system/_state.json @@ -1,5 +1,5 @@ { - "updated_at": "2026-07-12T10:28:27.450Z", + "updated_at": "2026-07-12T11:16:19.871Z", "epics": { "binder-wrap-helper": { "status": "done", @@ -542,11 +542,19 @@ "title": "Platform retrofit — repurpose template-vertical as the Veect monorepo", "prd": "docs/work/prds/platform-retrofit.prd.md", "stories": { + "00-baseline-repair": { + "status": "todo", + "title": "Baseline repair — L0 coverage tooling and documented command", + "ac_total": 1, + "ac_completed": 0, + "depends_on": [], + "blocks": [] + }, "01-commit-product-docs": { "status": "in-progress", "title": "Commit the product spec and design references under docs/product/", "ac_total": 3, - "ac_completed": 0, + "ac_completed": 1, "depends_on": [], "blocks": [ "08-rewrite-agent-docs" @@ -976,6 +984,11 @@ } }, "ready": [ + { + "epic": "platform-retrofit", + "story": "00-baseline-repair", + "title": "Baseline repair — L0 coverage tooling and documented command" + }, { "epic": "platform-retrofit", "story": "01-commit-product-docs", diff --git a/docs/work/epics/platform-retrofit/00-baseline-repair/_story.md b/docs/work/epics/platform-retrofit/00-baseline-repair/_story.md new file mode 100644 index 0000000..0b21fda --- /dev/null +++ b/docs/work/epics/platform-retrofit/00-baseline-repair/_story.md @@ -0,0 +1,40 @@ +--- +id: 00-baseline-repair +epic: platform-retrofit +title: Baseline repair — L0 coverage tooling and documented command +type: technical-story +status: todo +feature: tooling +depends-on: [] +blocks: [] +created: 2026-07-12T11:25:00Z +updated: 2026-07-12T11:16:19.512Z +--- + +## Goal + +The L0 coverage layer runs clean across the whole workspace: every package that runs vitest has the `@vitest/coverage-v8` provider, and the documented full-coverage invocation actually parses (turbo requires an extra `--` to forward `--coverage` to vitest). + +## Why + +The first dispatched slice discovered (and the orchestrator verified) that the template snapshot's baseline is broken in two ways nobody had exercised — this repo's history is a single squashed initial commit, so CI never ran on it. This story fixes the L0 half. The other half — `pnpm lint` aborting at turbo task-graph construction on the committed `core-trpc → core-api → {blog, navigation, marketing-pages} → core-trpc` package cycle — is deliberately NOT fixed here: story 03's deletions remove the only edges that close the cycle (verified: `auth` carries no `core-trpc` dependency), so the founder-approved waiver in `_epic.md` covers `pnpm lint` until story 03's final deletion slice lands. + +## Done when + +- All 9 packages that previously failed the L0 run (cms, core-audit, core-cms, core-eslint, core-testing, core-trpc, turbo-generators, web-next, web-tanstack) carry `@vitest/coverage-v8` as a devDependency and their coverage run passes. (web-tanstack gets its devDep too even though story 03 deletes it — gates stay meaningful until then.) +- Every documented occurrence of the broken `pnpm test -- --coverage` form (`.sandcastle/implementer.prompt.md`, `docs/guides/coverage.md`, CLAUDE.md quick-start if present) shows the invocation turbo actually forwards. +- `pnpm typecheck && pnpm test && pnpm conformance && pnpm fallow:audit && pnpm coverage:diff` green (lint excluded per the epic's baseline waiver). + +## In scope + +- The `@vitest/coverage-v8` devDependency additions + lockfile update. +- Correcting the documented L0 invocation everywhere it appears in repo docs/prompts. + +## Out of scope + +- Breaking the `core-trpc → core-api` package cycle (resolved structurally by story 03's deletions; waiver until then). +- Any coverage-threshold or manifest band changes. + +## Tasks + +- [ ] Add `@vitest/coverage-v8` to the 9 packages missing it (cms, core-audit, core-cms, core-eslint, core-testing, core-trpc, turbo-generators, web-next, web-tanstack), update the lockfile, and correct the documented L0 invocation in `.sandcastle/implementer.prompt.md` + `docs/guides/coverage.md` (+ CLAUDE.md if it repeats the broken form) — one commit; the full L0 run passes across all coverage-capable packages. diff --git a/docs/work/epics/platform-retrofit/01-commit-product-docs/_story.md b/docs/work/epics/platform-retrofit/01-commit-product-docs/_story.md index 6b9a342..318369c 100644 --- a/docs/work/epics/platform-retrofit/01-commit-product-docs/_story.md +++ b/docs/work/epics/platform-retrofit/01-commit-product-docs/_story.md @@ -8,6 +8,7 @@ feature: docs depends-on: [] blocks: [08-rewrite-agent-docs] created: 2026-07-12T10:22:00Z +updated: 2026-07-12T11:16:19.512Z --- ## Goal @@ -43,6 +44,6 @@ Sandcastle implementers run in git worktrees, which contain only committed files ## Tasks -- [ ] Migrate the spec bundle `.proto/veect-product-docs/` → `docs/product/` (top level, filenames preserved) and delete the stray `veect-product-docs.zip` at the repo root — spec docs committed and greppable; all gates pass on this commit. +- [x] Migrate the spec bundle `.proto/veect-product-docs/` → `docs/product/` (top level, filenames preserved) and delete the stray `veect-product-docs.zip` at the repo root — spec docs committed and greppable; all gates pass on this commit. _(landed 4d1d534, reviewer-approved; zip was already absent — verified no-op; gates green under the epic's baseline waiver)_ - [ ] Migrate the design references from `.proto/design/` → `docs/product/reference/` (HTML prototypes as-is, `veect-codebase/` prototype, upload PNGs and remaining bundle files), add `docs/product/reference/` to the fallow/lint ignore lists so whole-codebase auditors skip reference material, and delete the emptied `.proto/` — one commit, all gates pass. - [ ] Amend `docs/product/README.md`: prepend a short "Repo supersessions" section linking ADR-027/028/029 and add the `Veect.dc.html` ground-truth row to the authority table (ADR-029 §5) — one commit, all gates pass. diff --git a/docs/work/epics/platform-retrofit/03-delete-demo-apps-and-features/_story.md b/docs/work/epics/platform-retrofit/03-delete-demo-apps-and-features/_story.md index 1570347..dde0ef3 100644 --- a/docs/work/epics/platform-retrofit/03-delete-demo-apps-and-features/_story.md +++ b/docs/work/epics/platform-retrofit/03-delete-demo-apps-and-features/_story.md @@ -8,6 +8,7 @@ feature: web-tanstack, blog, media, marketing-pages, navigation depends-on: [02-single-version-release-please] blocks: [04-web-next-shell, 08-rewrite-agent-docs] created: 2026-07-12T10:22:00Z +updated: 2026-07-12T11:16:19.512Z --- ## Goal @@ -25,7 +26,7 @@ The demo content blocks the package map: the Veect features (workspaces, project - `docs/glossary.md` Packages-section terms describing each deleted feature were pruned in the same slice that deleted the feature (no orphaned glossary terms); `auth` entries stay. - The `auth` feature's manifest, tests, and coverage bands are untouched (regression canary — ADR-027 §4). - ESLint/turbo boundary configs and the generators survived the deletions (spot-check: `pnpm turbo gen feature` still scaffolds; any config a deletion breaks is fixed inside that same slice). -- `pnpm typecheck && pnpm lint && pnpm test && pnpm conformance && pnpm fallow:audit && pnpm coverage:diff` pass on EVERY slice — no big-bang broken middle. +- `pnpm typecheck && pnpm lint && pnpm test && pnpm conformance && pnpm fallow:audit && pnpm coverage:diff` pass on EVERY slice — no big-bang broken middle. (Exception per the epic's baseline waiver: `pnpm lint` is waived UNTIL the final deletion slice of this story — deleting blog/navigation/marketing-pages removes the only edges closing the `core-trpc → core-api` package cycle, so the final deletion slice and everything after MUST pass `pnpm lint`.) ## In scope diff --git a/docs/work/epics/platform-retrofit/_epic.md b/docs/work/epics/platform-retrofit/_epic.md index 66a0692..68325ee 100644 --- a/docs/work/epics/platform-retrofit/_epic.md +++ b/docs/work/epics/platform-retrofit/_epic.md @@ -16,6 +16,7 @@ features: core-realtime, ] created: 2026-07-12T10:22:00Z +updated: 2026-07-12T11:16:19.512Z --- ## Goal @@ -26,8 +27,18 @@ Turn the `template-vertical` starter into a clean, truthful Veect monorepo: comm Three concrete pains (PRD): dispatch agents in worktrees cannot read the untracked `.proto/` spec bundle; `pnpm work status`, CLAUDE.md/AGENTS.md, and release-please all describe a blog/CMS starter that no longer reflects the product; and the demo features occupy the workspace, router/CMS composition, and versioning config that the Veect features (workspaces, projects, design-doc, discovery, ai) need. ADR-027/028/029 are the decision baseline; this epic implements their repo-level consequences only. +## Baseline gate waiver (founder-approved 2026-07-12) + +The template snapshot's baseline (single squashed initial commit — CI never ran on it) is broken in two ways discovered by the first dispatched slice and verified by the orchestrator: + +1. **`pnpm lint` aborts at turbo task-graph construction** — committed package cycle `core-trpc → core-api → {blog, navigation, marketing-pages} → core-trpc` with `lint.dependsOn: ["^lint"]`. No ESLint rule ever runs. **Waived for this epic's commits until story 03's final deletion slice lands** — deleting the three demo features removes the only edges closing the cycle (`auth` has no `core-trpc` dependency), so the waiver expires there and `pnpm lint` becomes mandatory again. +2. **The L0 full-coverage run fails** — 9 packages lack `@vitest/coverage-v8`, and the documented invocation doesn't parse under turbo. **Waived until story 00 lands** (the repair story). + +All other gates (`typecheck`, `test`, `conformance`, `fallow:audit`, `coverage:diff`, `coverage:aggregate`) remain mandatory on every slice — no exceptions. + ## Stories +- [ ] [00 — Baseline repair: L0 coverage tooling and documented command](00-baseline-repair/_story.md) - [ ] [01 — Commit the product spec and design references under docs/product/](01-commit-product-docs/_story.md) - [ ] [02 — Rewrite release-please to a single root product version](02-single-version-release-please/_story.md) - [ ] [03 — Delete web-tanstack and the four demo content features](03-delete-demo-apps-and-features/_story.md)