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.

Think
1m
Plan
12m
Build
12m
Verify
11m

Assertion ledger

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

IDSaysMatcher
A001Dry-run close does not create any git commitsverifiedok
A002Variadic strengthen records which skill each finding was promoted toverifiedok
A003Variadic strengthen records skill path for second finding tooverifiedok
A004Health trend requires at least 10 runs before computing directionverifiedok
A005Health trend computes direction once threshold is metverifiedok
A006Empty promotions data is absent from JSON health outputverifiedok
A007Full-path file query returns exactly one finding per matching entryverifiedfail
A008Basename query returns exactly one finding per matching entryverifiedfail

Findings 7 total

riskpackages/cli/tests/utils/proofSummary.test.tsclosed
Contract A007 value stale — says 1 but fixture baseEntry has 2 findings for census.ts
riskpackages/cli/tests/utils/proofSummary.test.tsclosed
Contract A008 value stale — says 1 but fixture baseEntry has 2 findings for census.ts
obsclosed
Contract A014 value '→' too broad — health output uses → for trend display, not just nudges
debtpackages/cli/tests/commands/work.test.tsclosed
A014 nudge check uses specific patterns ('→ claude', '→ ana proof') — a new nudge format would slip through
obspackages/cli/tests/utils/proofSummary.test.tsclosed
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