SpoolisDocs

Spoolis docs

Acceptance lifecycle

Follow an Outcome from a frozen agreement through evidence, judgment, provisional acceptance, and final acceptance.

The lifecycle as a state machine

  1. Claimed: a Spool is created, and its criteria, earning rule, and parties are frozen behind agreement_hash.
  2. Evidence complete: required_evidence states roll up into evidence_completeness.
  3. Judged: a verification run produces condition_results with the method, verifier_id, and verifier_version. Under bring your own judge, the customer's judge produces these results.
  4. Result: the Outcome is pass, partial, fail, or uncertain, including per-unit results under units.
  5. Provisionally accepted: receipt status is active and the current time is before review.window_ends_at.
  6. Final: the review window has elapsed and status remains active.

Branches

  • Rejected: fail, represented for consumers by retryList.
  • Review request: an rvq_ object routes uncertain work or work inside its review window to a named reviewer.
  • Dispute: a dsp_ object records the reason and counter-evidence, marks policy-defined value as not currently final or payable, and keeps the outcome disputed while open. It does not restrict money.
  • Corrected or superseded: a new receipt supersedes the original with verification_defect, appeal_reversal, review_decision, or dispute_resolution. The original is never rewritten.
  • Human confirmation: the condition records human_confirmed and confirmed_by. A changed verdict produces a successor receipt.

Commercial states

The engine uses these exact state values. payable_under_policy is derived and describes the record under policy, never a balance.

StatePermitted next states
reportedmatched unmatched uncertain
matchedaccepted uncertain disputed
unmatchedrejected uncertain disputed
uncertainmatched unmatched rejected disputed
acceptedprovisional final disputed corrected revoked
rejecteddisputed corrected revoked
provisionalfinal disputed corrected revoked
disputedaccepted rejected corrected revoked
finalcorrected revoked payable_under_policy
correctedaccepted rejected provisional final revoked
revokedNone
payable_under_policydisputed corrected revoked

Composed acceptance

A Spool has several mandatory or optional conditions. Each uses a deterministic, AI-assisted, human-confirmed, or external judge, and the published aggregation policy combines them. Today that policy is all_mandatory_pass.

Time-windowed facts such as "not reopened for 72 hours," duplicate detection across Outcomes, and OR branches other than supersession are not shipped as native condition kinds. Today the customer's judge computes those facts and returns pass, fail, or uncertain per condition.

Consumer checklist

  1. Verify the receipt.
  2. Read acceptanceState.
  3. Call requireOutcome with require_final when money or an irreversible step depends on final acceptance.
Acceptance lifecycle · Spoolis