Concept
A signed answer to what exactly happened.
A receipt is the signed outcome of a workflow: schema weles.receipt.current binds task, organization, origin, action, outcome, and evidence digest to a trusted signing key, and the client verifies it offline.
Definition#
When receipt issuance is configured, a terminally successful run returns a receipt: a signed payload plus signature plus key ID. verifyReceipt checks the signature against a caller-owned map of trusted key IDs and rejects unsupported schema, unknown key, invalid signature, non-JSON payload, or a mismatch between displayed fields and signed claims.
| Claim | Meaning |
|---|---|
taskId | The action-log task the receipt closes. |
organizationId | The organization the run ran for. |
origin | The exact origin that was automated. |
action | The exact action that was executed. |
outcome | The terminal outcome of the run. |
evidenceDigest | Digest of the recorded evidence for the run. |
keyId | The trusted key ID whose public key must verify the signature. |
Verification proves exactly this much#
- One trusted key signed the exact payload, and displayed claims match it.
- It does not check key revocation, certificate chains, receipt freshness, evidence availability, target-side truth, or legal sufficiency.
- Trusted-key distribution, rotation, revocation, retention, and the decision to rely on the claims belong to the caller. Never accept a verification key from the receipt it is supposed to verify.
Verify offline with the CLI#
The receipt file holds a real terminal Weles service receipt JSON; the keys file is a JSON map of trusted receipt key IDs to PEM public keys. Onboarding completion requires exactly this cryptographic verification of a real workflow receipt and its bound evidence digest.
weles onboarding verify --receipt receipt.json --keys receipt-keys.json