# ECP-0030: Workspace Coverage Reporting

Status: Draft

## Problem

We want high-confidence changes across the entire codebase, not only the newest crates. Today, we have unit tests in a subset of crates and no standardized, reproducible, formal coverage artifact.

## Decision

- Adopt workspace-level coverage as a first-class artifact using `cargo-llvm-cov`.
- Provide repeatable `just` commands that generate:
  - LCOV (`tmp/coverage/workspace.lcov`)
  - HTML report (`tmp/coverage/workspace-html/index.html`)
  - A short summary (`tmp/coverage/workspace.summary.txt`)
- Prefer running coverage via `nix develop` so `ac-ffmpeg` builds consistently (FFmpeg headers/libs present).

## Details

Commands:

- `just test-workspace`
- `just cov-workspace` / `just cov-workspace-html` (when `cargo llvm-cov` is available, typically inside `nix develop`)
- `just cov-workspace-nix` / `just cov-workspace-html-nix` (self-contained, runs through `nix develop`)
- `cargo llvm-cov -p ec-core -p ec-crypto -p ec-hdhomerun -p ec-iroh -p ec-linux-iptv -p ec-moq -p ec-ts` (unit-coverage subset that doesn't require FFmpeg headers)

Coverage excludes:

- `third_party/`
- `target/`
- `tmp/`

## Consequences

- Contributors can review regressions with an objective report, not only "tests passed".
- Running coverage outside Nix may not work on macOS/Linux unless FFmpeg dev headers are installed; the Nix path is the canonical one.
