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
## What & why
Closes the last M0 gap. `arghda doctor` probes every known backend by
running `<command> --version` and reports which are actually runnable —
**honestly** (runnable=false only when the binary genuinely cannot
execute, never a guess), the same discipline as `check_file`'s graceful
degradation.
## Changes
- **`src/prover/mod.rs`** — `Probe { backend, kind, runnable, detail }`
+ `probe_tool()`; `Backend::command()` (the binary, which may differ
from `name()` — `agda-cubical` runs `agda`) + a default
`Backend::probe()`.
- **`src/prover/{agda,idris2,smt}.rs`** — `command()` for each of the
five backends.
- **`src/main.rs`** — `doctor [--json]` subcommand over
`KNOWN_BACKENDS`.
- **`Justfile`** — `just doctor` repointed off the interim
provision-script shim onto `cargo run -- doctor`.
## Verified (ran, not inferred)
- `cargo test` → **108 passing, 0 failed** (+1 probe/command honesty
unit).
- `cargo clippy -D warnings` clean · `cargo fmt --check` clean ·
`check-spdx.sh` OK.
- **Dogfooded** `arghda doctor` → **5/5 runnable**, real version lines:
```
[OK] agda assistant Agda version 2.6.3
[OK] agda-cubical assistant Agda version 2.6.3
[OK] idris2 assistant Idris 2, version 0.7.0
[OK] z3 solver Z3 version 4.8.12 - 64 bit
[OK] cvc5 solver This is cvc5 version 1.2.0 …
```
`--json` emits the machine-readable form.
## Milestone status
**Engine-spine core (M0–M5) complete.** Five backends across both
interaction models, the Flying-Logic reasoning graph, and now a
discovery command. Next: M6 (Lean4), M11 (studio JSON freeze + Groove
manifest — `doctor` output feeds it).
---
_Generated by [Claude
Code](https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7)_
Co-authored-by: Claude <noreply@anthropic.com>
# M2 landed 2026-07-01: Cubical-Agda variant. Implemented as a SEPARATE backend
64
74
# `AgdaCubical` (name "agda-cubical") rather than the plan's `Agda::cubical()`
65
75
# constructor — a distinct type expresses the flag-profile ISLAND better (a
@@ -152,10 +162,10 @@ milestones = [
152
162
153
163
[critical-next-actions]
154
164
actions = [
155
-
"M1 + M2 + M3 + M4 + M5 DONE. Five backends across both interaction models: agda, agda-cubical, idris2 (Assistant); z3, cvc5 (Solver). Next:",
156
-
"Finish M0: add the `arghda doctor` Rust subcommand — report which of the five backends are actually runnable (probe each binary), repoint `just doctor` at it, feed the Groove manifest. Closes the last M0 gap.",
157
-
"Flying-Logic epic M6: Lean4 adapter (lake build + #print axioms audit → honest Unknown soundness when the audit is absent). Lean 4.13.0 provisioned.",
158
-
"Flying-Logic epic M11: studio JSON freeze (reason/0.1) + Groove /.well-known/groove manifest (the one open v0.1 milestone).",
0 commit comments