You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Slice 2: make chapeliser provably-real — CI machine-checks proofs/FFI/Chapel + honest status (#27)
Follow-on to base camp (#26, merged). Goal of this slice: move
chapeliser from
"asserted in prose" to **machine-verified**, and make the docs honest
about what
is and isn't checked today.
## Provable-real — `.github/workflows/provable.yml`
The Rust CLI/codegen is already green (63 tests via `rust-ci.yml`). This
adds a
new workflow that verifies everything *outside* Rust:
| Job | What it proves |
|---|---|
| `idris2-proofs` | `idris2 --check` type-checks `Types.idr`,
`Layout.idr`, `Foreign.idr` (the dependent-type ABI proofs) |
| `zig-ffi` | `zig build test` compiles + runs the Zig FFI reference
impl (Zig 0.14) |
| `codegen-drift` | regenerates the golden sample and `diff`s against
the committed tree (fails on drift) |
| `chapel-golden` | compiles **and runs** the generated Chapel via real
`chpl`, asserting 8/8 items conserved |
## Golden sample — `examples/golden/`
A minimal end-to-end fixture that closes the `STATE.a2ml` action
*"generate +
compile + run"*:
- `echo.toml` — deliberately `per-item`/`merge` so the generated Chapel
pulls in
**no** optional modules (no BlockDist/DynamicIters/AtomicObjects) →
small,
stable compile surface.
- `generated/` — committed codegen output (reviewable + drift-checked).
- `ffi_stub.c` — ~60-line C echo implementation of the 12 `c_*`
functions so the
Chapel can be linked and run without user code.
## Honest status — stop claiming what isn't checked yet
- **`ROADMAP.adoc`**: Phase 1 `(COMPLETE)` → `(IMPLEMENTED —
verification gated in CI)`; new **Phase 1b** tracks the four CI jobs
(each flips `[x]` only when green); dropped "compilable" from the bare
codegen bullet.
- **Test-count fix**: the old `15 tests (6 unit + 8 integration + 1
doc)` was wrong — actual is **63 (22 + 40 + 1)**.
- **`README.adoc`**: Idris2 *"Formal proofs that…"* → *"proof
obligations, machine-checked in CI"*; corrected source paths
(`src/interface/abi`, `src/interface/ffi`); honest pre-alpha Status
paragraph.
- **`STATE.a2ml`**: blockers / next-actions / maintenance now reflect
CI-gated verification (`last-result = warn` until `provable.yml` is
green).
## Why CI is the verifier (not local)
The idris2 / zig / chpl toolchains aren't installable in the dev sandbox
(`ziglang.org` and the GitHub releases API are network-blocked here;
building
idris2 from source is sandbox-restricted). So GitHub runners are the
verifier.
**Until `provable.yml` is green, these artifacts are "written", not
"verified"** —
and the docs now say exactly that. Kept as a **draft** for that reason:
driving
the four jobs to green is the acceptance gate, and a first run may
surface real
fixes (e.g. Idris2 `DecEq` totality, Chapel `Time`/reduce API specifics)
— that
iteration *is* the "make it real" work.
**Follow-up (not blocking):** pin action/image refs (`actions/checkout`,
`mlugg/setup-zig`, `chapel/chapel`, `idris2-pack`) to SHAs per estate
policy
once the tags are confirmed working.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01Mbq6yKF9RhFai6EQ7WqKhQ
---
_Generated by [Claude
Code](https://claude.ai/code/session_01Mbq6yKF9RhFai6EQ7WqKhQ)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
"Chapel compiler not installed on dev machine — generated code verified by structure, not compilation",
28
+
"Idris2/Zig/Chapel toolchains unavailable in the local dev sandbox — proofs, FFI, and generated Chapel are now machine-checked in CI (.github/workflows/provable.yml) rather than locally.",
29
+
"provable.yml has not yet had a green run — until it does, the Idris2 proofs, Zig FFI build, and golden Chapel compile/run are written but not confirmed (ROADMAP Phase 1b).",
29
30
]
30
31
31
32
[critical-next-actions]
32
33
actions = [
33
-
"End-to-end test: generate + compile + run with panic-attacker workload",
0 commit comments