Skip to main content

TypeScript interface

interface ExecutionAttestation {
  // Identity
  executionId: string;
  execution_fingerprint: string;

  // Policy
  policyId: string;
  policyVersion: string;
  schemaVersion: string;

  // Runtime
  runtimeVersion: string;
  runtimeHash: string;

  // Decision
  decision: {
    action: string;
    requires_override: boolean;
    reason: string;
  };
  execution_state: "completed" | "pending_override";

  // Hashes
  signalsHash: string;
  bundleHash: string;
  manifestHash: string;
  releaseManifestHash: string;
  evaluatorHash: string;           // deprecated alias
  evaluatorSemanticHash: string;
  evaluatorArtifactHash: string;

  // Trust
  manifestSignature: string;
  trustRootVersion: string;
  signerKeyId: string;

  // Signature
  signature: string;
}

Field reference

Identity

FieldTypeDescription
executionIdstringBusiness transaction identifier provided by the caller. Unique per execution. Used as the replay protection key.
execution_fingerprintstringSHA-256 of canonical { policyId, policyVersion, signals }. The semantic identity of the decision — identical for two executions with the same policy and signals regardless of executionId.

Policy

FieldTypeDescription
policyIdstringIdentifier of the policy that governed the decision.
policyVersionstringVersion of the policy bundle.
schemaVersionstringPolicy schema format version. Used during verification to check compatibility.

Runtime

FieldTypeDescription
runtimeVersionstringSemver version of the governance server.
runtimeHashstringSHA-256 of the server binary. Matches /health and /runtime/manifest.

Decision

FieldTypeDescription
decision.actionstringPolicy outcome: "approve", "reject", or a custom action string (e.g., "manual_review", "hold", "clinical_review").
decision.requires_overridebooleanWhether human override is required before the action may proceed.
decision.reasonstringHuman-readable reason from the matched policy rule.
execution_state"completed" | "pending_override""completed" when the action may proceed. "pending_override" when blocked pending human override.

Hashes

FieldTypeDescription
signalsHashstringSHA-256 of canonical signals. Equal to execution_fingerprint in current implementations.
bundleHashstringContent hash of the policy bundle. Uniquely identifies the compiled rule set.
manifestHashstringSHA-256 of bundle.manifest.json.
releaseManifestHashstringSHA-256 of artifacts/release-manifest.json.
evaluatorSemanticHashstringHash of the policy evaluator’s logic semantics.
evaluatorArtifactHashstringHash of the evaluator binary artifact.
evaluatorHashstringDeprecated alias for evaluatorSemanticHash. Present for backward compatibility.

Trust

FieldTypeDescription
manifestSignaturestringEd25519 signature over the bundle manifest, produced at bundle compile time.
trustRootVersionstringVersion of the trust root that anchors the signing key.
signerKeyIdstringKey ID of the Ed25519 signing key. Use to look up the correct public key for verification, especially after key rotation.

Signature

FieldTypeDescription
signaturestringEd25519 signature over canonicalizeForSigning(token, SIGNING_DOMAINS.token). This is the root of trust for the entire attestation.

JSON example

{
  "executionId": "claim-CLM-2024-00441",
  "execution_fingerprint": "a3f8d2c1e4b5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1",
  "policyId": "claims-approval",
  "policyVersion": "1.0.0",
  "schemaVersion": "1.0.0",
  "runtimeVersion": "1.0.0",
  "runtimeHash": "sha256:c9d4e5f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9",
  "decision": {
    "action": "approve",
    "requires_override": false,
    "reason": "Approved: gold tier within standard limit."
  },
  "execution_state": "completed",
  "signalsHash": "a3f8d2c1e4b5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1",
  "bundleHash": "sha256:bundle1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0",
  "manifestHash": "sha256:manifest1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9",
  "manifestSignature": "base64EncodedSignatureHere",
  "trustRootVersion": "2026-01",
  "signerKeyId": "parmanasystems-root-2026",
  "evaluatorHash": "sha256:evaluator1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9",
  "evaluatorSemanticHash": "sha256:semantic1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9",
  "evaluatorArtifactHash": "sha256:artifact1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9",
  "releaseManifestHash": "sha256:release1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0",
  "signature": "ed25519SignatureBase64EncodedHere"
}

Canonical payload

The signature field is an Ed25519 signature over the canonical form of the attestation payload. The canonical form is produced by:
import { canonicalizeForSigning, SIGNING_DOMAINS } from "@parmanasystems/core";

const canonical = canonicalizeForSigning(token, SIGNING_DOMAINS.token);
// Returns a deterministic JSON string with sorted keys and a domain separator prefix
Two attestations with identical inputs will have identical canonical payloads and therefore identical signatures (given the same signing key).