Proof card visual redesign on a shared render vocabulary

Make `ana proof <slug>` *pop*. The proof card is the product's signature artifact — the receipt that proves an AI-built feature was scoped, planned, built, and independently verified, with per-agent turns/tokens/cost computed deterministically and committed to git. Nobody else can produce this data. But the **presentation is dated**: bold labels over dashed-underline rules, flat one-line-per-item lists, a hard `... and N more` truncation, every assertion listed (46 green lines for a large feature), and a Provenance cost that looks like bad math because the cache tokens that justify it are captured but never shown.

verdict PASSscore 31 / 31findings 5 (0 risk · 1 debt · 4 obs)duration 12h 52mrejection cycles 1shipped Jun 9, 2026surface cli

Pipeline timeline

Intent to proven code in 12h 52m across Think, Plan, Build, and Verify.

Think
650m
Plan
26m
Build
60m
Verify
32m

Assertion ledger

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

IDSaysMatcher
A001The render module provides all six building blocks the cards are built fromverifiedok
A002A section divider shows its label and fills the line to a fixed widthverifiedok
A003A section divider can show a summary aligned to the right edgeverifiedok
A004The header box keeps its established width so existing cards stay stableverifiedok
A005The header box can render rounded corners for the proof cardverifiedok
A006The header box renders square corners by default so the health card is unchangedverifiedok
A007Labelled rows line their values up into a clean columnverifiedok
A008Number columns in the stat grid line up on their right edgeverifiedok

Findings 5 total

debtpackages/cli/src/commands/proof.tsscope
Ad-hoc bold sub-header `chalk.bold(' Phase breakdown')` still present inside formatHumanReadable. AC2 says no inline section-header construction should remain; this sub-header (inside the Timing block, multi-phase path) was not converted to a primitive. Carried from the FAIL round — never a blocker (AC2 was PARTIAL), and a defensible call since it is a sub-header inside a section, not a top-level section header.
obspackages/cli/tests/commands/proof-card-golden.test.tsmonitor
Golden test pins the timezone by mutating process.env['TZ']='UTC' in beforeAll and restoring in afterAll. Correct and robust for this file (verified green under UTC/Tokyo/New_York, and full suite green under TZ=UTC). But process.env.TZ is process-global: if vitest ever runs this file in a worker shared with another time-dependent test file, that file could transiently observe UTC during this file's run. No leak observed in practice; the restore is clean.
obspackages/cli/src/commands/proof.tsacknowledge
Counts-unavailable session (derived absent) renders as a standalone `<label> counts unavailable` line above the grid (proof.ts:452-455), not as an in-grid row spanning the numeric columns as the spec mockup depicts. This is arguably cleaner (keeps numeric columns from widening) and the substance — the session is shown loudly and contributes nothing to totals — is fully met. No contract assertion governs the exact rendering.
obspackages/cli/tests/utils/proofSummary.test.tsmonitor
Stale `@ana A020` tag points at the wrong assertion. In this contract A020 is the findings-overflow no-bare-and-N-more rule, but the tag sits on the single-phase phase-breakdown test in an unmodified file. Pre-existing mis-tag; harmless here (A020 is correctly covered by the golden test at line 251) but would mislead tag-driven verification. Carried from the FAIL round; the fix cycle did not touch this file.
obsclosed
Contract file_changes lists proofSummary.test.ts and commit-hygiene.test.ts as 'modify', but their substring toContain assertions survive the new format with minimal/no change. Harmless over-prediction; a planner could mark such resilient files as optional. Carried from the FAIL round.

Provenance

Who ran what, and what it cost. Recomputable estimates from the shared price table — subordinate to the verdict, never gating.

model claude-opus-4-8
sessionturnstoolsinoutcachecost
ana723110.9k43.6k1.9M$3.62
ana 231156.0k11.7k608.2k$0.93
plan552411.4k34.8k1.4M$2.20
build24010815.6k126.0k19.0M$14.15
verify93396.7k33.7k3.0M$2.99
build 2923610.2k34.5k2.6M$2.71
verify 291406.7k25.8k2.4M$2.27
TOTAL 7 sessions$28.87 (table 2026-06-14)
churn 6 files · +1522/−289
completeness ✓ complete (plan 1/1 · build 2/2 · verify 2/2)

Integrity seal

scopesha256:e4a0ef7634ef1...
contractsha256:3c785de70ad7d...
plansha256:fc39e8254a928...
specsha256:5fff4c205959d...
build-reportsha256:9a84c7b8cad08...
build-datasha256:23c5ac94ca849...
verify-reportsha256:8ae36abecf4ee...
verify-datasha256:2c92cb93817e8...
audit cmd$ ana proof audit proof-card-redesign   → all hashes match