Fix Proof Chain Mechanical Accuracy

The proof chain's mechanical maintenance layer shipped with 57% closure accuracy. 16 of 37 closures destroyed valid observations. Three bugs: path resolution closed 4 files that exist at different monorepo paths, staleness checks overwrote 3 upstream lessons, and supersession destroyed 9 independent observations using a heuristic too coarse to distinguish same-issue from different-issue-on-same-file. Additionally, 6 findings with bare basenames (no `/`) escape staleness entirely because the syntactic gate skips them — 4 of these reference genuinely deleted files (`projectKind.ts` renamed to `applicationShape.ts` months ago).

verdict PASSscore 20 / 20findings 6 (0 risk · 0 debt · 6 obs)duration 32mrejection cycles 0shipped Apr 28, 2026surface cli

Pipeline timeline

Intent to proven code in 32m across Think, Plan, Build, and Verify.

Think
6m
Plan
6m
Build
19m
Verify
7m

Assertion ledger

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

IDSaysMatcher
A001A finding referencing a file by partial monorepo path is not closed when the file exists elsewhere in the projectverifiedok
A002A partial monorepo path finding stays active after staleness checksverifiedok
A003A finding referencing a genuinely deleted file is closed by the mechanical layerverifiedok
A004Deleted file closures record the reason as file removedverifiedok
A005A finding with an ambiguous basename matching many files is not closedverifiedok
A006Upstream findings are never subject to staleness checksverifiedok
A007An upstream finding with a missing file stays as a lessonverifiedok
A008Older findings on the same file are not superseded by newer onesverifiedok

Findings 6 total

obspackages/cli/src/utils/proofSummary.tsclosed
Dead truthiness guard after parameter change: `packages/cli/src/utils/proofSummary.ts:346` — `else if (projectRoot)` was meaningful when `projectRoot` was optional; now it's always truthy since the parameter is required `string`. Remove the guard and outdent the glob fallback block.
obspackages/cli/src/commands/work.tsclosed
`delete` instead of explicit `undefined` in reopen loop: `packages/cli/src/commands/work.ts:887-889` — Spec says "Don't use `delete` — set explicitly so the JSON serialization is clean." Builder used `delete`. Functionally identical for `JSON.stringify` output (both omit the property), but deviates from spec guidance. Not a blocker — the behavior is correct.
obspackages/cli/src/commands/work.tsclosed
Dead ternary on finding status: `packages/cli/src/commands/work.ts:811` ��� `category === 'upstream' ? 'active' : 'active'` — both branches identical. Pre-existing issue, not introduced by this build. Still present — see proof chain finding from "Fix artifact save bypass, cwd bug, and work complete crash recovery."
obspackages/cli/tests/engine/detectors/readme.test.tsclosed
A018/A019/A020 tag collision with other contracts: The pre-check reports these as COVERED, but the matched tags belong to tests from other features (readme.test.ts, confirmation.test.ts, scanProject.test.ts, proof.test.ts). No NEW tagged tests were written for this contract's template assertions. The existing `agent-proof-context.test.ts:66-75` (`@ana A008`) does verify template-dogfood sync byte-for-byte, and the template content was verified directly. Functional coverage exists; formal tag coverage for this contract does not.
obspackages/cli/tests/commands/work.test.tsclosed
A011 assertion checks one value not cleared state: `packages/cli/tests/commands/work.test.ts:1447` — asserts `closed_reason` is not `'superseded by new-C1'` but doesn't assert `closed_at` or `closed_by` are also cleared. The test proves the specific contract assertion (matcher: `not_equals`, value: `'superseded by new-C1'`) but a stronger test would verify all three closure fields are absent.
+1more findings

Integrity seal

scopesha256:422e3e9b53292...
contractsha256:088cc1091362c...
plansha256:39ea5bb04fcf9...
specsha256:264a837100c10...
build-reportsha256:e387f173c6c8d...
verify-reportsha256:42693378ada66...
audit cmd$ ana proof audit fix-proof-chain-mechanical-accuracy   → all hashes match