Remove lesson status from proof system

The lesson status occupies a semantic niche already filled by close-with-reason. Post-availability adoption data shows 128 findings closed with "accept/intentional" reasons vs. 6 using the lesson command — the workflow voted with its feet. The Learn agent's triage phases produce close, keep, or promote — lesson isn't part of the loop. No agent reads lessons, no command surfaces them, and Ana's own instruction to "surface relevant lessons" via `proof context` is broken because `getProofContext` filters lessons out. Meanwhile, 116 upstream auto-lessons (pipeline forensics about contract quality and tag collisions) dilute the concept so thoroughly that a lesson query would return 95% noise. The status adds a fourth value every consumer must handle while contributing no retrievable information.

verdict PASSscore 28 / 28findings 3 (0 risk · 1 debt · 2 obs)duration 14h 31mrejection cycles 0shipped May 15, 2026

Pipeline timeline

Intent to proven code in 14h 31m across Think, Plan, Build, and Verify.

Think
2m
Plan
692m
Build
11m
Verify
6m

Assertion ledger

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

IDSaysMatcher
A001The finding status type only allows active, promoted, or closedverifiedok
A002Chain health stats no longer track lessons as a separate countverifiedok
A003New upstream findings are automatically closed instead of lessonedverifiedok
A004New upstream findings record why they were closedverifiedok
A005New upstream findings record they were closed mechanicallyverifiedok
A006New upstream findings record when they were closedverifiedok
A007Old lesson findings in the proof chain are migrated to closed during work completeverifiedok
A008Migrated lessons without existing metadata get default close fieldsverifiedok

Findings 3 total

debtpackages/cli/src/commands/work.tsclosed
Backfill migration logic has no dedicated test — mutation from lesson→closed with conditional metadata preservation is untested
obspackages/cli/src/utils/proofSummary.tsclosed
Stale comment references 'lesson' in getProofContext filter description
obspackages/cli/src/utils/proofSummary.tsclosed
proofSummary.ts ~1550 lines — still past comfort threshold, this build adds 2 lines net

Integrity seal

scopesha256:625ab5ed737a4...
contractsha256:1b945b9b60ad4...
plansha256:2104ba73ac523...
specsha256:1b5cc6b303dd3...
build-reportsha256:588c25b5613e3...
build-datasha256:16110f8f90565...
verify-reportsha256:871980268fe74...
verify-datasha256:b9629b6e2cabe...
audit cmd$ ana proof audit remove-lesson-status   → all hashes match