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.

Think
44m
Plan
84m
Build
36m
Verify
6m

Assertion ledger

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

IDSaysMatcher
A045The behavioral engine is installed at version 0.4.0verifiedok
A046The project pins the engine to exactly 0.4.0verifiedok
A047A reason the 0.4.0 engine produces is recognized as knownverifiedok
A048A reason the engine does not produce is flagged as unknownverifiedok
A049An unrecognized reason is kept exactly as the engine reported it, never droppedverifiedok
A050When the engine version cannot be resolved, no attestation is writtenverifiedok
A051An unresolvable engine version leaves no compliance record on diskverifiedok
A052A written attestation always carries a real, non-empty engine versionverifiedok

Findings 6 total

obsclosed
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.tsclosed
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.tsmonitor
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.tsacknowledge
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.
obsmonitor
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
sessionturnstoolsinoutcachecost
ana50227.3k27.6k1.2M$1.63
plan99447.8k56.1k4.1M$4.25
build186838.6k73.7k9.4M$7.51
verify77347.6k25.6k2.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