Scan card redesign — shared render vocabulary + gated 'How your team writes' section
`ana scan` is the top-of-funnel surface — `npx anatomia-cli scan .`, no install, ten seconds, the first thing a newcomer ever sees and the asset the README GIF records. Two problems:
verdict PASSscore 19 / 19findings 4 (0 risk · 1 debt · 3 obs)duration 14h 15mrejection cycles 0shipped Jun 9, 2026surface cli
Pipeline timeline
Intent to proven code in 14h 15m across Think, Plan, Build, and Verify.
Think76m
Plan16m
Build17m
Verify8m
Assertion ledger
19 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | The scan card uses the same rounded header as the proof card | verified | ok |
| A002 | The old hand-rolled square box is gone from the scan card | verified | ok |
| A003 | Each section is introduced by a clean inset rule, not a bold label over dashes | verified | ok |
| A004 | The card header aligns to a consistent width | verified | ok |
| A005 | The header's summary line aligns to the same width | verified | ok |
| A006 | A 'How your team writes' section appears, proving scan read the code | verified | ok |
| A007 | The card reports the team's naming style | verified | ok |
| A008 | The card reports the team's indentation style | verified | ok |
Findings 4 total
debtpackages/cli/tests/commands/scan.test.ts→ scope
Stale @ana tags in scan.test.ts collide with this contract's assertion IDs
obs→ closed
Contract A011 not_contains 'mixed' is a weak proxy — the fields that could render 'mixed' (imports.style, nullStyle.preference) are never rendered by the Conventions section regardless of the gate
obspackages/cli/src/utils/displayNames.ts→ closed
Contract file_changes omitted packages/cli/src/utils/displayNames.ts, which the builder had to modify to satisfy A010 (getPatternLibrary returns lowercase 'zod'; A010 requires 'Zod')
obspackages/cli/src/utils/displayNames.ts→ acknowledge
Seven of eight new validation display-name entries (joi, yup, valibot, superstruct, ajv, pydantic, marshmallow) are unexercised — only 'zod' is reached. Consistent with the map's existing forward-coverage convention, low risk.
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
| session | turns | tools | in | out | cache | cost |
|---|---|---|---|---|---|---|
| ana | 125 | 51 | 14.7k | 88.1k | 6.1M | $7.94 |
| plan | 83 | 38 | 6.4k | 38.3k | 3.6M | $3.42 |
| build | 148 | 68 | 7.3k | 74.0k | 8.3M | $7.10 |
| verify | 77 | 34 | 6.5k | 30.1k | 1.9M | $2.28 |
| TOTAL 4 sessions | $20.74 (table 2026-06-14) | |||||
churn 5 files · +536/−86
completeness ✓ complete (plan 1/1 · build 1/1 · verify 1/1)
Integrity seal
scopesha256:ae525850360ff...
contractsha256:60ef1fe6e01b6...
plansha256:29a7a936e96f5...
specsha256:340fa8714b6b1...
build-reportsha256:bfd99fc381d42...
build-datasha256:5bdf43da71a24...
verify-reportsha256:fcf4f0f00fa5a...
verify-datasha256:ae4f48fbd688e...
audit cmd$ ana proof audit scan-card-redesign → all hashes match