ana doctor — unified project health diagnostic
There is no single command that answers "is my Anatomia installation healthy?" The health data exists — scan freshness, context maturity, skill enrichment, proof chain trajectory, CLI version, stale work items — but it's scattered across `setup check`, `work status`, `proof health`, and `update-check.ts`. Nobody runs all four. A customer who just finished init has no way to know what's healthy, what's next, and what needs attention.
verdict PASSscore 37 / 37findings 6 (0 risk · 2 debt · 4 obs)duration 11h 4mrejection cycles 0shipped May 19, 2026
Pipeline timeline
Intent to proven code in 11h 4m across Think, Plan, Build, and Verify.
Think634m
Plan7m
Build8m
Verify6m
Assertion ledger
37 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Doctor prints a status line for each health dimension | verified | ok |
| A002 | Doctor shows scan freshness status | verified | ok |
| A003 | Doctor shows context quality status | verified | ok |
| A004 | Doctor shows skill enrichment status | verified | ok |
| A005 | Doctor shows proof chain status | verified | ok |
| A006 | JSON output includes the doctor command name | verified | ok |
| A007 | JSON output includes a timestamp | verified | ok |
| A008 | JSON output includes all five dimension objects | verified | ok |
Findings 6 total
obspackages/cli/tests/commands/doctor.test.ts→ closed
A001-A005 tests verify data model, not terminal output — contract targets output.lines
debtpackages/cli/tests/commands/doctor.test.ts→ closed
A022 test line 410 contains dead logic — 'still scaffold'.split(' ')[0] ternary always evaluates to truthy branch, duplicating line 408
debtpackages/cli/src/commands/doctor.ts→ scope
ana.json read twice — assessScanFreshness and assessContext both parse .ana/ana.json independently
obspackages/cli/tests/commands/doctor.test.ts→ monitor
No tests for guard clauses (A018/A019 no-ana guard, A025/A026 worktree guard) — these are in the command handler and require subprocess testing to reach
obspackages/cli/src/commands/doctor.ts→ monitor
formatFooter redCount only counts cli_version and scan_freshness — if fail status were ever added to context/skills/proof_chain, the count would be wrong
+1more findings
Integrity seal
scopesha256:b86e0d5d58e17...
contractsha256:17d5f48bc65d6...
plansha256:eff8afdd9363d...
specsha256:e8fe7ca34d674...
build-reportsha256:b7f3871a4951e...
build-datasha256:5c590bbd2ea8f...
verify-reportsha256:fba16a81dcf0a...
verify-datasha256:772d763ef5b4f...
audit cmd$ ana proof audit add-doctor-command → all hashes match