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
fix(grpc)+security+test: resuscitate echidna-grpc, bump tonic, add live-prover roundtrip suite
Three coupled changes that leave the platform at 0 cargo-audit findings
with a test suite that actually exercises the Phase-3 backend fix.
### echidna-grpc
Eight pre-existing compile errors (unrelated to the tonic bump but
blocking it) are now fixed:
- `main.rs` was missing the `mod ffi_wrapper;` declaration even though
`ffi_wrapper.rs` sat next to it.
- Three `echidna::core::ProofState::new(...)` callers were passing
`String` / `&str`; the signature is now `new(goal: Term)`. Wrap the
raw content in `Term::Hole(...)` at every call site.
- `FfiProverBackend` was missing three required trait methods
(`search_theorems`, `config`, `set_config`); added along with a
`ProverConfig` field to satisfy the getter/setter pair.
- `TacticResult::Success` takes `ProofState` directly, not
`Box<ProofState>` — unboxed.
- The local `CoreTacticResult` alias was unused; replaced the remaining
three call sites with the re-exported `TacticResult`.
- `parse_file` now stashes `source_path` + `ffi_source` in metadata,
matching the pattern introduced in the rest of `src/rust/provers/`.
- `ffi_wrapper.rs` `CStr::from_ptr(*const u8)` and `CString::as_ptr() →
extern *const u8` calls were platform-dependent type mismatches;
added `.cast()` at each boundary. Dropped the `c_void` and
`FfiStatus/FfiStringSlice/FfiOwnedString/FfiProverConfig` imports
that weren't used.
### tonic 0.12 → 0.14 (clears RUSTSEC-2025-0134)
Once echidna-grpc compiles, the tonic bump is mechanical:
- Cargo.toml: `tonic` / `prost` pinned to `0.14`, `tonic-prost` added
for the new split-out generated-code helper crate.
- Cargo.toml dev deps: `tonic` features `tls` → `tls-ring` (the default
TLS provider flag rename in 0.14).
- build-dependencies: `tonic-build` → `tonic-prost-build`.
- build.rs: `tonic_build::compile_protos` → `tonic_prost_build::`.
`cargo audit` now reports "0 findings", down from:
- RUSTSEC-2025-0143 (capnp unsound API) — cleared earlier by
commit c497661.
- RUSTSEC-2025-0134 (rustls-pemfile unmaintained, pulled transitively
via tonic 0.12.3 → rustls-pemfile 2.2.0) — cleared by this bump.
### Live-prover verify roundtrip suite
`tests/live_prover_verify.rs` runs the real `ProverBackend::parse_file`
→ `verify_proof` pipeline against per-prover fixtures in
`tests/live_goals/`. The 625-test unit suite stubs solver binaries, so
a regression in the Phase-3 "prefer source_path over lossy IR" fix
would not be caught there — this suite closes that gap by invoking the
actual binaries and asserting both the positive verdict on a valid
proof AND the negative verdict on a deliberately broken one.
Covered: Z3, CVC5, Coq, Agda, Metamath, SPASS (the six apt-installable
MVP provers). Auto-skip when a binary is absent on PATH (same
convention as `live_prover_suite.rs`) so developers without every
prover installed don't see spurious failures; CI enables the
`live-provers` feature per-tier with the single binary provisioned.
Fixtures:
- `tautology.smt2` / `contradiction.smt2` (shared Z3/CVC5 pair).
- `identity.v` / `broken.v` (Coq).
- `Identity.agda` / `Broken.agda` (Agda).
- `trivial.mm`, `trivial.dfg` (Metamath, SPASS — positive-only).
`.gitignore` in `tests/live_goals/` drops Coq/Agda compilation
artifacts (`*.vo`, `*.vok`, `*.vos`, `*.glob`, `.<base>.aux`, `*.agdai`).
The 625 unit tests remain green. The live-prover test binary compiles
cleanly; full end-to-end run confirmed via manual CLI invocation
earlier in the session (all six MVP provers return verified=true via
MCP tool-call).
https://claude.ai/code/session_01NaC5RXjTyr5xg9XXUa2FCC
0 commit comments