Completion contracts
A contract is the versioned definition of “done” for one action. Every verification names its contract, the receipt binds the contract’s digest into the signed body, and a version bump changes the digest, so the definition an old receipt was judged against stays checkable forever. This page renders from the live engine.
Checks
- refund_existsrequired
- amount_matchesrequired
- currency_matchesrequired
- customer_matchescorroboration
- status_succeededrequired
- not_duplicaterequired
A required check that cannot run holds safe_to_claim_complete at false. Optional corroboration may skip without blocking.
Provider states
- final:
- canceled, failed, succeeded
- pending:
- pending, requires_action
- reversible:
- succeeded
Evidence freshness
- finalized:
- re-verify within 24h
- indeterminate:
- re-verify within 6h
- pending_finality:
- re-verify within 1h
- unreachable:
- re-verify within 30m
An unrecognized provider status derives lifecycle=indeterminate, never finalized.
currency_matches and not_duplicate are required. When the system of record cannot supply a comparable currency, or cannot be checked for duplicates, the check skips and safe_to_claim_complete stays false rather than overclaiming.
customer_matches is optional corroboration. It skips without blocking when the source of truth exposes no customer identity.
Duplicates correlate on the operation reference the agent stamps into refund metadata, plus Postcept's own cross-charge operation index.
Checks
- subscription_existsrequired
- customer_matchescorroboration
- is_cancelledrequired
A required check that cannot run holds safe_to_claim_complete at false. Optional corroboration may skip without blocking.
Provider states
- final:
- canceled
- pending:
- pending_cancellation
Evidence freshness
- finalized:
- re-verify within 24h
- indeterminate:
- re-verify within 6h
- pending_finality:
- re-verify within 6h
- unreachable:
- re-verify within 30m
A canceled subscription cannot un-cancel. A replacement is a new subscription.
A cancellation scheduled for the period end is pending_cancellation: real, not final, and never claimable as complete until the period ends.
Checks
- ticket_existsrequired
- status_matchesrequired
- requester_matchescorroboration
A required check that cannot run holds safe_to_claim_complete at false. Optional corroboration may skip without blocking.
Provider states
- final:
- closed, solved
- reversible:
- solved
Evidence freshness
- finalized:
- re-verify within 24h
- indeterminate:
- re-verify within 6h
- pending_finality:
- re-verify within 6h
- unreachable:
- re-verify within 30m
requester_matches only runs when the claim names a requester.
The live registry is at /v1/contracts. An unrecognized provider state never derives a finalized verification: it derives indeterminate and degrades the connector, so drift makes the engine less confident, never more.