Proof Command UX
The proof system computes quality intelligence — severity classifications, suggested actions, promotion candidates, trend trajectories. The CLI commands that surface this data (`ana proof audit`, `work complete`) show the data but don't tell developers what to do with it. "71 active findings across 23 files" is a number. "5 risk, 4 promote, 9 closeable" is a decision surface. "Health: trend worsened" is a fact. "Health: trend worsened → ana proof audit" is a nudge. Two display additions (~25 lines of production code) that transform proof output from data dumps into action surfaces.
verdict PASSscore 20 / 20findings 5 (0 risk · 1 debt · 4 obs)duration 2h 30mrejection cycles 0shipped Apr 30, 2026surface cli
Pipeline timeline
Intent to proven code in 2h 30m across Think, Plan, Build, and Verify.
Think25m
Plan25m
Build117m
Verify7m
Assertion ledger
20 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Audit shows a severity breakdown of active findings | verified | ok |
| A002 | Audit severity counts only come from active findings | verified | ok |
| A003 | Severity summary shows zero-count buckets as absent, not zero | verified | ok |
| A004 | Audit shows an action breakdown of active findings | verified | ok |
| A005 | Action summary uses the correct label format with closeable hint | verified | ok |
| A006 | Findings with unknown severity show as unclassified in the summary | verified | ok |
| A007 | When all findings are unclassified, the summary lines are hidden | verified | ok |
| A008 | Skipping summary lines does not break the rest of the audit output | verified | ok |
Findings 5 total
debtpackages/cli/tests/commands/work.test.ts→ closed
A013 conditional assertion passes vacuously when health line absent — if (output.includes('Health:')) guard means zero assertions fire when improving trend doesn't produce a health line
obspackages/cli/tests/commands/proof.test.ts→ closed
A002 lacks negative proof of active-only counting — fixture has only active findings, no closed finding to prove exclusion
obspackages/cli/src/commands/proof.ts→ closed
Unknown severity values get own bucket instead of 'unclassified' as spec says — only '—' maps to unclassified, other unknowns display raw
obspackages/cli/src/commands/proof.ts→ closed
SEVERITY_ORDER duplication still present — sevOrder inline array at line 1026 is correct local choice but broader duplication across audit/findings blocks remains
obs→ closed
Contract A013 assertion weaker than intent — not_contains '→' on stdout is trivially true when health line absent, doesn't prove nudge suppression on informational triggers
Integrity seal
scopesha256:d4141207162a0...
contractsha256:fcb0a19b6b913...
plansha256:d0813a350687b...
specsha256:892e2f0df23f6...
build-reportsha256:caec4d9cf7b47...
build-datasha256:f50136efe30de...
verify-reportsha256:fac04d46aef11...
verify-datasha256:16b0aafda8579...
audit cmd$ ana proof audit proof-command-ux → all hashes match