---
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.
