docs(spec): set near-100% per-domain coverage as the working target

This commit is contained in:
Bas van Rossem
2026-07-22 11:14:58 +02:00
parent f547cef8e8
commit 32412fa88b

View File

@@ -14,7 +14,10 @@ changes can't silently break existing behavior, and shake out latent bugs in the
3. **Bug handling = log in Plane + fix trivial inline.** Every finding becomes a Plane work 3. **Bug handling = log in Plane + fix trivial inline.** Every finding becomes a Plane work
item; small/safe fixes land inline in the same pass; risky / behavior-changing ones get item; small/safe fixes land inline in the same pass; risky / behavior-changing ones get
their own ticket and are deferred (flagged as such). their own ticket and are deferred (flagged as such).
4. **No hard coverage threshold gate** now — measure and report; revisit a CI gate later. 4. **Target near-100% coverage per domain** (the working bar). Every remaining uncovered
line is either tested or explicitly annotated as defensive/unreachable — no silent gaps.
A CI threshold *gate* (build fails under X%) is still deferred; the target is enforced by
review for now.
## Current baseline (2026-07-22) ## Current baseline (2026-07-22)
@@ -40,7 +43,10 @@ changes can't silently break existing behavior, and shake out latent bugs in the
- Config per workspace: include `src/**`; exclude tests, config files, and generated / - Config per workspace: include `src/**`; exclude tests, config files, and generated /
non-logic files (`src/db/schema.ts`, `*.d.ts`, `main.tsx`, `vite-env.d.ts`). non-logic files (`src/db/schema.ts`, `*.d.ts`, `main.tsx`, `vite-env.d.ts`).
- Record a **baseline coverage % per domain** so every gap filled is measured, not guessed. - Record a **baseline coverage % per domain** so every gap filled is measured, not guessed.
- **No hard threshold gate** now (arbitrary + flaky). Measure, report, revisit later. - **Working target: near-100% per domain.** Drive each domain's coverage up until the only
remainder is genuinely defensive / unreachable code, which is annotated (`/* c8 ignore */`
with a reason) rather than left as a silent gap. A CI *gate* is still deferred — enforce by
review for now.
### 2. Fix the API harness fragility (prerequisite for reliable domain isolation) ### 2. Fix the API harness fragility (prerequisite for reliable domain isolation)
@@ -115,7 +121,8 @@ slog. Bugs found during a domain's pass are reported structurally and triaged pe
## Out of scope ## Out of scope
- A CI coverage-threshold gate (deferred; measure first). - A CI coverage-threshold gate that fails the build (deferred; the near-100% target is
enforced by review for now, not by CI).
- E2E browser automation (Playwright/Cypress) — the client integration tests stay at the - E2E browser automation (Playwright/Cypress) — the client integration tests stay at the
Testing-Library level. Testing-Library level.
- Load/performance testing. - Load/performance testing.