{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-factory-audit-sink.v1.schema.json",
  "title": "REITs append-only Runner Factory audit journal dossier",
  "type": "object",
  "required": ["schemaVersion", "status", "observedAt", "scope", "truth", "implementation", "operations", "driverCalls", "stateMachine", "invariants", "verification", "failureClasses", "productionPrerequisites", "fixtureRegistry", "discovery"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-factory-audit-sink/v1" },
    "status": { "const": "ADAPTER_IMPLEMENTED_NOT_CONFIGURED" },
    "observedAt": { "type": "string", "format": "date-time" },
    "scope": {
      "type": "object",
      "required": ["partition", "entryModel", "successSeal", "failureSeal", "mutationPolicy"],
      "properties": {
        "partition": { "const": "ONE_JOURNAL_PER_PLAN_AND_JOB_ATTEMPT" },
        "entryModel": { "const": "DUAL_HASH_CHAIN_SIGNED_RECEIPTS_PLUS_TERMINAL_FAILURE" },
        "successSeal": { "const": "EXACT_F9_REPLACEMENT_RECEIPT" },
        "failureSeal": { "const": "ENUMERATED_CONTROLLER_FACTS_AFTER_RECEIPT_RECONCILIATION" },
        "mutationPolicy": { "const": "CREATE_AND_CONDITIONAL_APPEND_ONLY_NO_UPDATE_OR_DELETE" }
      },
      "additionalProperties": false
    },
    "truth": {
      "type": "object",
      "required": ["runtimeDriverConfigured", "durableJournalCreated", "iamRoleConfigured", "readinessGateSatisfied", "liveJournals", "runtimeEntries", "runtimeSuccessSeals", "runtimeFailureSeals", "externalReadsExecuted", "externalWritesExecuted", "secretValuesRecorded", "paidResourcesCreated", "deploymentPermitted"],
      "properties": {
        "runtimeDriverConfigured": { "const": false }, "durableJournalCreated": { "const": false }, "iamRoleConfigured": { "const": false }, "readinessGateSatisfied": { "const": false },
        "liveJournals": { "const": 0 }, "runtimeEntries": { "const": 0 }, "runtimeSuccessSeals": { "const": 0 }, "runtimeFailureSeals": { "const": 0 },
        "externalReadsExecuted": { "const": 0 }, "externalWritesExecuted": { "const": 0 }, "secretValuesRecorded": { "const": 0 },
        "paidResourcesCreated": { "const": false }, "deploymentPermitted": { "const": false }
      },
      "additionalProperties": false
    },
    "implementation": {
      "type": "object",
      "required": ["adapter", "testDriver", "fixtureRegistry", "verifier", "runtimeDriver", "receiptVerifier", "writerIdentity", "canonicalization", "digestAlgorithm"],
      "properties": {
        "adapter": { "const": "ops/runner-factory/audit-sink.mjs" },
        "testDriver": { "const": "ops/runner-factory/memory-audit-driver.mjs" },
        "fixtureRegistry": { "const": "ops/runner-factory/audit-sink-fixtures.json" },
        "verifier": { "const": "scripts/verify-runner-factory-audit-sink.mjs" },
        "runtimeDriver": { "const": "NOT_CONFIGURED" },
        "receiptVerifier": { "const": "PINNED_KMS_PUBLIC_KEY_REQUIRED_AT_RUNTIME" },
        "writerIdentity": { "const": "EXACT_CONTROLLER_IAM_ROLE_REQUIRED_AT_RUNTIME" },
        "canonicalization": { "const": "recursive-key-order-json" },
        "digestAlgorithm": { "const": "SHA-256" }
      },
      "additionalProperties": false
    },
    "operations": { "type": "array", "minItems": 5, "maxItems": 5 },
    "driverCalls": { "type": "array", "minItems": 5, "maxItems": 5 },
    "stateMachine": { "type": "array", "minItems": 10, "maxItems": 10 },
    "invariants": { "type": "array", "minItems": 18, "maxItems": 18, "items": { "type": "string", "minLength": 12 } },
    "verification": {
      "type": "object",
      "required": ["status", "fixtures", "allowedTransitions", "deniedTransitions", "operations", "driverCallsModeled", "hashChainsVerified", "ambiguousWriteRecoveryCases", "scopeAndSignatureDenials", "terminalConflictDenials", "secretValuesRecorded", "externalCallsExecuted"],
      "properties": {
        "status": { "const": "PASS_TEST_DRIVER_ONLY" }, "fixtures": { "const": 36 }, "allowedTransitions": { "const": 10 }, "deniedTransitions": { "const": 26 },
        "operations": { "const": 5 }, "driverCallsModeled": { "const": 5 }, "hashChainsVerified": { "const": 2 }, "ambiguousWriteRecoveryCases": { "const": 2 },
        "scopeAndSignatureDenials": { "const": 8 }, "terminalConflictDenials": { "const": 4 }, "secretValuesRecorded": { "const": 0 }, "externalCallsExecuted": { "const": 0 }
      },
      "additionalProperties": false
    },
    "failureClasses": { "type": "array", "minItems": 6, "maxItems": 6 },
    "productionPrerequisites": { "type": "array", "minItems": 7, "maxItems": 7, "items": { "type": "string", "minLength": 12 } },
    "fixtureRegistry": {
      "type": "object",
      "required": ["schemaVersion", "fixedTime", "cases"],
      "properties": {
        "schemaVersion": { "const": "developer.reits.tech/runner-factory-audit-sink-fixtures/v1" },
        "fixedTime": { "const": "2026-07-20T16:30:00Z" },
        "cases": { "type": "array", "minItems": 36, "maxItems": 36 }
      },
      "additionalProperties": false
    },
    "discovery": {
      "type": "object",
      "required": ["lifecycle", "controller", "workbench", "schema"],
      "properties": {
        "lifecycle": { "const": "/api/runner-factory" },
        "controller": { "const": "/api/runner-factory/controller" },
        "workbench": { "const": "/release-foundation#audit-journal" },
        "schema": { "const": "/schemas/runner-factory-audit-sink.v1.schema.json" }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
