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
## Context
First increment of the epic to evolve `arghda-core` from an Agda-only
proof-workspace engine into a **"Flying Logic for provers/solvers"** — a
multi-backend, status-propagating reasoning-graph workspace (Agda-first,
then Idris2, Lean4, Coq/Rocq, Isabelle, Cubical-Agda, Mizar, plus SMT
solvers Z3/CVC5). The full plan phases the work M0→M11; this PR is **M0:
reproducible, honest toolchain provisioning** — the fix for the
recurring "guess a URL / get one wrong / nothing installs" pain.
Guiding invariant throughout the epic: **never embed a prover, and never
report a verdict a real run didn't produce.**
## What's in this PR
**`scripts/provision-provers.sh`** — idempotent, version-pinned
installer for all backends. Tractable tier installed by default; heavy
tier (Coq via opam, Isabelle) behind `--heavy`; Mizar behind `--mizar`.
Honesty contract baked in: a backend is reported `OK` only when its own
`--version` returned 0 in the run; everything else prints as
`MISSING`/`FAILED` with the command tried. Third-party sources are
fetched as **curl tarballs, not `git clone`** — the environment's proxy
403s git-relay access to non-scoped repos, and tarballs are more
portable anyway.
**`Justfile`** — `provision` / `provision-heavy` / `doctor` recipes
(interim `doctor` shells the script's `--verify-only` table until the
`arghda doctor` Rust subcommand lands).
**`scripts/check-spdx.sh` + `licensing-policy.toml`** — ⚠️
*licence-adjacent, flagged for review.* Fixes a pre-existing checker
bug: the prose SPDX variable was `MPL-2.0`, contradicting the repo's own
declared policy (`prose = CC-BY-SA-4.0`, which every prose file already
carries) and the checker's own failure label. This was failing `just
license-check` on a pristine tree. **No licence header on any file was
changed** — only the enforcer, so it now accepts the already-present,
already-declared headers; the canonical `LICENSES/` texts are excluded.
One-line revert if you'd prefer to handle it differently.
**`STATE.a2ml`** — records M0 and the M1–M11 milestone ladder.
## Verified in-container (real `--version` output)
| Backend | Result |
|---|---|
| Agda | ✅ 2.6.3 (+ stdlib v2.3 + cubical library + `--cubical` flag) |
| Zig | ✅ 0.15.2 |
| Z3 | ✅ 4.8.12 |
| CVC5 | ✅ 1.2.0 |
| Lean 4 | ✅ 4.13.0 |
| Idris2 | building via chez bootstrap (ABI-language priority) |
| Coq/Rocq, Isabelle, Mizar | scripted behind `--heavy`/`--mizar`; not
installed this session |
`just check` passes (fmt + clippy `-D warnings` + SPDX + build + **64
tests, 0 failed**).
## Next (not in this PR)
M1 — the keystone: introduce a `Backend` trait spanning two kinds
(proof-assistant `Assistant` typecheck→exit-code; `Solver`
SMT-LIB2→sat/unsat/unknown) with a common `Verdict` enum, move `agda.rs`
behind it as a pure refactor (the 64 tests are the oracle), then M3's
Flying-Logic reasoning graph (And/Or juncts + demote-only status
propagation).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
_Generated by [Claude
Code](https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
# was set to MPL-2.0, contradicting the declared policy (prose = CC-BY-SA-4.0 in
69
+
# licensing-policy.toml) and the checker's own failure label; it now matches
70
+
# the declaration. NO licence header on any file changed; the LICENSES/ REUSE
71
+
# dir is now excluded (canonical texts). This was blocking `just license-check`.
40
72
41
73
[critical-next-actions]
42
74
actions = [
43
-
"Template-applicability: rsr-profile.a2ml declares capabilities (landed); estate policy + gate model + reference checker landed in hyperpolymath/standards#391 + #392 (pure capability-gating). Follow-up: wire the standards rsr-profile check into CI.",
44
-
"Transitive-import closure hashing landed (workspace [proven] include_root); follow-up: also expose it as a --include-root CLI flag on promote/stale.",
45
-
"Serve /.well-known/groove for PanLL discovery (Groove protocol)",
46
-
"Scaffold arghda-studio (AffineScript visual layer consuming the dag JSON)",
75
+
"Flying-Logic epic M1: introduce the Backend trait (Assistant|Solver) and move agda.rs to prover/agda.rs as a PURE REFACTOR — the 50 existing tests are the oracle, they must stay green with no behaviour change. This is the keystone everything else rides on.",
76
+
"Flying-Logic epic M3: src/reason reasoning graph (And|Or juncts + demote-only cycle-safe Verdict propagation) — independent of new backends, lands the headline capability early.",
77
+
"Finish M0: add the `arghda doctor` Rust subcommand and repoint `just doctor` at it (interim shells provision-provers.sh --verify-only).",
78
+
"Transitive-import closure hashing landed; follow-up: expose it as a --include-root CLI flag on promote/stale.",
79
+
"Serve /.well-known/groove for PanLL discovery (Groove protocol) — folds into M11.",
0 commit comments