Files
agentic-dev/docs/work/epics/platform-retrofit/_epic.md

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 done
blog
media
marketing-pages
navigation
web-tanstack
web-next
core-events
core-realtime
2026-07-12T10:22:00Z 2026-07-12T19:17:13.077Z

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:

  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

Out of scope (from PRD)

  • Any new Veect feature code (walking-skeleton PRD and successors).
  • The landing page (polish-playground-landing PRD).
  • 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).