CLI Polish

The CLI is the product's front door. Every command's output — its tables, error messages, help text, and empty states — is a design surface. A developer runs `ana proof` and sees their slugs smashing into the PASS column. They type `ana -help` and get an error instead of help. They visit the CLI reference page and two commands are missing. These are polish gaps, not bugs — the CLI works correctly, but it doesn't feel finished. "Every character earns its place" means the table columns align, the error messages guide, and the documentation is complete.

verdict PASSscore 22 / 22findings 11 (0 risk · 4 debt · 7 obs)duration 1h 59mrejection cycles 0shipped May 24, 2026

Pipeline timeline

Intent to proven code in 1h 59m across Think, Plan, and 2 Build→Verify phases.

Think
61m
Plan
8m
Build 1
17m
Verify 1
8m
Build 2
9m
Verify 2
12m

Assertion ledger

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

IDSaysMatcher
A001Long slugs in the proof list don't crash into adjacent columnsverifiedok
A002Every column in the proof list has at least a 2-character gapverifiedok
A003Long slugs in the audit matrix recent proofs don't crash into the result columnverifiedok
A004Long file paths in health hot spots don't crash into the findings columnverifiedok
A005The proof detail box has a gap before the right borderverifiedok
A006The health box has a gap before the right borderverifiedok
A007Running ana -help shows help text instead of an errorverifiedok
A008Running ana -help includes the program descriptionverifiedok

Findings 11 total

debtpackages/cli/tests/commands/proof.test.tsscope
A003 and A004 tests use conditional assertions — silently pass if section absent
debtpackages/cli/tests/commands/proof.test.tsscope
A005 assertion checks for any double space, not trailing gap before right border
debtpackages/cli/src/commands/proof.tsscope
Hot spots displayNames not truncated when exceeding maxWidth — padEnd passes through unchanged
obspackages/cli/tests/commands/proof.test.tsclosed
A014 asserts toContain('--') which could match any -- in output, not surface-column-specific
obspackages/cli/src/index.tsclosed
process.argv mutation for -help runs at module load time — side effect before Commander parses
+6more findings

Integrity seal

scopesha256:88d29c8810e46...
contractsha256:b2a545759d42c...
plansha256:9cca313af6bbc...
spec-1sha256:d8ddb70dcf768...
spec-2sha256:cf8c121644365...
build-report-1sha256:071c299e741e8...
build-data-1sha256:4ee05d25ccee1...
verify-report-1sha256:8351e86109846...
verify-data-1sha256:1d67c2a482d2c...
build-report-2sha256:e165f46428b12...
build-data-2sha256:52a25ac02fbfa...
verify-report-2sha256:35acfb89445e9...
verify-data-2sha256:ae8f3243849f1...
audit cmd$ ana proof audit cli-polish   → all hashes match