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.
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.