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.
| Machine | Path | Purpose |
|---|---|---|
| Authorisation | Draft → Specified → Authorised | Scope agreed before work starts |
| Execution | Unassigned → Assigned → Executing → Submitted (or Failed) | Work delivery state |
| Verification | Pending → Probing → Verifying → Complete (or Exhausted) | Independent evaluation state — Complete is terminal |
| Acceptance | Undecided → Accepted / Rejected / Disputed | The human decision, with dispute remediation edges |
| Settlement | MandateIssued → … → Settled / Refunded | Optional 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
- Signed bundles — DSSE envelopes over an aggregate verdict statement,
signed by the platform key (
prod-2026-11), verifiable offline. - Audit export — every event on the contract, hash-chained, with a platform-signed head claim.
- Cost actuals — probe spend metered as vCPU-seconds with platform provenance, recorded per run.
- Scorecards — reliability and cost-per-accepted derived from recorded verdicts only; no self-reported numbers.
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.