Commit d307b6c
## Summary
- Module docstring on `src/abi/Boj/SafetyLemmas.idr` claimed "Three
axiomatic `believe_me` primitives" while five live in the file.
Corrected to enumerate all five and tag each to its underlying `prim__*`
primitive.
- `appendLengthSum` and `substrLengthBound` declarations used `(x y :
T)` multi-binder syntax which **Idris2 0.8.0 rejects** at parse time
("Expected a type declaration" at the colon). Adding the comma — `(x, y
: T)` — restores parsability. Types and proof terms are unchanged.
- New `== Formal verification` section in `README.adoc` summarising
posture so external readers don't have to dig through `PROOF-NEEDS.md`:
all P1/P2 obligations closed; the 5 remaining axioms are *principled
assumptions over Idris2 primitives*, not unproven debt.
## Why this is a docs PR, not a discharge campaign
The 2026-05-18 audit in `PROOF-NEEDS.md` already classified every
remaining `believe_me` as class (J) — *genuinely unavoidable* in Idris2
0.8.0 because `Char` / `String` are opaque primitives with no
in-language induction principle. The reduction path is external
backend-assurance (Chez/BEAM extraction), not constructive proof. Item
11 was therefore already done as research — just not surfaced honestly.
This PR closes the documentation gap.
`d2622566 proof(abi): reduce believe_me from 31 to 4` is where the "4
axioms canonical" framing originated; `4f729e7e` and `0de09a47` later
added `appendLengthSum` and `substrLengthBound`. Honest current count:
5.
## Out of scope (deliberately)
- `src/abi/Boj/SafeAPIKey.idr` has **independent baseline rot**:
`plusLteMonotone` not found (likely stdlib rename — "did you mean
transitive?") + a constraint-solver failure on `logSafeBounded`.
Pre-existing, **not** introduced here. Worth a separate fix-up PR.
- `idris2 --build src/abi/boj.ipkg` does not complete in 9 min on my dev
box (gets SIGTERMed). Per-module `idris2 --check` is fast and was used
for verification.
- No CI workflow exercises the `src/abi/boj.ipkg` build today
(`.github/workflows/` only mentions idris2 in `abi-drift.yml` which uses
a different tool). Wiring an idris2 build into CI is a separate concern.
## Test plan
- [x] `idris2 --check src/abi/Boj/SafetyLemmas.idr` — green with my
changes; previously red on `origin/main` due to the multi-binder parse
error.
- [x] `idris2 --check src/abi/Boj/Safety.idr` — green (downstream
consumer of `charEqSound`).
- [ ] CI Hypatia neurosymbolic analysis + dogfood gate (will run on PR
open).
- [ ] Reviewer sanity-check on PROOF-NEEDS.md vs the new README posture.
## Related branches / overlap to resolve
`fix/proof-needs-reconcile-believe-me` exists on remote (single commit
`3d6b881c` dated 2026-05-18, title says "reconcile believe_me audit — 5
justified axioms, not zero/4") but its diff does **not** touch
`PROOF-NEEDS.md`, `SafetyLemmas.idr`, or `README.adoc` — looks
abandoned. Worth a quick owner confirmation that this PR isn't
displacing intentional work.
Refs epic #87 Tier C item 11. Item 12 (cross-cartridge composition
proof) is a separate draft PR (ADR-0014 RFC).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 746c352 commit d307b6c
2 files changed
Lines changed: 36 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
110 | 131 | | |
111 | 132 | | |
112 | 133 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
13 | 15 | | |
14 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
15 | 23 | | |
16 | 24 | | |
17 | 25 | | |
| |||
215 | 223 | | |
216 | 224 | | |
217 | 225 | | |
218 | | - | |
| 226 | + | |
219 | 227 | | |
220 | 228 | | |
221 | 229 | | |
222 | 230 | | |
223 | 231 | | |
224 | 232 | | |
225 | | - | |
| 233 | + | |
226 | 234 | | |
0 commit comments