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
Two follow-ons to the S4 write-side wiring (60d2e75):
(1) obligation_class threading
verify_proof now delegates to a private verify_proof_with_class that
takes Option<&str>. verify_proof_verisim_guided threads the class it
already knows, so recorded ProofAttempt rows are attributed to the
right obligation_class instead of "unknown" — otherwise the very MV
`mv_prover_success_by_class` would be polluted with rows that the
advisor itself produced.
(2) Cross-prover search layer (vcl_ut::cross_prover_search_names)
Audit revealed the original "replace 72 search_theorems stubs"
plan was the wrong shape: vcl_ut::execute_cross_prover already
queries VeriSimDB's /api/v1/search/text. The 72 backends with
`Ok(vec![])` are not stubs — they correctly report "no native
search command" because their underlying provers don't ship one.
Cross-prover semantics belong one layer up. Added a thin helper
that wraps the existing executor and projects results to Vec<String>
matching the trait shape, then wired it into the three call sites
(CLI search command, REST /api/search, REPL :search). One query
covers every prover that ever recorded an attempt.
Available in default builds as a no-op stub (Ok(vec![])) so callers
don't need their own cfg ladder.
Roadmap (docs/ROADMAP.md):
- Stage 4d marked done with rationale for keeping the per-backend stubs
- Endpoint table updated to reflect cross-prover layer
- "What is blocking" entry: Verisim schema is fixed; remaining S4 work
is ops (CI standup + production loop observation), not design
Tests: +3 (test_verify_proof_with_class_threads_class_to_inner +
test_cross_prover_search_names_empty_pattern + _unreachable_returns_empty).
Total 905 lib tests pass with --features verisim, 872 default.
Pre-existing tests/common/mod.rs ProverConfig field rot (project_root,
sandbox) blocks integration suite and is unrelated to this change.
| "Every important solver" |**128 ProverKind variants** (89 external prover bindings + 39 TypeChecker disciplines routed through TypedWasm); **5 `suggest_tactics` stubs**; **72 `search_theorems` stubs**|**All variants with real `suggest_tactics` (GNN‑ranked top‑k) and `search_theorems` (queries Verisim by `goal_hash`) — no `Ok(vec![])` returns anywhere**|
114
+
| "Every important solver" |**128 ProverKind variants** (89 external prover bindings + 39 TypeChecker disciplines routed through TypedWasm); **5 `suggest_tactics` stubs**; **72 backends with empty native search but a cross-prover Verisim fallback at the dispatcher layer (CLI/REST/REPL)**|**All variants with real `suggest_tactics` (GNN‑ranked top‑k); per-backend search reflects each prover's native capability while cross-prover queries are served from Verisim by `goal_hash`**|
108
115
| "Vocab at 2.5 M" | 255 K |**~1 M canonical tokens** after Mathport + Iris + VST + Flyspeck + HoTT absorption, with **online growth** adding tokens during training |
109
116
| "Chapel fully supported" | 2 files, POC only |**`dispatch.rs` picks Chapel‑parallel dispatch by config**; runtime init + cancellation + error propagation wired; ≥1 OoM speedup on portfolio solves |
110
117
| "Cap'n Proto serialisation" | 0 `.capnp` files |**`crates/echidna-wire/`** contains schemas for ProofState / Goal / Tactic / EmbeddingRequest / RankingResponse; IPC on :8090 is Cap'n Proto; JSON retained only as debug fallback |
@@ -161,8 +168,14 @@ What **is** blocking and needs Opus + cross‑repo input:
161
168
Vec<ProofRecord>` and `async fn prover_success_by_class(class) ->
162
169
Vec<(ProverKind, f32)>`) but the schema for `ProofRecord` and `class`
163
170
lives in the Verisim repo and must be agreed there before echidna
164
-
can wire reads.
165
-
-**`search_theorems`** — 72 stubs, all blocked behind S4 contract.
171
+
can wire reads. **Status as of 2026-04-27**: the Verisim schema is in
0 commit comments