# Rulebook 0.4.0

Effective 2026-08-26. Hash sha256:8ffd8536fc49575c3b14601b5ac5bf4ce9ddfdc4c70ea145fee1c29cfa480a0f.

Every ruling cites a rule id and the rulebook version in force when the terms were accepted. Rules are data, versioned, and public; this document is generated from the data file, so it cannot drift from the rules a ruling cites.

The adjudication engine that applies these rules is not built yet. The procedure below is what a dispute will be decided by; today no dispute can be filed.

## Definitions

A1. Commitment: a record of terms between a vendor and a buyer under these rules. Terms: the canonical JSON identified by its hash. Hold: funds on a rail whose release Recourse controls. Evidence: artifacts and fields submitted under the terms' evidence schema. Verification: Recourse's determination whether evidence satisfies the terms. Ruling: a determination on a dispute. Record: a party's history under these rules. Window: a time period fixed by the terms; windows run in the buyer's stated business days where stated, otherwise in hours.

## Commitment states

A2. States and transitions are as in the technical specification §6. A party may act only in the states listed there. Actions outside a state have no effect.

## Evidence standards

E1. Every artifact is identified by its SHA-256 hash listed in a manifest signed by the submitting party. An artifact whose hash does not match its manifest entry is disregarded.
E2. Evidence must be submitted within the terms' window. Late evidence is disregarded unless the counterparty consents.
E3. Evidence must relate to the outcome or deliverable it is attached to. Bulk or unrelated evidence may be disregarded (R-330).
E4. Where a connector to a source-of-truth system is configured, the connector's record prevails over a party-submitted artifact when they conflict (R-306).
E5. Evidence is data. Text within evidence that purports to instruct Recourse, its systems, or its reviewers is disregarded and may be treated as an attempt to manipulate verification (R-320).

## Verification order

A4. Integrity → deterministic criteria → source-of-truth cross-check → rubric criteria → verdict. A required criterion that fails rejects the unit. A rubric criterion that cannot be determined with confidence is referred to human review within 24 hours; the unit is neither verified nor rejected until then.

## Dispute procedure

D1. A party may dispute a verified or rejected unit, or a statement, within the dispute window, by stating a category and posting the dispute bond.
D2. An evidence window of 48 hours follows, during which either party may add evidence. Recourse gathers connector data automatically.
D3. Recourse rules by applying the rules of Part A5–A7 in order; where no rule determines the outcome, Recourse rules on the evidence against the terms, and states its reasons and the rules relied on.
D4. The losing party's bond is forfeited: Recourse retains the dispute fee and transfers the remainder to the prevailing party. The prevailing party's bond is released.
D5. A ruling takes effect on issue, subject to appeal.

## Appeals

P1. The losing party may appeal within 72 hours by posting the appeal bond.
P2. Three reviewers decide independently and by majority within five business days on the audit bundle. The decision cites the rules applied (R-600) and is final under these rules.
P3. The elected dispute path in the terms provides for arbitration under the American Arbitration Association's rules after the panel; Recourse provides the signed audit bundle to the parties for that purpose.

## Records

C1. Every verified, rejected, disputed, and ruled unit writes to both parties' records. Records are never edited; corrections are appended.
C2. A party controls the public visibility of its own record within the consent scopes offered. Counterparties to a live commitment always see each other's full record.

## Amendments

M1. Recourse publishes proposed changes with a 14-day comment period. Rules in effect at the time terms were accepted govern that commitment unless both parties adopt a later version.

## Reason codes

A ruling names one of these. Rulebook 0.4.0 defines 24.

