Proof System Near-Term — Learn Infrastructure Foundation
Fix the infrastructure that makes Learn sessions slow, error-prone, and wasteful. Six changes that each address a verified problem from 3 Learn sessions. The proof commands have push error handling that confuses Learn, a pre-commit hook that wastes 30s per close on JSON files, severity counts that lie, duplicated search loops, an audit command without filters, and a template missing critical guidance.
verdict PASSscore 27 / 27findings 8 (1 risk · 2 debt · 5 obs)duration 1h 22mrejection cycles 0shipped May 5, 2026surface cli
Pipeline timeline
Intent to proven code in 1h 22m across Think, Plan, Build, and Verify.
Think18m
Plan12m
Build45m
Verify7m
Assertion ledger
27 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Push failure triggers a pull-then-retry before giving up | verified | ok |
| A002 | Commit failure clearly tells the user changes were not saved | verified | ok |
| A003 | Lesson command retries push the same way close does | verified | ok |
| A004 | Promote command retries push the same way close does | verified | ok |
| A005 | Strengthen command retries push the same way close does | verified | ok |
| A006 | Commits touching only proof chain files skip the full build check | verified | ok |
| A007 | Commits touching source code still run the full build check | verified | ok |
| A008 | Health severity counts exclude closed and promoted findings | verified | ok |
Findings 8 total
obspackages/cli/tests/commands/proof.test.ts→ closed
A001 test verifies retry success path, not the failure message — contract matcher/value ('Push failed after retry') never asserted
debtpackages/cli/tests/commands/proof.test.ts→ promoted
A018 uses toBeGreaterThan(0) — weak assertion; the fixture has exactly 1 unclassified finding, test should use toBe(1)
riskpackages/cli/src/commands/proof.ts→ closed
pullBeforeRead calls process.exit(1) on rebase conflict without running git rebase --abort first — leaves dirty rebase state
debtpackages/cli/src/commands/proof.ts→ closed
Audit severity filter uses reverse-index splice loop — O(n²) on large finding sets; Array.filter() would be clearer and faster
obs.husky/pre-commit→ closed
Pre-commit filter also skips for .claude/-only commits — broader than contract A006 specifies (only mentions .ana/). Pragmatic but unspecified.
+3more findings
Integrity seal
scopesha256:48cc19bdccc32...
contractsha256:94a2f43a41e4c...
plansha256:04359a4747725...
specsha256:41709e44d2a28...
build-reportsha256:20d1b8232c6cb...
build-datasha256:5fda30a79c825...
verify-reportsha256:e64dfcbc5e724...
verify-datasha256:3df6bca87b6bc...
audit cmd$ ana proof audit proof-system-near-term → all hashes match