Dispute machine

Seven states. Evidence at every edge.

Every dispute moves through a fixed state machine. Each transition captures evidence, emits a countersigned receipt, and links back to the original transaction's receipt chain. Small-value disputes auto-resolve through bond-backed Schelling arbitration; human review only kicks in above the auto-resolution threshold.

The seven states.

1opened
2under-review
3evidence-gathering
4bonded-arbitration
5resolved
6appealed
7closed

opened

A party to the session (buyer or seller) calls dispute.open() with a reason and initial evidence. Transitions emit the first dispute receipt. Time bound: any time before the original transaction's settlement window closes.

under-review

TrueCom's dispute service validates the initial evidence schema and pulls the original transaction's receipt chain into scope. Transitions to evidence-gathering or resolved (if the dispute is resolvable on its face). Time bound: 24 hours.

evidence-gathering

Both parties are solicited for evidence: HTTP responses, signed messages, counter-receipts, third-party attestations. Evidence is countersigned and appended to the dispute chain. Time bound: 72 hours by default, extendable once on request.

bonded-arbitration

A Schelling committee of arbiters is drawn. Each arbiter stakes a bond and renders a judgment. Honest arbiters (the ones agreeing with the consensus judgment) are paid from the bond pool; absent or dissenting arbiters lose their stake. Time bound: 48 hours.

resolved

The committee's judgment is recorded and a countersigned settlement instruction is emitted. Funds move (refund, split, release). Resolution is final subject to the appeal window.

appealed

A party may appeal once. Appeal escalates to a larger committee and requires a larger bond. Bond sizing for appeal: {{TBD}}. Time bound: 96 hours.

closed

Terminal state. The dispute chain is sealed; the receipt is immutable. Any subsequent re-open requires a new dispute referencing the prior closed record.

Bond-backed Schelling arbitration.

Every arbiter stakes a bond before rendering a judgment. After the committee votes, the canonical judgment is the consensus vote. Arbiters who voted with consensus are paid from the bond pool (theirs plus a share of absent/dissenting arbiters' forfeited bonds). Arbiters who disagreed or did not vote lose their stake.

Honest-but-mistaken arbiters therefore lose only their own bond, not other arbiters' stakes. Dishonest coordination has to beat a majority of similarly-staked arbiters, not just show up with more nodes; the bond pool makes that expensive.

Small-value disputes (below the auto-resolve threshold) run this mechanism end-to-end without any human review step. Above the threshold, the mechanism still runs, but the decision is flagged for a human in the loop on the TrueCom side before funds move.

See /docs/arbitration

The full mechanism spec (bond sizes, thresholds, committee sizing, appeal conditions) is at /docs/arbitration.