|
1 | 1 | // SPDX-License-Identifier: PMPL-1.0-or-later |
2 | 2 | = Echidnabot Roadmap |
3 | 3 |
|
4 | | -== Current Status |
| 4 | +== Current Status (v0.1.x) |
5 | 5 |
|
6 | | -Initial development phase. |
| 6 | +Core dispatch, trust pipeline integration, and GitOps proof-verification flow |
| 7 | +operational. Communicates with ECHIDNA over REST and GraphQL. |
| 8 | + |
| 9 | +=== Done |
| 10 | +* [x] `EchidnaClient` — REST + GraphQL with `Auto` fallback |
| 11 | +* [x] `ProofStatus` extended to full 8-variant taxonomy matching ECHIDNA's |
| 12 | + `ProverOutcome` (PROVED / NO_PROOF_FOUND / INVALID_INPUT / |
| 13 | + UNSUPPORTED_FEATURE / TIMEOUT / INCONSISTENT_PREMISES / PROVER_ERROR / |
| 14 | + SYSTEM_ERROR) |
| 15 | +* [x] `parse_proof_status()` handles both new taxonomy strings and legacy strings |
| 16 | +* [x] REST response deserialization upgraded: reads `outcome` field when present |
| 17 | + (ECHIDNA v2.2+), falls back to `valid: bool` for older servers |
| 18 | +* [x] `ProofStatus::is_verified()` and `is_retryable()` helpers |
7 | 19 |
|
8 | 20 | == Milestones |
9 | 21 |
|
10 | | -=== v0.1.0 - Foundation |
11 | | -* [ ] Core functionality |
12 | | -* [ ] Basic documentation |
13 | | -* [ ] CI/CD pipeline |
| 22 | +=== v0.2.0 — Session-based Z3 (single-process round-trip) |
| 23 | + |
| 24 | +Replace the two-process `execute_command()` pattern in ECHIDNA Z3 backend with |
| 25 | +a single Z3 session using `(push)/(pop)`. This makes the inconsistency pre-check |
| 26 | +and validity check atomic (one process, no races) and halves subprocess overhead. |
| 27 | + |
| 28 | +Echidnabot impact: faster response times for Z3-backed proofs; TIMEOUT outcome |
| 29 | +more reliable (single process, single wall-clock budget). |
| 30 | + |
| 31 | +* [ ] ECHIDNA: session-based `Z3Backend::execute_session()` with push/pop |
| 32 | +* [ ] ECHIDNA: retire two-call pattern in `check()` |
| 33 | +* [ ] echidnabot: no code change needed — outcome taxonomy unchanged |
| 34 | + |
| 35 | +=== v0.3.0 — Typed override coverage for priority backends |
| 36 | + |
| 37 | +ECHIDNA's `check()` default falls back to heuristic string matching for 46 of 48 |
| 38 | +backends. Priority overrides (each surfaces full taxonomy without guessing): |
| 39 | + |
| 40 | +* [ ] CVC5 — heavily used alongside Z3, same SMT-LIB surface |
| 41 | +* [ ] Lean 4 — most common interactive backend |
| 42 | +* [ ] Coq/Rocq — second most common; `InconsistentPremises` detection via |
| 43 | + `tauto` + `exfalso` |
| 44 | +* [ ] Isabelle — `INCONSISTENT_PREMISES` from `simp` failure pattern |
| 45 | + |
| 46 | +Echidnabot impact: `INCONSISTENT_PREMISES` and `UNSUPPORTED_FEATURE` reported |
| 47 | +accurately instead of `NO_PROOF_FOUND` for these backends. |
| 48 | + |
| 49 | +=== v0.4.0 — `check_raw_smt()` API surface |
| 50 | + |
| 51 | +Add a `check_raw_smt(raw: &str) -> ProverOutcome` method to `ProverBackend` for |
| 52 | +backends that accept pre-built content directly (Z3, CVC5, Why3). Avoids the |
| 53 | +lossy `parse_string()` → ProofState → reconstruct round-trip. |
| 54 | + |
| 55 | +ECHIDNA's `/api/verify` REST handler uses this path when the content is raw |
| 56 | +SMT-LIB (already detected via `should_passthrough_smt_eval`), making the |
| 57 | +`outcome` field accurate for raw-mode requests. |
| 58 | + |
| 59 | +Echidnabot impact: `verify_proof_rest()` receives meaningful `outcome` even |
| 60 | +for SMT-LIB passthroughs (currently gets a synthesised PROVED/NO_PROOF_FOUND). |
| 61 | + |
| 62 | +=== v1.0.0 — Production stable |
| 63 | + |
| 64 | +* [ ] `gitbot-fleet/shared-context` submodule pinned and shipped |
| 65 | +* [ ] All above milestones complete |
| 66 | +* [ ] Comprehensive integration tests against live ECHIDNA instance |
| 67 | +* [ ] Deployment documentation |
14 | 68 |
|
15 | | -=== v1.0.0 - Stable Release |
16 | | -* [ ] Full feature set |
17 | | -* [ ] Comprehensive tests |
18 | | -* [ ] Production ready |
| 69 | +== Architectural direction |
19 | 70 |
|
20 | | -== Future Directions |
| 71 | +The long-term direction is: **every failure surfaced by echidnabot carries enough |
| 72 | +information for the proof author to act on it without reading logs.** |
21 | 73 |
|
22 | | -_To be determined based on community feedback._ |
| 74 | +The taxonomy established in ECHIDNA v2.2 is the foundation. Each subsequent |
| 75 | +milestone makes more of that taxonomy reachable through the bot's output. |
0 commit comments