Skip to content

Coverage owes 0.69.1: 87.82% vs floor 88, and COVERAGE_EXCLUDE_REGEX has described a different tree since April #3839

Description

@noahgift

Coverage was DEFERRED for the 0.69.1 pre-publish dogfood by operator ruling, 2026-09-22. This row is the obligation. The release did not pass coverage and does not claim to.

What was deferred

824853 / 939270 = 87.82%     enforced floor COV_FLOOR := 88   (Makefile:508)

Red in Coverage Nightly for 8 consecutive runs back to 2026-09-15 (latest 35672739017, a9502d992), independent of the 0.69.1 batch. dogfood.sh:613 runs gate coverage make coverage-check, gate sets FAILED=1, and VERDICT is GO only when FAILED -eq 0 — so without the deferral this is a hard publish stop via preflight R5.

Two pieces of work, and they are not the same piece

1. The measurement has described a different tree since April

COVERAGE_EXCLUDE_REGEX (Makefile:492) was last touched 2026-02-08. APR-MONO Phase 2c moved realizar to crates/aprender-serve, entrenar to crates/aprender-train, trueno to crates/aprender-compute on 2026-04-06. Nothing updated the patterns (measured by @aprender-d8):

pattern intends to exclude actually matches
realizar/ the inference engine 2 of 2194 .rs in crates/aprender-serve, plus 7 unrelated in aprender-train/src/ecosystem/realizar/
entrenar/ the training engine 0 files. The pattern is dead.
trueno the SIMD/GPU crate 0 of 580 .rs in crates/aprender-compute — but 73 in aprender-zram, plus orchestrate/profile/viz/core

Wrong in both directions: ~3900 files it means to exclude are measured, 88 it never meant to touch are excluded.

And the denominator contains code the target is configured never to execute. Ten of the top 28 entries in the nightly gap report (#2307) are crates/aprender-compute/src/backends/gpu/device/... at 0.0% — the crate the dead trueno pattern is supposed to remove — while Makefile:628 passes --skip cuda --skip gpu_. That code is 0% by construction, on every host, forever, including hosts with a GPU. It is not a coverage regression; it is a measurement artifact.

2. The real gap, once the measurement is honest

Unknown until (1) is computed. The nominal gap is ~1,700 lines. Repairing the regex to its documented intent changes the denominator and must be done as its own change, with the before/after LH/LF and excluded-file counts recorded, not folded into feature work and not done during a release — it moves a release gate's number in the direction that helps whoever is moving it.

Also owed: the coupling that hides the number

make coverage runs cargo llvm-cov test --workspace --lib, which includes aprender-contracts --lib, which contains lint::tests::lint_passes_on_real_contracts — a test that reads the live contracts/ tree and the on-disk receipts. So the coverage gate is coupled to release-receipt state. During 0.69.1 it died in the instrumented test run on the ladder-green shape violation, never reached its threshold check, never wrote an lcov.info, and reported [FAIL] coverage with no percentage at all — pointing at the wrong subsystem. Nobody would predict that flipping a ladder rung to required: true breaks coverage.

It is invisible for a second reason: dogfood.sh:196 picks the row note by grepping the output for the first line matching error/fail/warning/denied/regression, so a build warning becomes the visible note for the whole row. The same picker mislabelled the contracts row in the same rehearsal.

Done when

  • COVERAGE_EXCLUDE_REGEX repaired to its documented intent, with before/after LH, LF, percentage and excluded-file count in the commit message
  • the GPU-crate contradiction resolved: either the crate is excluded (it is skipped) or the tests run on a GPU host — not both
  • COV_FLOOR reset to the newly measured value as a separate commit, so the floor move is reviewable apart from the measurement fix
  • the receipt-state coupling broken or documented: a coverage gate that cannot measure reports "did not measure", never a coverage verdict
  • coverage removed from PREPUBLISH_DEFERRABLE once it can pass on its merits
  • CLAUDE.md's 88.78% (dated 2026-07-29) re-derived — it has not been re-measured since, because the gate that would have re-measured it has been failing for a week and a half

Refs #2307, #2333, #3835

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High prioritydogfood-coverageCloses a zero-coverage clusterparkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions