Remove processCaptureStrict — provenance records-and-annotates, never blocks

`processCaptureStrict` is a config flag that, at `ana work complete`, blocks completion (`process.exit(1)`) when recorded process provenance is incomplete. It should not exist. Process provenance is **metadata** — who/where each pipeline stage ran. Metadata blocking a terminal pipeline action is overreach, and this particular guard has a defect:

verdict PASSscore 14 / 14findings 4 (0 risk · 1 debt · 3 obs)duration 2h 47mrejection cycles 0shipped Jun 9, 2026surface cli

Pipeline timeline

Intent to proven code in 2h 47m across Think, Plan, Build, and Verify.

Think
132m
Plan
9m
Build
13m
Verify
6m

Assertion ledger

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

IDSaysMatcher
A001Completing work with incomplete provenance still records a proof entry instead of blockingverifiedok
A002An incomplete provenance gap is recorded as not-complete, never hiddenverifiedok
A003The recorded gap names the missing pipeline stageverifiedok
A004Completing work with no recorded sessions still writes a proof entryverifiedok
A005Zero recorded sessions are marked incomplete, not completeverifiedok
A006With full provenance the proof entry is still writtenverifiedok
A007With full provenance the proof marks provenance completeverifiedok
A008Merging with incomplete provenance still records the proof entry — code never lands without an audit trailverifiedok

Findings 4 total

obspackages/cli/src/commands/work.tsclosed
Strict guard's inlined duplicate provenance reader is deleted — cross-machine-provenance-C7 resolved
obspackages/cli/tests/commands/doctor.test.tsmonitor
A014 verified via results.overall === 'pass' proxy, not the literal exit code the contract names (doctorExitCode equals 0)
debtpackages/cli/vitest.config.tsscope
Coverage gate — the spec's designated 'real gate' (vitest.config thresholds 80/75/80/80) — is not mechanically runnable; @vitest/coverage-v8 is not a declared dependency, so the threshold check silently no-ops wherever the provider is absent
obspackages/cli/tests/commands/work-merge.test.tsacknowledge
Keystone merge test re-declares seedProvenance/readChainEntry helpers that duplicate seedActiveProvenance/readChainEntry in work.test.ts; cross-file duplication is justified by the child_process mock isolation but worth noting

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
ana164568.0k119.7k9.7M$9.02
plan63296.3k29.5k1.2M$1.77
build180878.3k47.2k6.1M$5.13
verify74326.4k21.2k1.7M$1.80
TOTAL 4 sessions$17.73 (table 2026-06-14)
churn 12 files · +142/−230
completeness ✓ complete (plan 1/1 · build 1/1 · verify 1/1)

Integrity seal

scopesha256:a002719659c29...
contractsha256:a1b40f590177e...
plansha256:e319c96a114f4...
specsha256:776fcb70326c7...
build-reportsha256:3e7f99da97d6c...
build-datasha256:17ed6712ed486...
verify-reportsha256:d0f2af46a594e...
verify-datasha256:0de4f182ebbb7...
audit cmd$ ana proof audit remove-processcapturestrict   → all hashes match