Bump anatrace-core 0.2.0 → 0.4.0 (pin, fail-closed emit, reason lock, real-engine CI)
Anatomia's behavioral-attestation layer is fully wired but has emitted **zero** records, because the engine it consumes (`anatrace-core`) is pinned to a version that is both **uninstalled** and **known-false-PASS** (0.2.0). The product's headline differentiator is therefore undemonstrated, and emitting on 0.2.0/0.3.0 would attest *behind a forgeable engine*.
verdict PASSscore 11 / 11findings 6 (0 risk · 2 debt · 4 obs)duration 2h 43mrejection cycles 0shipped Jun 16, 2026surface cli
Pipeline timeline
Intent to proven code in 2h 43m across Think, Plan, Build, and Verify.
Think44m
Plan84m
Build36m
Verify6m
Assertion ledger
11 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A045 | The behavioral engine is installed at version 0.4.0 | verified | ok |
| A046 | The project pins the engine to exactly 0.4.0 | verified | ok |
| A047 | A reason the 0.4.0 engine produces is recognized as known | verified | ok |
| A048 | A reason the engine does not produce is flagged as unknown | verified | ok |
| A049 | An unrecognized reason is kept exactly as the engine reported it, never dropped | verified | ok |
| A050 | When the engine version cannot be resolved, no attestation is written | verified | ok |
| A051 | An unresolvable engine version leaves no compliance record on disk | verified | ok |
| A052 | A written attestation always carries a real, non-empty engine version | verified | ok |
Findings 6 total
obs→ closed
Contract file_changes under-scoped the bump ripple — 0.4.0 ships a new PRICE_TABLE_VERSION (2026-06-08 → 2026-06-14) that forced edits to 5 test files the contract never listed (_capture, pricing, forensics, forensics-derive, proof-card-golden + snapshot).
debtpackages/cli/tests/utils/compliance.test.ts→ closed
Spec A055 guidance was factually wrong about where the no-force-push obligation lives — it said use the build mandate (ana-build.md), but the forbidden-command predicate is the engine's built-in VERIFY_FORBIDDEN_COMMANDS for the VERIFY role. Builder correctly adapted to the verify role; following the spec literally would have produced a fixture that never flips to violated.
debtpackages/cli/src/utils/compliance.ts→ monitor
projectVerdicts default param `coreVersion: string = readCoreVersion()` re-invokes the resolver. The sole production caller passes coreVersion explicitly so it never fires today, but a future caller relying on the default would bypass the fail-closed gate and interpolate an empty `anatrace-core@` into the drift warning.
obspackages/cli/tests/utils/compliance.test.ts→ acknowledge
Real-engine happy-path tests (A052/A053/A054) judge a trivial 'doing work' transcript. A053 guards with verdicts.length > 0 before asserting zero out-of-set reasons, so it cannot pass vacuously — a good defensive assertion worth preserving if the fixture is ever simplified further.
obs→ monitor
Observable (non-gating): no compliance record with anatrace_core_version == 0.4.0 is on disk yet for this cycle — it emits at `ana artifact save`, not at test time. Expected to land when the verify report is saved. Absence is a ~5-min follow-on per spec, never a held PR.
+1more 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 | 50 | 22 | 7.3k | 27.6k | 1.2M | $1.63 |
| plan | 99 | 44 | 7.8k | 56.1k | 4.1M | $4.25 |
| build | 186 | 83 | 8.6k | 73.7k | 9.4M | $7.51 |
| verify | 77 | 34 | 7.6k | 25.6k | 2.2M | $2.34 |
| TOTAL 4 sessions | $15.72 (table 2026-06-14) | |||||
churn 11 files · +295/−33
completeness ✓ complete (plan 1/1 · build 1/1 · verify 1/1)
Integrity seal
scopesha256:71bf57a97cd2d...
contractsha256:e6c21fdab1c75...
plansha256:2978d81ce1e51...
specsha256:4bb5374a1212e...
build-reportsha256:bd25233cb4f98...
build-datasha256:ec8418d83d740...
verify-reportsha256:a7141d1a9a89e...
verify-datasha256:65aaa88022cfc...
audit cmd$ ana proof audit anatrace-pin-0-4-0 → all hashes match