|
| 1 | +<!-- |
| 2 | +SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | +SPDX-License-Identifier: MPL-2.0 |
| 4 | +--> |
| 5 | + |
| 6 | +# Saturation Lane — Prover/Corpus/Vocab/Synonyms/Arbitration |
| 7 | + |
| 8 | +**Branch**: `prover-corpus-saturation` (worktree at `/tmp/echidna-saturation`) |
| 9 | +**Base**: `origin/main` @ `88cd8dc` |
| 10 | +**Started**: 2026-06-01 |
| 11 | +**Driver**: secondary Claude instance, owner-directed "max out / until marginal benefit gone" |
| 12 | +**Sibling lane**: `wave3/161-162-bench-telemetry-corpus` (primary Claude — chapel bench + telemetry) |
| 13 | + |
| 14 | +## Why this exists |
| 15 | + |
| 16 | +The owner directive: push solvers / corpuses / vocab / synonyms / verisim E-R / learning / arbitration to their respective marginal-benefit limits, dispatching agents in parallel. |
| 17 | +This document declares the lane so the wave3 branch can avoid collisions. |
| 18 | + |
| 19 | +## Lane scope — what this branch DOES touch |
| 20 | + |
| 21 | +NEW FILES ONLY where possible. Where existing files must be edited, the file is listed below with the specific functions/symbols I am extending. |
| 22 | + |
| 23 | +### Corpus adapters (new files) |
| 24 | + |
| 25 | +- `src/rust/corpus/isabelle.rs` — Isabelle/HOL AFP `.thy` |
| 26 | +- `src/rust/corpus/metamath.rs` — set.mm |
| 27 | +- `src/rust/corpus/mizar.rs` — MML `.miz` / `.abs` |
| 28 | +- `src/rust/corpus/hol_light.rs` — Multivariate / Core |
| 29 | +- `src/rust/corpus/hol4.rs` — HOL4 Script files |
| 30 | +- `src/rust/corpus/dafny.rs` — `.dfy` |
| 31 | +- `src/rust/corpus/why3.rs` — TOCCATA gallery `.mlw` |
| 32 | +- `src/rust/corpus/fstar.rs` — F\* examples `.fst` |
| 33 | +- `src/rust/corpus/tptp.rs` — TPTP problem library |
| 34 | +- `src/rust/corpus/smtlib.rs` — SMT-LIB benchmarks |
| 35 | +- `src/rust/corpus/acl2_books.rs` — ACL2 community books |
| 36 | +- `src/rust/corpus/proofnet.rs` — ProofNet |
| 37 | +- `src/rust/corpus/minif2f.rs` — MiniF2F |
| 38 | +- `src/rust/corpus/naproche.rs` — Naproche libraries |
| 39 | +- `src/rust/corpus/mathcomp.rs` — Coq MathComp (separate from coq.rs heuristic) |
| 40 | +- `src/rust/corpus/iris.rs` — Coq Iris |
| 41 | +- `src/rust/corpus/cubical_agda.rs` — Cubical Agda stdlib |
| 42 | + |
| 43 | +### Corpus mod registration (existing file, additive only) |
| 44 | + |
| 45 | +- `src/rust/corpus/mod.rs` — append `pub mod isabelle;` etc. No reordering of existing `pub mod` lines. No edits to existing functions. |
| 46 | + |
| 47 | +### Synonyms data (new files) |
| 48 | + |
| 49 | +- `data/synonyms/hol_light.toml` |
| 50 | +- `data/synonyms/hol4.toml` |
| 51 | +- `data/synonyms/metamath.toml` |
| 52 | +- `data/synonyms/mizar.toml` |
| 53 | +- `data/synonyms/dafny.toml` |
| 54 | +- `data/synonyms/fstar.toml` |
| 55 | +- `data/synonyms/why3.toml` |
| 56 | +- `data/synonyms/acl2.toml` |
| 57 | +- `data/synonyms/pvs.toml` |
| 58 | +- `data/synonyms/tlaps.toml` |
| 59 | +- `data/synonyms/imandra.toml` |
| 60 | +- `data/synonyms/_msc2020.toml` — MSC2020 cross-prover dictionary |
| 61 | +- `data/synonyms/_wordnet_math.toml` — WordNet math entries |
| 62 | +- `data/synonyms/_conceptnet_seed.toml` — pre-fetched ConceptNet seeds (offline-resilient) |
| 63 | + |
| 64 | +### Exchange bridges (new files) |
| 65 | + |
| 66 | +- `src/rust/exchange/tptp.rs` — universal first-order ATP exchange |
| 67 | +- `src/rust/exchange/smtlib.rs` — SMT-LIB exchange / round-trip |
| 68 | +- `src/rust/exchange/smtcoq.rs` — SMT proofs into Coq |
| 69 | +- `src/rust/exchange/lambdapi.rs` — Dedukti's successor |
| 70 | + |
| 71 | +### Portfolio expansion (existing file) |
| 72 | + |
| 73 | +- `src/rust/verification/portfolio.rs` — extend `default()` to include DReal, OpenSmt, SmtRat, MathSat, SPASS, Princess, iProver, Twee, Princess in their respective tiers. Pure additive — no semantic changes to existing solver entries. |
| 74 | + |
| 75 | +### New arbitration mechanisms (new files) |
| 76 | + |
| 77 | +- `src/rust/verification/bayesian_arbiter.rs` — posterior over verdict given evidence stream |
| 78 | +- `src/rust/verification/dempster_shafer.rs` — belief mass combination |
| 79 | +- `src/rust/verification/pareto_arbiter.rs` — multi-objective Pareto frontier voting |
| 80 | + |
| 81 | +### Vocab/Synonyms wiring (existing files, surgical edits) |
| 82 | + |
| 83 | +- `src/rust/suggest/synonyms.rs` — add `SynonymTable::with_msc2020()` method; add `merge_external()` for cross-prover dictionaries. Existing `load()` / `alternatives()` UNCHANGED. |
| 84 | +- `src/rust/integrations/conceptnet.rs` — add `prefetch_to_cache()` method using `_conceptnet_seed.toml`. Existing `related_concepts()` UNCHANGED. |
| 85 | + |
| 86 | +### E-R schema formalization (new files) |
| 87 | + |
| 88 | +- `docs/architecture/VERISIM-ER-SCHEMA.md` — formal entity + relationship definitions |
| 89 | +- `crates/echidna-wire/schemas/verisim_er.capnp` — Cap'n Proto schema (if compatible) |
| 90 | + |
| 91 | +### Documentation (new files) |
| 92 | + |
| 93 | +- `docs/decisions/2026-06-01-saturation-campaign.md` — ADR |
| 94 | +- `docs/CORPUS-ADAPTERS.md` — index of all corpus adapters with their parsing strategy + canonical source URL |
| 95 | +- `docs/handover/PROVER-CORPUS-SATURATION-LANE.md` — this file |
| 96 | + |
| 97 | +## Lane scope — what this branch DOES NOT touch |
| 98 | + |
| 99 | +**Hard exclusion list** (collision avoidance with wave3): |
| 100 | + |
| 101 | +- `src/chapel/**` — entirely wave3 |
| 102 | +- `benches/**` — wave3 telemetry hooks |
| 103 | +- `src/rust/diagnostics/corpus_monitor.rs` — wave3 per-prover telemetry |
| 104 | +- `src/rust/diagnostics/gnn_training.rs` — wave3 training health hooks |
| 105 | +- `training_data/premises_*.jsonl` — wave3 benches against these |
| 106 | +- `training_data/floor_progress.{md,jsonl}` — wave3 progress file |
| 107 | +- `training_data/metrics_baseline.jsonl` — wave3 baseline reference |
| 108 | +- `src/rust/learning/{daemon,curriculum,mcts,self_play}.rs` — risk of telemetry collision |
| 109 | +- `models/**` — first GNN training run risks deleting `models/neural/`; defer |
| 110 | +- `src/julia/run_training.jl`, `train.jl`, `eval_held_out.jl` — deferred (would touch model artefacts) |
| 111 | +- `.github/workflows/*` — CI changes go through the wave3 lane |
| 112 | +- `Justfile` — `just train` / `just chapel-*` are wave3 territory |
| 113 | +- Any file the wave3 branch has shown as modified in its working tree (~300 files; the staged set will land via #161/#162 merges, do not pre-empt) |
| 114 | + |
| 115 | +## Contact protocol |
| 116 | + |
| 117 | +- Each commit will use prefix `feat(corpus):` / `feat(vocab):` / `feat(exchange):` / `feat(arbiter):` / `docs(er):` so wave3 can grep. |
| 118 | +- If a file outside this lane needs touching, I file an issue first and link it here. |
| 119 | +- Final merge order: this branch rebases onto `main` AFTER wave3 lands (or at minimum, after #161/#162 are merged). No competing merge race. |
| 120 | + |
| 121 | +## Marginal-benefit termination criteria |
| 122 | + |
| 123 | +I stop the saturation push when: |
| 124 | + |
| 125 | +1. All 14+ corpus adapters land with at least a smoke-test fixture each, OR |
| 126 | +2. Each adapter blocks on an upstream binary/source absent from the environment, OR |
| 127 | +3. Synonyms TOML files exceed ~5,000 lines total (current 863) and ConceptNet/MSC2020/WordNet dictionaries land, OR |
| 128 | +4. Exchange bridges land for TPTP + SMT-LIB at minimum, OR |
| 129 | +5. New arbiter trio (Bayesian / Dempster-Shafer / Pareto) compiles with tests against the existing portfolio results, OR |
| 130 | +6. The compile-test loop slows below ~5 PRs/hour or fixture-fetch latency dominates, |
| 131 | + |
| 132 | +whichever fires first. |
| 133 | + |
| 134 | +## Progress log |
| 135 | + |
| 136 | +- 2026-06-01 — branch created, handover doc landed, scoping agents reported. |
| 137 | +- (subsequent entries added as work lands) |
0 commit comments