every.channel/evolution/proposals/ECP-0030-workspace-coverage-reporting.md
2026-02-15 16:17:27 -05:00

1.4 KiB

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.