Commit f6ed4fe
ci(abi): typecheck the Idris2 ABI in CI (G34) (#52)
<!-- SPDX-License-Identifier: CC-BY-SA-4.0 -->
## Summary
Closes the **G34** hole: the ABI-FFI gate ran a Julia *structural*
conformance check and a Zig FFI build, but **nothing ever ran `idris2`
on the ABI itself**. The 8 proof modules (`Types`, `Layout`, `Foreign`,
`Proofs`, `Semantics`, `Invariants`, `FfiSeam`, `Capstone` — landed
across PRs #38/#42/#43/#44/#45) were authored and locally verified
against Idris2 0.7.0 but never compiler-checked in CI. A future edit
could break a proof and the gate would stay green.
## Changes
- **`.github/workflows/abi-ffi-gate.yml`**: new `idris2-abi` job running
`idris2 --typecheck julianiser-abi.ipkg` in the SHA-pinned
`ghcr.io/stefan-hoeck/idris2-pack` container (the same prebuilt image
the `Axiom.jl` `idris2-abi-check` job uses — avoids a ~10-min
Chez/Idris2 source build). Header comment updated to describe all three
jobs.
- **`.tool-versions`**: uncomment `idris2 0.7.0` (pins the version the
proofs were verified against, for local `asdf` use). Nothing
auto-installs from it, so this is documentation-only.
## RSR Quality Checklist
### Required
- [x] Tests pass — `idris2 --typecheck julianiser-abi.ipkg` and `idris2
--build julianiser-abi.ipkg` both exit 0 on all 8 modules (verified
locally, Idris2 0.7.0)
- [x] No banned language patterns (YAML workflow + `.tool-versions`
only)
- [x] No banned functions (`believe_me`/`postulate`/`sorry`) — the ABI
modules are unchanged by this PR; the new job *enforces* their absence
going forward
- [x] SPDX headers intact (workflow retains its `MPL-2.0` header; no
source files added)
- [x] No secrets, credentials, or `.env` files included
### As Applicable
- [x] ABI/FFI changes validated — CI now typechecks `src/interface/abi/`
on every push/PR; the existing structural + Zig jobs are untouched
## Testing
Ground-truthed with Idris2 0.7.0:
- `cd src/interface/abi && idris2 --typecheck julianiser-abi.ipkg` →
exit 0
- `idris2 --build julianiser-abi.ipkg` → exit 0
- YAML parses; job list = `conformance`, `zig-build`, `idris2-abi`;
`working-directory` path `src/interface/abi/julianiser-abi.ipkg` exists.
The pinned container image is the identical digest already green in
`Axiom.jl`'s equivalent `idris2-abi-check` job.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1
---
_Generated by [Claude
Code](https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 645ee59 commit f6ed4fe
2 files changed
Lines changed: 23 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
8 | 11 | | |
9 | 12 | | |
10 | 13 | | |
| |||
43 | 46 | | |
44 | 47 | | |
45 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
0 commit comments