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
feat(verification): unified ResultArbiter — wire the 4-mechanism arbitration stack into dispatch
The arbitration stack (portfolio reconcile, Bayesian log-odds,
Dempster-Shafer, Pareto) existed but was orphaned: each mechanism
defined its own input type and nothing outside its own tests called it.
verify_proof_cross_checked re-implemented a boolean all-must-agree
check inline, collapsed cross-checker outcomes to bool, counted a
timeout as disagreement, and flattened Proven-vs-Refuted conflicts to
verified=false.
New src/rust/verification/result_arbiter.rs:
- ProverAttempt (prover, ProverOutcome, elapsed) as the common input;
outcome_to_verdict maps the 8-variant taxonomy onto the verdict frame
(timeout/error = no-information; InconsistentPremises = suspect flag)
- ArbitrationPolicy (portfolio default | bayesian | dempster_shafer)
selected via DispatchConfig.arbitration_policy
- ArbitratedVerdict: winning verdict, agreeing/disagreeing/inconclusive
camps, [0,1] conflict metric, needs_review, policy posterior/belief,
and a Pareto-recommended prover among the agreeing set
dispatch.rs: verify_proof_cross_checked now feeds every cross-checker's
rich outcome to the arbiter; DispatchResult gains needs_review +
arbitration (serde-defaulted, wire-compatible). verified stays
primary-anchored, but a cross-checker timeout no longer vetoes
agreement, and conclusive disagreement is surfaced by name in the
message and flagged for review.
11 new unit tests incl. the Proven-vs-Refuted conflict, DS high-conflict
refusal, and timeout-tolerance cases. 1185 lib + 154 integration tests
green.
Refs echidnabot#58 (multi-prover consensus roadmap).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/wiki/Guides.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -101,6 +101,10 @@ Motivating examples:
101
101
-**Dempster-Shafer** — "Five solvers; three Proven, two Refuted; either commit a posterior or *refuse to arbitrate* because conflict is too high."
102
102
-**Pareto** — "Lean took 30s and produced a 4kB certificate; Z3 took 0.2s and produced no certificate. Which dominates?" — neither; return both as Pareto-optimal.
103
103
104
+
### Unified entry point: `ResultArbiter`
105
+
106
+
You normally don't call the four mechanisms directly. `ResultArbiter` (`src/rust/verification/result_arbiter.rs`) takes the per-prover `ProverOutcome`s from a cross-checked dispatch, adapts them into whichever mechanism `DispatchConfig.arbitration_policy` selects (`portfolio` default | `bayesian` | `dempster_shafer`), and returns an `ArbitratedVerdict`: winning verdict, agreeing/disagreeing/inconclusive camps, a `[0,1]` conflict metric, `needs_review`, and a Pareto-recommended prover among the agreeing set. `Dispatcher::verify_proof_cross_checked` attaches it to `DispatchResult.arbitration`. Key semantics: timeouts and errors are no-information (they no longer veto agreement), and a genuine Proven-vs-Refuted split is flagged for review instead of being flattened to `verified = false`.
107
+
104
108
## Guide: Cross-prover semantic queries
105
109
106
110
The synonym layer carries an optional `semantic_class` tag per entry. Combined with the three cross-prover dictionaries (`_msc2020.toml`, `_wordnet_math.toml`, `_conceptnet_seed.toml`) this gives "every prover's name for the same concept" lookups, fully offline.
0 commit comments