{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-factory-receipt-signer.v1.schema.json",
  "title": "REITs runner factory KMS receipt signer adapter",
  "type": "object",
  "required": ["schemaVersion", "status", "observedAt", "truth", "implementation", "operations", "stateMachine", "invariants", "verification", "productionPrerequisites"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-factory-receipt-signer/v1" },
    "status": { "const": "ADAPTER_IMPLEMENTED_NOT_CONFIGURED" },
    "observedAt": { "type": "string", "format": "date-time" },
    "truth": {
      "type": "object",
      "required": ["kmsKeyCreated", "iamRoleConfigured", "adapterConfigured", "readinessGateSatisfied", "runtimeReceipts", "kmsGetPublicKeyCallsExecuted", "kmsSignCallsExecuted", "verificationDrillsObserved", "paidResourcesCreated", "deploymentPermitted"],
      "properties": {
        "kmsKeyCreated": { "const": false },
        "iamRoleConfigured": { "const": false },
        "adapterConfigured": { "const": false },
        "readinessGateSatisfied": { "const": false },
        "runtimeReceipts": { "const": 0 },
        "kmsGetPublicKeyCallsExecuted": { "const": 0 },
        "kmsSignCallsExecuted": { "const": 0 },
        "verificationDrillsObserved": { "const": 0 },
        "paidResourcesCreated": { "const": false },
        "deploymentPermitted": { "const": false }
      },
      "additionalProperties": false
    },
    "implementation": {
      "type": "object",
      "required": ["adapter", "testDriver", "runtimeDriver", "keySelection", "keyUsage", "keySpec", "messageType", "signingAlgorithm", "signatureEncoding", "canonicalization", "maxCanonicalBytes", "publicKeyPinnedBy", "privateKeyRecordedInEvidence"],
      "properties": {
        "adapter": { "const": "ops/runner-factory/receipt-signer.mjs" },
        "testDriver": { "const": "ops/runner-factory/memory-kms-driver.mjs" },
        "runtimeDriver": { "const": "NOT_CONFIGURED" },
        "keySelection": { "const": "EXACT_KEY_ARN" },
        "keyUsage": { "const": "SIGN_VERIFY" },
        "keySpec": { "const": "ECC_NIST_P256" },
        "messageType": { "const": "DIGEST" },
        "signingAlgorithm": { "const": "ECDSA_SHA_256" },
        "signatureEncoding": { "const": "ASN1_DER_BASE64" },
        "canonicalization": { "const": "recursive-key-order-json" },
        "maxCanonicalBytes": { "const": 16384 },
        "publicKeyPinnedBy": { "const": "SHA256_SPKI" },
        "privateKeyRecordedInEvidence": { "const": false }
      },
      "additionalProperties": false
    },
    "operations": { "type": "array", "minItems": 3, "maxItems": 3 },
    "stateMachine": { "type": "array", "minItems": 5, "maxItems": 5 },
    "invariants": { "type": "array", "minItems": 10, "maxItems": 10 },
    "verification": {
      "type": "object",
      "required": ["status", "fixtures", "allowedTransitions", "deniedTransitions", "keyPolicyDenials", "driverFailureDenials", "responseMismatchDenials", "tamperAndChainDenials", "signedReceipts", "verifiedChains", "secretExposureCount", "externalCallsExecuted"],
      "properties": {
        "status": { "const": "PASS_TEST_DRIVER_ONLY" },
        "fixtures": { "const": 20 },
        "allowedTransitions": { "const": 5 },
        "deniedTransitions": { "const": 15 },
        "keyPolicyDenials": { "const": 5 },
        "driverFailureDenials": { "const": 2 },
        "responseMismatchDenials": { "const": 3 },
        "tamperAndChainDenials": { "const": 5 },
        "signedReceipts": { "const": 2 },
        "verifiedChains": { "const": 1 },
        "secretExposureCount": { "const": 0 },
        "externalCallsExecuted": { "const": 0 }
      },
      "additionalProperties": false
    },
    "productionPrerequisites": { "type": "array", "minItems": 6, "maxItems": 6 }
  },
  "additionalProperties": false
}
