- 1. Where the criteria come from
- 2. Criterion 1 — Wave-1 (Tier-1, every PR)
- 3. Criterion 2 — Wave-2 (Tier-2, nightly)
- 4. Criterion 3 — Wave-3 (Tier-3, weekly)
- 5. Criterion 4 — Wave-4 (Tier-4, quarterly)
- 6. Criterion 5 — Tier-1 green on main for ≥7 days
- 7. Criterion 6 — Operational pre-requisites
- 8. Summary
- 9. Cross-references
Closes audit item D18 from the 2026-06-03 "what stops echidna from running proof work across the estate" punch list.
Status as of 2026-06-03: gate NOT satisfied. L1 (Cap’n Proto) and L2 (Chapel full integration) are blocked until every box below is ticked. This document enumerates exactly what remains.
docs/handover/L3-LIVE-PROVER-CI-PROMPT.md "Hand to L1 when":
-
All four waves land or are explicitly deferred with rationale in
STATE.a2ml. -
Tier-1 has run green on main for ≥7 days.
docs/handover/TODO.md adds two operational pre-requisites (P0, P1).
These five criteria are unpacked below.
Wave-1 is the every-PR Tier-1 matrix (9 backends): coq, agda, lean4, isabelle, z3, cvc5, eprover, alt-ergo, why3.
| Sub-criterion | Status | Notes |
|---|---|---|
Wave-1 manifest exists |
✅ DONE |
|
Wave-1 binaries reachable on CI |
✅ DONE |
9 backends present; verified locally 2026-04-19 (18/18 tests pass). |
Wave-1 green on main for ≥7 days |
⚠ UNKNOWN |
|
To close: run the gh query, confirm ≥7 consecutive successful
nightly invocations on main, and amend STATE.a2ml to record the
window.
Wave-2 is the nightly Tier-2 matrix (10 backends): idris2, isabelle, dafny, fstar, tlaps, vampire, gnatprove, glpk, spass, minizinc. (HOL Light deferred to Wave-3.)
| Sub-criterion | Status | Notes |
|---|---|---|
Wave-2 installers landed (local) |
✅ DONE |
Real provisioning commands shipped 2026-04-19 (9a4aeeb + 6717b12). 18/18 local tests pass; 13 real-version returns; 5 auto-skipped. |
Wave-2 installers green in CI |
⚠ UNVERIFIED |
TODO.md P0 row: "Wave-2 installers (idris2 / isabelle / dafny /
fstar / tlaps) are local-pass but CI-unverified." Likely failure
modes documented: Isabelle 500 MB download timeout, tlapm release
URL drift, |
HOL Light explicitly deferred to Wave-3 |
✅ DONE |
Deferred + rationale (no prebuilt binary, opam build ~20 min |
To close: wait for the next 0 3 * * * UTC nightly to fire and
fix any red matrix cells in-place. Then run the 7-day green window
check (Criterion 1, sub-row 3) against the Tier-2 matrix.
Wave-3 is the weekly Tier-3 container matrix (9 backends): tamarin, proverif, imandra, scip, or-tools, hol4, acl2, twelf, metamath.
| Sub-criterion | Status | Notes |
|---|---|---|
Wave-3 containers landed |
✅ DONE |
PR #73 (2026-05-18) consolidated |
All non-proprietary backends runtime-smoke-verified REAL |
✅ DONE |
8/8 confirmed by exercising the binary in the built image (not by trusting the build log). Five silent-stub failures fixed at-source during verification: scip dead-download, tamarin dead-download, metamath missing libc6-dev, or-tools missing build-number, twelf/acl2 baked build paths, proverif opam-solve. |
Imandra documented as honest licence-gated stub |
✅ DONE |
Real Rust adapter + Idris2 ABI proofs retained; |
Container CI workflow green |
⚠ UNVERIFIED |
|
PR #74 (proverif opam) resolved |
✅ DONE |
Closed by the 2026-05-18 source-tarball pivot. |
To close: verify container-ci.yml weekly Tier-3 runs are not
silently red-but-allow-fail; record green-run count in STATE.a2ml.
Wave-4 is the quarterly allow-fail Tier-4 list (19 backends): Mizar, Nuprl, PVS, Minlog, Dedukti, Arend, KeY, Prism, UPPAAL, ViPER, NuSMV, Spin, TLC, CBMC, Seahorn, dReal, Boogie, Kissat, Alloy.
| Sub-criterion | Status | Notes |
|---|---|---|
Per-backend mock-only rationale in STATE.a2ml |
✅ DONE |
|
Scaffold placeholder in |
✅ DONE |
Tier-4 placeholder job announces the list. |
At least one Wave-4 quarterly run executed |
⚠ UNVERIFIED |
No evidence in STATE.a2ml that the placeholder has ever fired. Possibly cron-pinned but never visited. |
To close: check that the quarterly cron has fired at least once since scaffolding, OR explicitly defer Wave-4 with a STATE.a2ml note "Wave-4 is scaffold-only and acceptable in the L3 hand-off — to be revisited when a maintainer contributes a Containerfile".
Both readings satisfy the L3 prompt’s phrasing ("…all four waves land or are explicitly deferred with rationale in STATE.a2ml"). The choice is the owner’s.
Same as Criterion 1, sub-row 3 — broken out here because the L3 prompt states it as a top-level acceptance criterion.
| Sub-criterion | Status | Notes |
|---|---|---|
Run data accessible from a host with |
❌ TODO |
|
Tier-1 nightly green count ≥7 over last 7 days on main |
❌ TODO |
Requires the above. Suggested query: + [source,shell] ---- gh run list \ --workflow live-provers.yml \ --branch main \ --status success \ --limit 14 \ --json conclusion,startedAt ---- |
Record green window in STATE.a2ml |
❌ TODO |
Single key, e.g. |
From docs/handover/TODO.md:
| Sub-criterion | Status | Notes |
|---|---|---|
|
❌ TODO |
Stated as L3 acceptance in the prompt. Has not been run end-to-end on a fresh dev host (Guix-extend was rejected; sealed container is the fallback for the not-in-Guix tail). |
Dafny stub-shape upgrade (165 LoC → deep) |
⚠ UNKNOWN |
Stated as L3 acceptance in the prompt. No commit found that closes
this; needs an audit pass against |
VeriSimDB integration emits live-run records |
⚠ PARTIAL |
Per |
| Criterion | Description | Status |
|---|---|---|
1 |
Wave-1 (every-PR Tier-1) green ≥7 days |
⚠ UNKNOWN (data not collected) |
2 |
Wave-2 (nightly Tier-2) green ≥1 cycle |
⚠ UNVERIFIED |
3 |
Wave-3 (weekly Tier-3) green ≥1 cycle |
⚠ UNVERIFIED |
4 |
Wave-4 (quarterly Tier-4) executed or explicitly deferred |
⚠ owner choice |
5 |
Tier-1 green ≥7 days on main (data) |
❌ TODO |
6a |
|
❌ TODO |
6b |
Dafny stub upgrade |
⚠ UNKNOWN |
6c |
VeriSimDB live-record emission |
⚠ PARTIAL (gated on verisimdb#ghcr) |
Minimum sufficient path to close the gate:
-
Run the
gh run listquery for the last 14 nightlies oflive-provers.ymlon main; record the green window inSTATE.a2ml. (Closes Criteria 1, 2, 5.) -
Same query against
container-ci.ymlfor Tier-3 weekly. (Closes Criterion 3 sub-row 4.) -
Owner decision on Wave-4: execute one quarterly run OR formally defer with a STATE.a2ml note. (Closes Criterion 4 sub-row 3.)
-
One dev-host run of
guix shell -m manifests/live-provers.scm — just test-live. (Closes Criterion 6a.) -
Audit
src/rust/provers/dafny.rsagainst the "deep wiring" bar used for Coq / Lean4. If it falls short, file a follow-up; if it meets the bar, record that in STATE.a2ml. (Closes Criterion 6b.) -
(Criterion 6c stays parked on
verisimdb#ghcr-publish.yml— that is upstream-blocked and not on this gate’s critical path.)
Estimated effort: one session if the gh tokens are available. Without gh access, Criteria 1/2/3/5 cannot close, full stop.
-
docs/handover/L3-LIVE-PROVER-CI-PROMPT.md— original L3 mission. -
docs/handover/TODO.md— P0 / P1 rows referenced above. -
docs/handover/L1-CAPNPROTO-PROMPT.md— the prompt that fires once this gate closes. -
docs/handover/L2-CHAPEL-PROMPT.md— blocked behind L1 + this gate. -
C12 PR (echidnabot manifest) — per-repo opt-in shape for consumers.
-
C14 PR (cross-repo proof DAG design) — what L1’s Cap’n Proto schemas must carry.
-
C15 PR (gitbot-fleet hypatia wiring) — the closed-loop signal the L3 gate depends on for VeriSimDB record quality.
-
B7 PR (HP backend correction) — confirms the HP ecosystem is not blocking L3.