Skip to content
Postcept
Reference

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.

refund@1.2.0action: refund

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.

cancellation@1.3.0action: cancellation

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.

ticket_resolution@1.2.0action: ticket

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.