{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-factory-registration-token-broker.v1.schema.json",
  "title": "REITs runner factory one-time registration token broker contract",
  "type": "object",
  "required": ["schemaVersion", "status", "observedAt", "truth", "implementation", "operations", "stateMachine", "invariants", "verification", "productionPrerequisites"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-factory-registration-token-broker/v1" },
    "status": { "const": "ADAPTER_IMPLEMENTED_NOT_CONFIGURED" },
    "observedAt": { "type": "string", "format": "date-time" },
    "truth": {
      "type": "object",
      "required": ["brokerCredentialConfigured", "runtimeDriverConfigured", "readinessGateSatisfied", "liveHandles", "giteaTokenCallsExecuted", "runtimeTokensIssued", "runtimeTokensConsumed", "runtimeTokensDestroyed", "tokenValuesRecorded", "tokenDigestsRecorded", "externalCallsExecuted", "giteaWritesExecuted", "paidResourcesCreated", "deploymentPermitted"],
      "properties": {
        "brokerCredentialConfigured": { "const": false },
        "runtimeDriverConfigured": { "const": false },
        "readinessGateSatisfied": { "const": false },
        "liveHandles": { "const": 0 },
        "giteaTokenCallsExecuted": { "const": 0 },
        "runtimeTokensIssued": { "const": 0 },
        "runtimeTokensConsumed": { "const": 0 },
        "runtimeTokensDestroyed": { "const": 0 },
        "tokenValuesRecorded": { "const": 0 },
        "tokenDigestsRecorded": { "const": 0 },
        "externalCallsExecuted": { "const": 0 },
        "giteaWritesExecuted": { "const": 0 },
        "paidResourcesCreated": { "const": false },
        "deploymentPermitted": { "const": false }
      },
      "additionalProperties": false
    },
    "implementation": {
      "type": "object",
      "required": ["adapter", "testDriver", "runtimeDriver", "giteaVersion", "operationId", "endpoint", "successStatus", "tokenTransport", "handleIdSource", "handleTtlSeconds", "maxTokenBytes", "singleConsumer", "zeroizeOnConsumerExit", "tokenValueRecorded", "tokenDigestRecorded"],
      "properties": {
        "adapter": { "const": "ops/runner-factory/registration-token-broker.mjs" },
        "testDriver": { "const": "ops/runner-factory/memory-gitea-token-driver.mjs" },
        "runtimeDriver": { "const": "NOT_CONFIGURED" },
        "giteaVersion": { "const": "1.25.4" },
        "operationId": { "const": "orgCreateRunnerRegistrationToken" },
        "endpoint": { "const": "POST /api/v1/orgs/reits/actions/runners/registration-token" },
        "successStatus": { "const": 200 },
        "tokenTransport": { "const": "RESPONSE_HEADER_TOKEN_AS_MUTABLE_BYTES" },
        "handleIdSource": { "const": "INDEPENDENT_RANDOM_128_BIT" },
        "handleTtlSeconds": { "const": 30 },
        "maxTokenBytes": { "const": 512 },
        "singleConsumer": { "const": true },
        "zeroizeOnConsumerExit": { "const": true },
        "tokenValueRecorded": { "const": false },
        "tokenDigestRecorded": { "const": false }
      },
      "additionalProperties": false
    },
    "operations": { "type": "array", "minItems": 4, "maxItems": 4 },
    "stateMachine": { "type": "array", "minItems": 7, "maxItems": 7 },
    "invariants": { "type": "array", "minItems": 12, "maxItems": 12 },
    "verification": {
      "type": "object",
      "required": ["status", "fixtures", "allowedTransitions", "deniedTransitions", "requestAndScopeDenials", "driverAndResponseDenials", "lifecycleDenials", "handlesIssued", "handlesConsumed", "handlesDestroyedOrExpired", "tokenValuesRecorded", "tokenDigestsRecorded", "externalCallsExecuted"],
      "properties": {
        "status": { "const": "PASS_TEST_DRIVER_ONLY" },
        "fixtures": { "const": 22 },
        "allowedTransitions": { "const": 6 },
        "deniedTransitions": { "const": 16 },
        "requestAndScopeDenials": { "const": 3 },
        "driverAndResponseDenials": { "const": 7 },
        "lifecycleDenials": { "const": 6 },
        "handlesIssued": { "const": 6 },
        "handlesConsumed": { "const": 3 },
        "handlesDestroyedOrExpired": { "const": 6 },
        "tokenValuesRecorded": { "const": 0 },
        "tokenDigestsRecorded": { "const": 0 },
        "externalCallsExecuted": { "const": 0 }
      },
      "additionalProperties": false
    },
    "productionPrerequisites": { "type": "array", "minItems": 6, "maxItems": 6 }
  },
  "additionalProperties": false
}
