Repository navigation
ECH-05: feat(arbitration): consume fidelity evidence, not N re-proofs — type the arbiter's input by alignment certificate and level its verdict #431
Description
- Repository: hyperpolymath/echidna
- Labels: enhancement, area:arbitration, area:exchange, epistemic-types, residual-evidence-types, idris2
- Area: result arbitration / cross-prover exchange / Idris2 ABI
- Depends on: epistemic-types
6a68de3; residual-evidence-types97244f5 - Related: Consume fidelity evidence, not re-proofs #429 (the wider ask: one-kernel ingestion of fibre coverage, round-trip and cross-prover agreement). This issue is the arbiter-typing slice of it.
Summary
ResultArbiter::arbitrate(&[ProverAttempt]) -> ArbitratedVerdict (src/rust/verification/result_arbiter.rs), with pareto_arbiter.rs and dempster_shafer.rs beside it, fuses N backend outcomes for what it treats as one goal. Alignment between backends is lexical — per-prover synonym tables under data/synonyms/ with MSC2020 / WordNet / ConceptNet — and the exchange layer (src/rust/exchange/, six formats) is the kernel-checked translation tier that ROADMAP stage 6 ("cross-prover semantics — translation actually works") says is not yet real. N re-proofs of N possibly different statements are N warrants for N propositions, not one sound warrant for the source claim.
What the arbiter should consume is fidelity evidence: per backend, a certificate that the formal statement denotes the source claim — a kernel-checked translation through the exchange layer, or a declared correspondence validated by consequence testing — and it fuses only attempts whose certificates agree. In epistemic-types' terms each prover is a standpoint (K); a proof is Epi for its formal statement; the source claim is A; the certificate is the sound map from the formal statement's evidence to A; without it the fused verdict is belief about the source claim (no-receipt-reflection), however many provers agree. Content in a formal statement with no counterpart in the source must not cross, and residual-evidence-types' coarsening gives the direction: a coarse claim transfers to the fine observation, not back (coarsen-claim).
Not claimed: a solution to autoformalisation (undecidable in general). Claimed: the arbiter's input and output types change, and a synonym collision can no longer fuse to sound. echo-types' order-type "fidelity" (Buchholz, OPEN) is a different object and is not used here.
Context
Proof work that applies now (sibling artefacts checked at the pinned commits on 2026-10-14):
| ID | Claim | Status | Artefact |
|---|---|---|---|
| E-1 | Warrant / Epi / SoundWarrant / sound-epi |
PROVEN | epistemic-types EpistemicTypes.Warrant |
| E-2 | agreement without a soundness map is belief | PROVEN | epistemic-types EpistemicTypes.Applications.RapidNJSkip.no-receipt-reflection |
| RE-K | composed claims never derive the composed case; component-left/right |
PROVEN | residual-evidence-types ResidualEvidence.Composition.compose-claims |
| RE-D | coarsening transfers one way only | PROVEN | ResidualEvidence.Composition.coarsen-candidate/case/claim |
| RE-R | retracting a source retracts what rested on it | PROVEN | ResidualEvidence.Revision.retract-*, dependent-holds |
| EC-1 | arbiters exist (Rust): result, Pareto, Dempster–Shafer | TESTED | src/rust/verification/; cargo test --lib result_arbiter |
| EC-2 | exchange layer: OpenTheory, Dedukti, TPTP, SMT-LIB, SMTCoq, Lambdapi | DESIGNED → partial | ROADMAP stage 6a/6b |
| EC-3 | Idris2 ABI gate: zero believe_me, postulates, admits |
TESTED | idris2-abi-ci.yml |
ProverAttempt { prover, outcome, elapsed_ms }carries no statement identity beyond the goal it was handed;ArbitratedVerdictis scalar.docs/design/ADVANCED_TYPING_GAP_ANALYSIS.adocandTYPING_CAPABILITIES_COMPARISON.adocalready compare backend type theories; they are the place to say which pairs can share a kernel-checked term.- ECH-01..04 are filed (feat(pareto): integrate exact hypervolume indicator and MOEO non-dominated sorting in verification/pareto.rs #420–feat(chapel): island-model asynchronous migration topologies & dynamic solver portfolio budget allocation #422, feat(ffi): C-ABI / Zig bridge specification for embedding ParadisEO metaheuristics engine with Idris2 contracts #424); their canonical text is undecided and is not reopened here.
Proposed Work
- Input type.
ProverAttemptgainsfidelity: FidelityEvidence=KernelTranslation { format, checked_by, term_hash }|DeclaredCorrespondence { consequence_tests, failures }|None.ArbitratedVerdictgainslevel ∈ {sound, epi, belief}. Policy: anyNoneattempt caps the level atbelief;soundrequires every fused attempt to carryKernelTranslationto the same exchange-layer term (term_hashequality);DeclaredCorrespondencewith zero failures yieldsepi. Existing numeric fusion is unchanged below the level. - ABI.
src/abi/EchidnaABI/Arbitration.idr: the three-level verdict as a closed sum whoseSoundconstructor takes the hash-equality proof; total; passes the ABI gate. - Tests.
tests/arbitration_fidelity_test.rs: two backends proving two lexically aligned but formally distinct statements (a synonym collision) must not fuse abovebelief; a MiniF2F-aligned pair (aligned across Lean, Isabelle, HOL Light, Metamath, Coq) with kernel-checked translations is the positive control forsound; a retracted backend (marked unsound) lowers every verdict that rested on it (RE-R). - Docs. ROADMAP stage 6 acceptance becomes "a
KernelTranslationcertificate is producible for pair X";issues/README.mdgains ECH-05; the gap-analysis documents name which backend pairs can share a term.
As the proofs progress:
- Bidirectional exchange (OpenTheory, 6a) → the forward-then-back translation check becomes a round trip, and a lossless round trip is a Loss-grade-𝟙 witness (resource-algebra
Instances/Loss.agda) — the certificate gets a grade. - choreographic-types standpoints → multi-prover protocols as choreographies, with K-CUT-WARRANT giving what each backend can know of the global verdict.
- VeriSimDB → certificates stored as first-class objects with the term hash as key.
Acceptance Criteria
-
ProverAttempt/ArbitratedVerdicttype change compiles;cargo testgreen; existing arbitration numbers unchanged at levelbelief(regression fixture). -
Arbitration.idrpassesidris2-abi-ci.yml. - Synonym-collision test cannot reach
sound; MiniF2F positive control reachessound; retraction test lowers dependent verdicts. - ROADMAP, gap-analysis docs and
issues/README.mdupdated; the ECH-01..04 canonical-text question is not reopened here. - CodeRabbit findings and CI anomalies addressed per the standing rule. (feat(arbitration): ECH-05 fidelity evidence and belief/epi/sound verdict levels #430 merged with Cargo Audit and Hypatia-baseline red on causes already on
main; follow-up fixes are in flight.)
Out of Scope
- Making the Dedukti/OpenTheory bridges real (stage 6 itself).
- GNN tactic suggestion.
- VeriSimDB standup.
- The Chapel island migration (ECH-03).
Open Questions
- Is Dempster–Shafer fusion retained for same-encoding automated provers only, or across kernels under a certificate?
- Who runs consequence testing for
DeclaredCorrespondence, and against which corpus beyond MiniF2F?
Activity
hyperpolymath commentedon Oct 14, 2026
Completed by #430 (squash
6883126).FidelityEvidenceonProverAttempt, pluslevel/retracted/warranted_termonArbitratedVerdict. The fixture recorded at29b18eareplays unchanged, with every verdict atbelief.EchidnaABI.Arbitration.Soundcarries the hash-equality proofs. The accept/reject fixtures run inidris2-abi-ci.yml.tests/arbitration_fidelity_test.rs(synonym collision, MiniF2F positive control, retraction), ROADMAP stage 6 acceptance and the backend-pair table.The two CI checks that #430 merged red on are caused by problems already on
main: thequinn-protoadvisories, and the Hypatia baseline findings from #426/#427. The fixes are coming as stacked follow-up PRs.Still open in #429: one-kernel (Agda) ingestion of fibre coverage, round trips and cross-prover agreement.
Generated by Claude Code
fix(deps): bump quinn-proto 0.11.15 → 0.11.19 (RUSTSEC-2026-0338..034…
chore(ech05): regression fixture -> JCS; stage 6 first target; ECH-05…
chore(ech05): regression fixture → JCS, stage 6 first target, #431 ro…