Proof Health V1

The developer wants to see quality trajectory across pipeline runs. `ana proof health` computes severity-weighted metrics, identifies hot modules, surfaces promotion candidates, and reports on promotion effectiveness. The `work complete` output gains a change-driven fourth line that surfaces health insights when something shifted since the last run. Health is the measurement layer that validates the severity taxonomy, informs promotion decisions, and provides the north star metric (risks/run trending down).

verdict PASSscore 40 / 40findings 5 (0 risk · 2 debt · 3 obs)duration 51mrejection cycles 1shipped Apr 30, 2026surface cli

Pipeline timeline

Intent to proven code in 51m across Think, Plan, Build, and Verify.

Think
8m
Plan
8m
Build
36m
Verify
6m

Assertion ledger

40 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001Running proof health shows the number of pipeline runsverifiedok
A002Trajectory section shows risks per run for the recent windowverifiedok
A003Trajectory section shows the lifetime averageverifiedok
A004Trajectory section shows the trend directionverifiedok
A005Hot modules section appears in the health dashboardverifiedok
A006Promotion candidates section appears in the health dashboardverifiedok
A007Health JSON uses the standard four-key envelopeverifiedok
A008Health JSON results include trajectory dataverifiedok

Findings 5 total

debtpackages/cli/src/commands/proof.tsclosed
Hardcoded 10 in trend display instead of using MIN_ENTRIES_FOR_TREND constant. Template literal uses ${10} rather than importing and using the named constant, creating drift risk if threshold changes.
debtpackages/cli/tests/utils/proofSummary.test.tsclosed
detectHealthChange 'detects trend improvement' unit test uses conditional assertion (if change.changed) — if change.changed is false, the expect on triggers never executes. This masks a potential false pass.
obspackages/cli/src/commands/proof.tsclosed
Promotion candidate display has no summary truncation. Long summaries from findings (up to 1000 chars) render untruncated in terminal output. Not a crash risk but degrades terminal readability.
obspackages/cli/tests/utils/proofSummary.test.tsclosed
Promotion effectiveness test covers only the extremes (0% reduction, 100% reduction, tracking). No test for intermediate reduction (e.g., 40%) or negative reduction (more matches than baseline).
obspackages/cli/src/utils/proofSummary.tsclosed
Trajectory 'worsening' label can be counterintuitive with sparse classification — reports worsening on 0.1 risks/run when most findings lack severity. Algorithm is correct but label may mislead operators.

Integrity seal

scopesha256:688e88624bb63...
contractsha256:f5b7031c643f1...
plansha256:cbea6b107e7c0...
specsha256:2c0df117a47a0...
build-reportsha256:dcc05d1d53d6d...
build-datasha256:ac9d846db8704...
verify-reportsha256:4dea1ea171bda...
verify-datasha256:d1a466dcaf6da...
audit cmd$ ana proof audit proof-health-v1   → all hashes match