Verifier Verdict Honesty (light) — the PASS/FAIL verdict stops grading itself
Make Anatomia's PASS/FAIL verdict mean what the product says it means. Today the headline verdict is regex-scraped from a prose `**Result:**` line the verify *model* typed — so the brand claim ("trust the bytes, not the model") is, at the verdict itself, still trust-the-model. The whole product is positioned on "Verify never grades its own homework"; the verdict is the one place that promise is currently only *hoped*.
verdict PASSscore 29 / 29findings 9 (0 risk · 4 debt · 5 obs)duration 3h 8mrejection cycles 0shipped Jun 17, 2026surface cli
Pipeline timeline
Intent to proven code in 3h 8m across Think, Plan, and 2 Build→Verify phases.
Think22m
Plan26m
Build 179m
Verify 18m
Build 228m
Verify 27m
Assertion ledger
29 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | The verifier's instructions no longer tell it to read the build report | verified | ok |
| A002 | The Codex verifier's instructions also no longer tell it to read the build report | verified | ok |
| A003 | The verifier is still told it must never read the build report | verified | ok |
| A004 | The verifier can still check untested work by inspecting the source | verified | ok |
| A005 | The shipped and in-repo copies of the verifier definition stay identical | verified | ok |
| A006 | A clean PASS verdict stays PASS | verified | ok |
| A007 | A PASS that contradicts the verifier's own unsatisfied row is overridden to FAIL | verified | ok |
| A008 | The override explains which unsatisfied row contradicted the PASS | verified | ok |
Findings 9 total
debtpackages/cli/src/utils/verdict.ts→ monitor
Circular import between verdict.ts and proofSummary.ts — verdict.ts imports parseComplianceTable, proofSummary.ts imports deriveVerdict
debtpackages/cli/tests/templates/agent-proof-context.test.ts→ monitor
@ana tags A001-A005 are duplicated within agent-proof-context.test.ts (prior merged contract + this contract) — tag-by-id resolution is ambiguous in this file
obspackages/cli/src/utils/proofSummary.ts→ monitor
deriveVerdict coerces only on an exactly-spelled 'UNSATISFIED' status; a typo'd/garbled status cell falls back to 'UNKNOWN' (proofSummary.ts:205) and will NOT gate a PASS — consistent with the self-authored honesty boundary but fragile
obspackages/cli/src/utils/verdict.ts→ acknowledge
deriveVerdict never coerces a PASS on DEVIATED or UNCOVERED rows — only UNSATISFIED. By design (coverage gating is the separate verifier-intent-coverage feature), but the contradiction signal is intentionally narrow
obspackages/cli/src/utils/git-operations.ts→ monitor
Pre-existing lint warning (unused eslint-disable directive) in git-operations.ts:198 — not in this build's file_changes, not a regression
+4more findings
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 | 62 | 31 | 7.6k | 33.7k | 1.5M | $2.15 |
| plan | 115 | 49 | 8.1k | 61.7k | 4.6M | $4.63 |
| build | 212 | 103 | 9.5k | 64.6k | 10.4M | $7.65 |
| verify | 67 | 30 | 7.5k | 27.8k | 1.5M | $2.00 |
| build 2 | 238 | 115 | 9.2k | 77.9k | 14.9M | $10.52 |
| verify 2 | 79 | 35 | 7.6k | 26.2k | 2.1M | $2.33 |
| TOTAL 6 sessions | $29.28 (table 2026-06-14) | |||||
churn 21 files · +1202/−78
completeness ✓ complete (plan 1/1 · build 2/2 · verify 2/2)
Integrity seal
scopesha256:346767c2f1746...
contractsha256:4ccdd83ffe148...
plansha256:4b3d017081a60...
spec-1sha256:c42d85bbd819f...
spec-2sha256:b769eb778aba5...
build-report-1sha256:f683c4083ee32...
build-data-1sha256:8ec74f34fbdd8...
verify-report-1sha256:4e30d37b6e81f...
verify-data-1sha256:32087fac8edf2...
build-report-2sha256:86628b364a0c1...
build-data-2sha256:a7cd69892d59c...
verify-report-2sha256:6fe13817f1507...
verify-data-2sha256:2d234f22b231f...
audit cmd$ ana proof audit verifier-verdict-honesty → all hashes match