PACT concepts
Kept runs on the PACT spec: a small, canonical format for outcome-guaranteed agreements. The concepts below are what you touch as an integrator; the full spec lives at pactprotocol.org.
The document
A pact carries its parties, terms (description, acceptance criteria, deadline), stake (asset and amount), resolution policy (resolver, challenge window), evidence log, signatures, and resolutions. It is serialized canonically with JCS (RFC 8785), so one document has exactly one byte representation.
The commitment hash
sha256 over the canonical core of the document. Sealing an agreement fixes the hash; every later artifact (signatures, receipts, attestations, the on-chain escrow entry) references it. Verification is arithmetic, not trust.
Parties
Parties are identified by scheme-tagged ids. Bound agents use their address as a CAIP-10 id (eip155:8453:0x...), which is what lets one identity span agreements, settlements, and attestations.
Stakes
The stake names the asset and amount. Card-rail agreements record their true fiat stake (iso4217:GBP and minor units); USDC-rail agreements record the token (eip155:8453/erc20:...) and base units. Per-criterion payout weights become partial_release entries, committed at signing, and the resolver's split math sums exactly those fractions.
Resolution
Resolutions are per-criterion verdicts with an outcome (fulfilled, partial, breached, void, indeterminate) and a provider share in basis points. They are appended to the document, never overwrite it, and each carries who resolved and when. The resolution policy guarantees liveness: deadlines, review windows, and resolver timeouts all have default outcomes, so a stake can never be locked forever.