WCAP — the Work Contract and Assurance Protocol

A versioned protocol for describing work, pinning how it will be judged, and recording independently produced evidence of the outcome.

Work Contracts

A Work Contract is the unit of record. It carries the task category, the parties, the acceptance criteria and the pinned verification suite digest. Contracts are identified by content-addressed hashes, so the document of record cannot drift silently.

Lifecycle state machines

Five orthogonal machines govern a contract's life. Each transition is validated; an illegal move is refused with the legal next states named — the same set the API serves at GET /v1/contracts/:id/transitions.

MachinePathPurpose
AuthorisationDraft → Specified → AuthorisedScope agreed before work starts
ExecutionUnassigned → Assigned → Executing → Submitted (or Failed)Work delivery state
VerificationPending → Probing → Verifying → Complete (or Exhausted)Independent evaluation state — Complete is terminal
AcceptanceUndecided → Accepted / Rejected / DisputedThe human decision, with dispute remediation edges
SettlementMandateIssued → … → Settled / RefundedOptional settlement chain

Bound verification

A probe binds to the newest submission by digest — a verdict always names the exact artefact it judged. Binding criteria that fail on the baseline make the contract inadmissible before any submission exists, so a contract can be rejected on its own terms, not just on delivered work.

Evidence, not badges

Versioned schemas

WCAP schemas and the reference implementation live in the cay-pax/testudax repository — packages/wcap holds the lifecycle tables and schemas used by the service.