Proof-Context Intelligence — why this file exists and what moves with it
Turn `ana proof context {files}` from a "what's wrong here" lookup into the orientation surface an agent reads before touching code. It already returns `findings + build_concerns + touch_count + last_touched` (`proofSummary.ts:1147`). Add the two highest-value questions an agent has and can't answer anywhere else:
verdict PASSscore 34 / 34findings 16 (2 risk · 2 debt · 12 obs)duration 15h 7mrejection cycles 1shipped Jun 18, 2026surface cli
Pipeline timeline
Intent to proven code in 15h 7m across Think, Plan, and 3 Build→Verify phases.
Think62m
Plan15m
Build 122m
Verify 17m
Build 215m
Verify 222m
Build 3149m
Verify 37m
Assertion ledger
34 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Proof context tells you which verified work items shaped a file | verified | ok |
| A002 | Each shaping work item carries its slug, kind, date, and intent | verified | ok |
| A003 | The proof context output shows a 'Shaped by' section | verified | ok |
| A004 | When more than three work items shaped a file, a drill-down hint points to the cheap detail view | verified | ok |
| A005 | The --why view shows the work item's intent | verified | ok |
| A006 | The --why view hides provenance noise like cost and token accounting | verified | ok |
| A007 | The --why view hides timing breakdowns | verified | ok |
| A008 | A long work-item intent is truncated, not dumped whole, in Shaped by | verified | ok |
Findings 16 total
obs→ closed
Contract file_changes omits the repo-root dogfood agent copies (.claude/agents/*, .codex/agents/*) even though existing tests enforce byte-for-byte parity with templates; build correctly synced them but the contract under-specified the change surface
debtpackages/cli/tests/commands/proof.test.ts→ monitor
A006 (--why omits Provenance) has no positive-control guard asserting the full card DOES contain 'Provenance'; only A007's Timing has that guard, so A006 could silently pass if the Provenance label were renamed. Live-verified this round, but the test alone is weaker than A007's
obspackages/cli/src/commands/proof.ts→ monitor
--why flag is silently ignored when `ana proof` is invoked in list mode (no slug, no --last); harmless but the flag accepts input it does nothing with
obspackages/cli/src/utils/proofSummary.ts→ monitor
proofSummary.ts (+32) and proof.ts (+113) continue growth past the comfort threshold flagged by prior findings (decompose-proof-summary-C1, audit-matrix-orientation-C7); additive and well-contained here but the trajectory persists
riskpackages/cli/tests/commands/init/template-propagation.test.ts→ scope
Pre-existing flaky test: template-propagation 'Claude-only never touches .codex tree' times out at ~5025ms under full-suite concurrency (passes 100% in isolation). Reproduced on main (failed 1/4 runs at 5025ms with no Phase 2 changes), so NOT a regression. Phase 2 adds import-graph build to every `ana init`, which may marginally raise the flake rate. Root cause: a single test spawns the real CLI `init` twice under the default 5000ms timeout. Fix: raise the timeout on these CLI-spawning init tests.
+11more 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 | 63 | 28 | 14.0k | 65.7k | 3.4M | $4.32 |
| plan | 77 | 31 | 7.3k | 51.8k | 2.2M | $3.18 |
| build | 215 | 109 | 9.3k | 61.0k | 11.6M | $8.22 |
| verify | 79 | 35 | 7.6k | 23.5k | 1.9M | $2.12 |
| build 2 | 154 | 76 | 8.6k | 38.3k | 5.1M | $4.53 |
| verify 2 | 126 | 50 | 8.3k | 33.5k | 4.1M | $4.03 |
| build 3 | 233 | 112 | 9.8k | 99.4k | 15.1M | $11.19 |
| verify 3 | 89 | 39 | 8.1k | 46.1k | 3.4M | $3.57 |
| build 4 | 89 | 47 | 7.5k | 28.9k | 2.9M | $3.00 |
| verify 4 | 73 | 29 | 7.4k | 24.8k | 1.6M | $2.04 |
| TOTAL 10 sessions | $46.20 (table 2026-06-14) | |||||
churn 28 files · +2752/−37
completeness ✓ complete (plan 1/1 · build 4/4 · verify 4/4)
Session attestation
How each agent session behaved, coverage-aware. Evidence, not a gate — unverifiable is honest abstention, not a failure.
core v0.4.0 · framework anatomia
plan · 52 claims
1 satisfied · 0 violated · 51 unverifiable
coverage 1/52 checked · 51 unverifiable
⚠ ana-plan:skill:testing-standards unverifiable (absent-signal)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts unverifiable (channel-coverage-incomplete)
mandate sha256:88fecbfdd6… · transcript sha256:c4802eda92…
⚠ incomplete coverage
build · 52 claims
1 satisfied · 0 violated · 51 unverifiable
coverage 1/52 checked · 51 unverifiable
⚠ ana-build:verify-independence unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts unverifiable (channel-coverage-incomplete)
mandate sha256:98b13f10d2… · transcript sha256:9d3d098fb4…
⚠ incomplete coverage
verify · 55 claims
2 satisfied · 0 violated · 53 unverifiable
coverage 2/55 checked · 53 unverifiable
⚠ ana-verify:skill:testing-standards unverifiable (absent-signal)
⚠ ana-verify:skill:coding-standards unverifiable (absent-signal)
⚠ ana-verify:verify-independence unverifiable (channel-coverage-incomplete)
mandate sha256:ca964484ce… · transcript sha256:075b84e120…
⚠ incomplete coverage
build 2 · 52 claims
1 satisfied · 16 violated · 35 unverifiable
coverage 17/52 checked · 35 unverifiable
⚠ ana-build:verify-independence unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts violated (predicate-not-matched)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts violated (predicate-not-matched)
mandate sha256:98b13f10d2… · transcript sha256:61fa624f76…
⚠ incomplete coverage
verify 2 · 55 claims
2 satisfied · 0 violated · 53 unverifiable
coverage 2/55 checked · 53 unverifiable
⚠ ana-verify:verify-independence unverifiable (channel-coverage-incomplete)
⚠ ana-verify:no-code-branch-mutation:git-rebase unverifiable (command-unresolvable)
⚠ ana-verify:no-code-branch-mutation:git-push---force unverifiable (command-unresolvable)
mandate sha256:ca964484ce… · transcript sha256:73aa453558…
⚠ incomplete coverage
build 3 · 52 claims
1 satisfied · 0 violated · 51 unverifiable
coverage 1/52 checked · 51 unverifiable
⚠ ana-build:verify-independence unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts unverifiable (channel-coverage-incomplete)
mandate sha256:98b13f10d2… · transcript sha256:f659d2acf2…
⚠ incomplete coverage
verify 3 · 55 claims
4 satisfied · 0 violated · 51 unverifiable
coverage 4/55 checked · 51 unverifiable
⚠ ana-verify:verify-independence unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts unverifiable (channel-coverage-incomplete)
mandate sha256:d57fe0ffd4… · transcript sha256:04a0ba2d46…
⚠ incomplete coverage
build 4 · 52 claims
1 satisfied · 1 violated · 50 unverifiable
coverage 2/52 checked · 50 unverifiable
⚠ ana-build:verify-independence violated (predicate-not-matched)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts unverifiable (channel-coverage-incomplete)
mandate sha256:98b13f10d2… · transcript sha256:e942fc0059…
⚠ incomplete coverage
verify 4 · 55 claims
4 satisfied · 0 violated · 51 unverifiable
coverage 4/55 checked · 51 unverifiable
⚠ ana-verify:verify-independence unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/utils/proofSummary.ts unverifiable (channel-coverage-incomplete)
⚠ contract:file-scope:packages/cli/src/commands/proof.ts unverifiable (channel-coverage-incomplete)
mandate sha256:d57fe0ffd4… · transcript sha256:30f3b41260…
⚠ incomplete coverage
verdict veto: not applied — verify did not read build_report.md
veto is forward-only; pre-veto verdicts were self-reported.
Integrity seal
scopesha256:03f90448dabe9...
contractsha256:10c99c610fde3...
plansha256:17b7177515d71...
spec-1sha256:dc3bb9e82878c...
spec-2sha256:525d4090e176d...
spec-3sha256:4f4c9f06e8321...
build-report-1sha256:d7e9c1c781c15...
build-data-1sha256:c16c2fcb1385e...
verify-report-1sha256:fc21b7acd7676...
verify-data-1sha256:41c36185d1d12...
build-report-2sha256:ddc4f4185482c...
build-data-2sha256:39b757765b6da...
verify-report-2sha256:a7b3e1062aa28...
verify-data-2sha256:3f5f4baaf1ec2...
build-report-3sha256:6711982afa403...
build-data-3sha256:2520c7d4672fd...
verify-report-3sha256:a469a98d46d86...
verify-data-3sha256:21f79e3c7ac70...
audit cmd$ ana proof audit proof-context-intelligence → all hashes match