Strengthen Weak Test Assertions
Learn triage (2026-05-02) reviewed 62 active findings across 41 pipeline runs and identified 10 that share one disease: tests that pass without proving anything. Weak matchers (`toBeDefined()`, `toBeGreaterThan(0)`), conditional guards that make assertions vacuous, and `not.toContain()` that passes by coincidence of fixture data. An 11th finding (risk severity) surfaces zero coverage for the UNVERIFIED fallback path — a safety-critical code path where silent failure corrupts the proof chain.
verdict PASSscore 16 / 18findings 7 (2 risk · 2 debt · 3 obs)duration 36mrejection cycles 0shipped May 2, 2026surface cli
Pipeline timeline
Intent to proven code in 36m across Think, Plan, Build, and Verify.
Think1m
Plan12m
Build12m
Verify11m
Assertion ledger
18 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Dry-run close does not create any git commits | verified | ok |
| A002 | Variadic strengthen records which skill each finding was promoted to | verified | ok |
| A003 | Variadic strengthen records skill path for second finding too | verified | ok |
| A004 | Health trend requires at least 10 runs before computing direction | verified | ok |
| A005 | Health trend computes direction once threshold is met | verified | ok |
| A006 | Empty promotions data is absent from JSON health output | verified | ok |
| A007 | Full-path file query returns exactly one finding per matching entry | verified | fail |
| A008 | Basename query returns exactly one finding per matching entry | verified | fail |
Findings 7 total
riskpackages/cli/tests/utils/proofSummary.test.ts→ closed
Contract A007 value stale — says 1 but fixture baseEntry has 2 findings for census.ts
riskpackages/cli/tests/utils/proofSummary.test.ts→ closed
Contract A008 value stale — says 1 but fixture baseEntry has 2 findings for census.ts
obs→ closed
Contract A014 value '→' too broad — health output uses → for trend display, not just nudges
debtpackages/cli/tests/commands/work.test.ts→ closed
A014 nudge check uses specific patterns ('→ claude', '→ ana proof') — a new nudge format would slip through
obspackages/cli/tests/utils/proofSummary.test.ts→ closed
Remaining toBeGreaterThan(0) in proofSummary.test.ts — 21 instances outside this spec's scope still use weak assertions
+2more findings
Integrity seal
scopesha256:46fab84be5cad...
contractsha256:4888a834eb914...
plansha256:b2e736183f18c...
specsha256:607dd81935bc6...
build-reportsha256:d48e0b8b0b535...
build-datasha256:abdea342e8071...
verify-reportsha256:399dec4b29fee...
verify-datasha256:22ca17c0e6ac3...
audit cmd$ ana proof audit strengthen-weak-test-assertions → all hashes match