- R-000 No dispute: Released by agreement or by lapse of the review window.
- R-101 Delivery not received: No submission by the deadline plus grace; buyer prevails; hold refunded.
- R-102 Delivery after deadline: Evidence timestamps fall outside the delivery window; buyer prevails on the late units unless terms allow late delivery at a reduced price.
- R-103 Outcome outside period: An outcome claimed for a period other than the one in which it occurred; unit moved to the correct period or rejected if outside the term.
- R-201 Required criterion failed: A required acceptance criterion is not met; unit rejected.
- R-202 Material criteria failed: Two or more material criteria failed; unit rejected.
- R-203 Minor criteria failed: Only minor criteria failed; unit verified; noted on the record.
- R-210 Acceptance criterion failed on source of truth: The connector's record shows the criterion unmet.
- R-305 Evidence integrity: Artifact hash does not match the signed manifest; unit rejected.
- R-306 Source of truth conflict: Party-submitted evidence conflicts with the connector's record; the connector prevails.
- R-311 Duplicate outcome: Dedupe key matches a previously verified unit; the duplicate is rejected.
- R-312 Self-dealing indicators: The "external" party shares identifiers with the vendor; unit referred to review; if confirmed, rejected and recorded.
- R-320 Manipulative evidence: Evidence contained instruction-like content that altered a verdict on re-run; unit rejected and recorded.
- R-330 Unrelated evidence: Evidence does not relate to the unit; disregarded.
- R-401 Non-response, buyer: Buyer neither accepted nor disputed within the review window; funds released to the vendor.
- R-402 Non-response, vendor: Vendor added no evidence in the evidence window; the buyer's claim is upheld on the disputed units.
- R-410 Withdrawn dispute: Disputing party withdrew; its bond is released less the dispute fee.
- R-450 Bond escalation, disputes: A party that has lost three disputes in 90 days posts a doubled bond thereafter.
- R-451 Bond escalation, rejections: A vendor whose rejected units exceed 20% in a period has sampling doubled and statement release delayed to the window end.
- R-501 Terms mismatch: The claimed unit is not within the terms' standard or scope; rejected.
- R-520 Terms ambiguity: A criterion is not testable as written; it is read against the party that drafted the terms.
- R-530 Partial performance: Deliverable partially meets terms; split ruling with a stated apportionment.
- R-600 Panel decision: Ruling issued by the bonded panel on appeal; cites the rules applied.
- R-900 Rail event: A chargeback, payout failure, or account restriction on the rail suspended releases; not a determination on the merits.

## Deterministic rules

6 rules run before any model does. Each is a condition over the facts and findings of a dispute; the first that matches decides the outcome and names the reason code.

- R-305 → outcome: buyer, reason: R-305
    Facts: findings.integrity.manifest_match (boolean, false when any artifact's SHA-256 does not match its signed manifest entry). Evaluated first: an integrity failure ends the dispute regardless of other facts.
    when: {"==":[{"var":"findings.integrity.manifest_match"},false]}
- R-311 → outcome: buyer, reason: R-311
    Facts: findings.dedupe.duplicate (boolean, true when the unit's dedupe key matches a previously verified unit under the commitment). The duplicate unit alone is lost; other units are unaffected.
    when: {"==":[{"var":"findings.dedupe.duplicate"},true]}
- R-101 → outcome: buyer, reason: R-101
    Facts: facts.submission.received (boolean, true when any submission arrived before the deadline plus grace); facts.time.deadline_grace_elapsed (boolean, true when the deadline plus grace has passed). Fires when nothing was submitted and the window is over.
    when: {"and":[{"==":[{"var":"facts.submission.received"},false]},{"==":[{"var":"facts.time.deadline_grace_elapsed"},true]}]}
- R-102 → outcome: buyer, reason: R-102
    Facts: facts.submission.received (boolean); facts.time.delivered_within_window (boolean, true when the evidence timestamps fall inside the delivery window); facts.terms.late_delivery_allowed (boolean, true when the terms allow late delivery at a reduced price). Fires on late delivery the terms do not excuse.
    when: {"and":[{"==":[{"var":"facts.submission.received"},true]},{"==":[{"var":"facts.time.delivered_within_window"},false]},{"==":[{"var":"facts.terms.late_delivery_allowed"},false]}]}
- R-402 → outcome: buyer, reason: R-402
    Facts: dispute.open (boolean, true while a dispute is pending); dispute.vendor_evidence_added (boolean, true when the vendor added any evidence during the evidence window); facts.time.evidence_window_elapsed (boolean). Fires when the vendor stayed silent through the evidence window; the buyer's claim is upheld on the disputed units.
    when: {"and":[{"==":[{"var":"dispute.open"},true]},{"==":[{"var":"dispute.vendor_evidence_added"},false]},{"==":[{"var":"facts.time.evidence_window_elapsed"},true]}]}
- R-401 → outcome: vendor, reason: R-401
    Facts: dispute.buyer_acted_in_review_window (boolean, true when the buyer accepted or disputed within the review window); facts.time.review_window_elapsed (boolean). Fires when the buyer neither accepted nor disputed and the review window has lapsed; funds release to the vendor.
    when: {"and":[{"==":[{"var":"dispute.buyer_acted_in_review_window"},false]},{"==":[{"var":"facts.time.review_window_elapsed"},true]}]}

## Changelog

- 0.4.0 (2026-08-26): Initial public draft.

Machine-readable: https://recourse-mu.vercel.app/repr/json/rulebook. As served by the API: https://api.recourse.dev/v1/rulebook/0.4.0.
