3.9 KiB
id, prd, title, type, status, features, created, updated
| id | prd | title | type | status | features | created | updated | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| platform-retrofit | docs/work/prds/platform-retrofit.prd.md | Platform retrofit — repurpose template-vertical as the Veect monorepo | epic | in-progress |
|
2026-07-12T10:22:00Z | 2026-07-12T15:21:32.164Z |
Goal
Turn the template-vertical starter into a clean, truthful Veect monorepo: commit the product spec under docs/product/, delete the four demo content features and apps/web-tanstack, reduce apps/web-next to a compiling auth shell, scaffold core-events + core-realtime, archive the shipped template work, move release-please to a single root version, pre-approve the editor's library traces, and rewrite CLAUDE.md/AGENTS.md for Veect — with every conformance gate green on every slice.
Why
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:
pnpm lintaborts at turbo task-graph construction — committed package cyclecore-trpc → core-api → {blog, navigation, marketing-pages} → core-trpcwithlint.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 (authhas nocore-trpcdependency), so the waiver expires there andpnpm lintbecomes mandatory again.- 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
- 01 — Commit the product spec and design references under docs/product/
- 02 — Rewrite release-please to a single root product version
- 03 — Delete web-tanstack and the four demo content features
- 04 — Reduce web-next to an auth shell with a boot smoke assertion
- 05 — Scaffold core-events and core-realtime
- 06 — Archive the shipped template work tree
- 07 — Library traces for @xyflow/react and zustand
- 08 — Rewrite CLAUDE.md and AGENTS.md for Veect
- 09 — Snapshot the clean slate as an orphan template branch (founder request 2026-07-12)
Out of scope (from PRD)
- Any new Veect feature code (walking-skeleton PRD and successors).
- The landing page (
polish-playground-landingPRD). - Generator retargeting beyond what deletions force — the feature generator's Payload+tRPC shape is correct for Veect's control plane (ADR-027 §5) and stays as-is.
- Runner infrastructure, Docker images, fixtures; billing, GitHub App, self-host distribution (deferred per ADR-027).