Documentation Index
Fetch the complete documentation index at: https://docs.manthan.systems/llms.txt
Use this file to discover all available pages before exploring further.
What is an attestation?
An attestation is the signed record of a governance decision. It is the output ofexecuteFromSignals and contains everything needed to independently verify the decision - by any party, at any time, without access to your infrastructure.
Attestation structure
Field reference
| Field | Type | Description |
|---|---|---|
executionId | UUID | Unique identifier for this specific execution event |
execution_fingerprint | SHA-256 hex | sha256(canonicalize(signals)) - the replay protection key |
policyId | string | Which policy governed this decision |
policyVersion | semver | Which version of the policy |
schemaVersion | semver | Schema version used for evaluation |
runtimeVersion | semver | Runtime version that produced this attestation |
runtimeHash | SHA-256 hex | Hash of the runtime itself - pins the exact code |
signalsHash | SHA-256 hex | Hash of the input signals |
decision.action | string | The governance outcome |
decision.requires_override | boolean | Whether human override is required before execution |
decision.reason | string | Human-readable explanation of the decision |
execution_state | string | "completed" or "pending_override" |
signature | base64 | Ed25519 signature over the canonical payload |
executionId vs execution_fingerprint
These are semantically distinct:| Field | What it identifies | How it’s generated |
|---|---|---|
executionId | This specific execution event | crypto.randomUUID() - random |
execution_fingerprint | The content of the execution inputs | sha256(canonicalize(signals)) - deterministic |
execution_fingerprint is the replay protection key - same signals always produce the same fingerprint, and the second submission is rejected. The executionId is unique per event even if signals differ.
Verifying an attestation
Storing attestations
Attestations are plain JSON - store them in any database. They remain verifiable forever as long as you keep the public key.@parmanasystems/audit-db.
Decisions that require override
Whendecision.requires_override is true, the execution_state is "pending_override" and a human approver must explicitly sign off before execution proceeds.
See also
- Portable Verification - how attestations enable independent verification
- Replay Protection - how
execution_fingerprintprevents duplicate execution - Audit DB - PostgreSQL-backed attestation storage