Upstream Finding Resolution
When Verify runs `ana proof context` and sees active findings for files it's reviewing, it can note that a finding has been resolved by the current build. These observations enter the proof chain as upstream findings with `status: 'lesson'`. But the original finding stays active because nothing connects the upstream claim to the original. Learn must manually read the upstream finding's prose, identify which original it references, verify the claim, and close it with `ana proof close`.
verdict PASSscore 22 / 22findings 5 (0 risk · 2 debt · 3 obs)duration 1h 15mrejection cycles 0shipped May 15, 2026surface cli
Pipeline timeline
Intent to proven code in 1h 15m across Think, Plan, Build, and Verify.
Think17m
Plan10m
Build22m
Verify4m
Assertion ledger
22 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Proof context output includes the finding ID for each finding | verified | ok |
| A002 | Finding ID appears between category tag and anchor text | verified | ok |
| A003 | Upstream findings with valid resolves arrays pass validation | verified | ok |
| A004 | Findings without resolves still pass validation | verified | ok |
| A005 | Non-array resolves values are rejected | verified | ok |
| A006 | Non-string elements in resolves are rejected | verified | ok |
| A007 | Invalid finding ID format in resolves produces a warning | verified | ok |
| A008 | Resolves on non-upstream findings produces a warning about category mismatch | verified | ok |
Findings 5 total
debtpackages/cli/src/commands/work.ts→ closed
work.ts duplicates resolves counting logic — JSON and console branches have identical loops
obspackages/cli/src/commands/artifact.ts→ closed
artifact.ts resolves format warning iterates resolves array twice — once for type check, once for format check
obspackages/cli/tests/utils/proofSummary.test.ts→ closed
A014 test uses toBeDefined() before toBe() — the toBeDefined assertion is redundant
obspackages/cli/src/utils/proofSummary.ts→ closed
computeResolutionClaims findingIndex overwrites entries when same finding ID appears in multiple chain entries — last write wins, which could mask status transitions
debt→ closed
proofSummary.ts continues to grow — now ~1620 lines with computeResolutionClaims addition
Integrity seal
scopesha256:2be18bf1d3b64...
contractsha256:2722c76c7160b...
plansha256:06c1ed4fce917...
specsha256:156b4281c14db...
build-reportsha256:d1f768e2e77c8...
build-datasha256:2c7f1c44b48ab...
verify-reportsha256:cb1cec784a2e3...
verify-datasha256:61bac8152e352...
audit cmd$ ana proof audit upstream-finding-resolution → all hashes match