Commit 9969ff0
ci(proofs): gate the Idris2 verification corpus (verification/proofs/idris2) (#276)
## What
Adds CI coverage for the **Idris2 trust-pipeline property proofs** under
`verification/proofs/idris2/` (11 modules) — the last self-proof corpus
with no gate.
Follows #275 (which gated `verification/proofs/lean4`).
- **New `echidna-verif-proofs.ipkg`** listing all 11 modules with
`depends = base, echidnaabi`.
- **New Justfile recipe `proofs-verif-idris`**: installs the
`echidnaabi` package (`--install`
builds it on the way), then `idris2 --typecheck
echidna-verif-proofs.ipkg`. Added to the
`proofs` roll-up.
- **New `verif-idris` job** in `dogfood-proofs-ci.yml` (apt idris2 +
source-bootstrap fallback,
mirroring `idris2-abi-ci.yml`) + `verification/proofs/idris2/**` path
triggers.
## Why an ipkg, not a per-file `idris2 --check` loop
Two real problems surfaced while building this (caught by *running* it,
not eyeballing):
1. **`idris2 --check` returns exit 0 even when a module fails to resolve
an import.**
Verified: a bare `idris2 --check DispatchCorrectness.idr` prints
`Error: Module EchidnaABI.Types not found` but **exits 0** — a per-file
loop would pass CI
while broken. (Genuine *type* errors do exit 1; only module-resolution
errors don't.)
2. **`DispatchCorrectness.idr` imports `EchidnaABI.Types`** — the
`echidnaabi` package in
`src/abi/`, unresolvable standalone.
Building through the ipkg fixes both: `depends = echidnaabi` resolves
the import, and the
package build gives a reliable aggregate exit code. The recipe
additionally fails on any
`^Error` line as a belt-and-suspenders guard.
## Verification (run, not eyeballed)
On **idris2 0.8.0**, from a clean state (`src/abi/build`, the installed
`echidnaabi` package,
and `verification/proofs/idris2/build` all removed first):
- `just proofs-verif-idris` → type-checks all 11 modules (incl.
DispatchCorrectness), **exit 0**.
- **Negative test**: injecting `n = S n` proved by `Refl` into a module
makes the ipkg
typecheck **exit 1** — the gate actually gates.
- Corpus is **axiom-clean**: no `believe_me` / `assert_total` /
`postulate` (the two grep hits
are string literals in a `patternString` data table, not real escapes);
fully total.
## Notes
- No proof sources changed — packaging + CI wiring only.
- The `verif-idris` job mirrors `idris2-abi-ci`'s install (apt-first,
source-fallback) and uses
`timeout-minutes: 30` to cover the source-bootstrap fallback.
- Remaining in the proof-CI sweep: a **weekly cron** for the heavier
Isabelle/Mizar corpora
(next).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
_Generated by [Claude
Code](https://claude.ai/code/session_01UAqDQaMwpUqWHUSZekGZWv)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 969b73e commit 9969ff0
3 files changed
Lines changed: 92 additions & 1 deletion
File tree
- .github/workflows
- verification/proofs/idris2
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
167 | 169 | | |
168 | 170 | | |
169 | 171 | | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
170 | 210 | | |
171 | 211 | | |
172 | 212 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | | - | |
| 253 | + | |
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
| |||
292 | 292 | | |
293 | 293 | | |
294 | 294 | | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
295 | 314 | | |
296 | 315 | | |
297 | 316 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
0 commit comments