{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-controller-dossier-store-adapter-composition.v1.schema.json",
  "title": "D05 adapter factory composition dry-boot contract",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "status", "evaluatedAt", "mode", "program", "summary", "upstreamConfigurationBundleContract", "adapterCompositionContract", "productionEvaluation", "factoryMatrix", "forwardStepMatrix", "compensationMatrix", "receiptFieldMatrix", "fixtureResults", "selectedRollbackTrace", "selectedContainmentTrace", "decisionCodes", "invariants", "safetyTruth", "discovery"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-controller-dossier-store-adapter-composition/v1" },
    "status": { "enum": ["ADAPTER_COMPOSITION_CONTRACT_BOUND_PRODUCTION_INPUT_ABSENT", "UPSTREAM_CONFIGURATION_BUNDLE_CONTRACT_UNAVAILABLE"] },
    "evaluatedAt": { "type": "string", "format": "date-time" },
    "mode": { "const": "PURE_TEST_ONLY_ADAPTER_COMPOSITION_TRANSACTION_NO_PRODUCTION_FACTORY_NO_PORT_CALLS_NO_EXTERNAL_EFFECTS" },
    "program": { "$ref": "#/$defs/program" },
    "summary": { "$ref": "#/$defs/summary" },
    "upstreamConfigurationBundleContract": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/upstreamContract" }] },
    "adapterCompositionContract": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/contract" }] },
    "productionEvaluation": { "$ref": "#/$defs/evaluation" },
    "factoryMatrix": { "type": "array", "minItems": 4, "maxItems": 4, "items": { "$ref": "#/$defs/factory" } },
    "forwardStepMatrix": { "type": "array", "minItems": 11, "maxItems": 11, "items": { "$ref": "#/$defs/forwardStep" } },
    "compensationMatrix": { "type": "array", "minItems": 5, "maxItems": 5, "items": { "$ref": "#/$defs/compensationStep" } },
    "receiptFieldMatrix": { "type": "array", "minItems": 20, "maxItems": 20, "items": { "$ref": "#/$defs/field" } },
    "fixtureResults": { "type": "array", "minItems": 44, "maxItems": 44, "items": { "$ref": "#/$defs/fixture" } },
    "selectedRollbackTrace": { "$ref": "#/$defs/fixture" },
    "selectedContainmentTrace": { "$ref": "#/$defs/fixture" },
    "decisionCodes": { "type": "array", "minItems": 44, "maxItems": 44, "uniqueItems": true, "items": { "type": "string" } },
    "invariants": { "type": "array", "minItems": 34, "maxItems": 34, "uniqueItems": true, "items": { "type": "string" } },
    "safetyTruth": { "$ref": "#/$defs/safetyTruth" },
    "discovery": { "$ref": "#/$defs/discovery" }
  },
  "$defs": {
    "program": {
      "type": "object", "additionalProperties": false,
      "required": ["acceptedKnives", "totalKnives", "currentKnife", "closeoutCut", "remainingIncludingCurrent", "remainingAfterAcceptance", "d05Accepted"],
      "properties": { "acceptedKnives": { "const": 4 }, "totalKnives": { "const": 36 }, "currentKnife": { "const": "D05" }, "closeoutCut": { "const": 20 }, "remainingIncludingCurrent": { "const": 32 }, "remainingAfterAcceptance": { "const": 31 }, "d05Accepted": { "const": false } }
    },
    "summary": {
      "type": "object", "additionalProperties": false,
      "required": ["upstreamConfigurationBundleContractAvailable", "compositionContractBound", "factoriesRequired", "productionFactoryBindings", "selfTestsRequired", "productionSelfTestsExecuted", "forwardSteps", "compensationSteps", "receiptFields", "productionCompositionReceipts", "fixtureCases", "fixtureAssertionsPassed", "fixtureReady", "fixtureRolledBack", "fixtureContained", "fixtureDenied", "productionLoadersConfigured", "externalReadsExecuted", "externalWritesExecuted", "portCallsExecuted", "resourcesCreated", "provisioningPermitted", "decision"],
      "properties": { "upstreamConfigurationBundleContractAvailable": { "type": "boolean" }, "compositionContractBound": { "type": "boolean" }, "factoriesRequired": { "const": 4 }, "productionFactoryBindings": { "const": 0 }, "selfTestsRequired": { "const": 8 }, "productionSelfTestsExecuted": { "const": 0 }, "forwardSteps": { "const": 11 }, "compensationSteps": { "const": 5 }, "receiptFields": { "const": 20 }, "productionCompositionReceipts": { "const": 0 }, "fixtureCases": { "const": 44 }, "fixtureAssertionsPassed": { "const": 44 }, "fixtureReady": { "const": 1 }, "fixtureRolledBack": { "const": 8 }, "fixtureContained": { "const": 1 }, "fixtureDenied": { "const": 34 }, "productionLoadersConfigured": { "const": 0 }, "externalReadsExecuted": { "const": 0 }, "externalWritesExecuted": { "const": 0 }, "portCallsExecuted": { "const": 0 }, "resourcesCreated": { "const": 0 }, "provisioningPermitted": { "const": false }, "decision": { "type": "string", "minLength": 1 } }
    },
    "upstreamContract": {
      "type": "object", "additionalProperties": false,
      "required": ["id", "contentDigest", "sourceRevision", "productionReady", "executable"],
      "properties": { "id": { "type": "string" }, "contentDigest": { "$ref": "#/$defs/digest" }, "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" }, "productionReady": { "const": false }, "executable": { "const": false } }
    },
    "contract": {
      "type": "object", "additionalProperties": false,
      "required": ["id", "contentDigest", "canonicalBytes", "subject", "productionReady", "executable"],
      "properties": { "id": { "type": "string" }, "contentDigest": { "$ref": "#/$defs/digest" }, "canonicalBytes": { "type": "integer", "minimum": 1 }, "subject": { "type": "object" }, "productionReady": { "const": false }, "executable": { "const": false } }
    },
    "evaluation": {
      "type": "object", "additionalProperties": false,
      "required": ["code", "terminal", "failedStage", "factoriesConstructed", "selfTestsPassed", "forwardStepsExecuted", "compensationStepsExecuted", "handlesDisposed", "scopeClosed", "productionReady"],
      "properties": { "code": { "type": "string" }, "terminal": { "enum": ["DRY_BOOT_READY_FIXTURE", "ROLLED_BACK_FIXTURE", "CONTAINED_FIXTURE", "DENIED"] }, "failedStage": { "type": ["string", "null"] }, "factoriesConstructed": { "type": "integer", "minimum": 0, "maximum": 4 }, "selfTestsPassed": { "type": "integer", "minimum": 0, "maximum": 8 }, "forwardStepsExecuted": { "type": "integer", "minimum": 0, "maximum": 11 }, "compensationStepsExecuted": { "type": "integer", "minimum": 0, "maximum": 5 }, "handlesDisposed": { "type": "integer", "minimum": 0, "maximum": 4 }, "scopeClosed": { "type": "boolean" }, "productionReady": { "const": false } }
    },
    "factory": {
      "type": "object", "additionalProperties": false,
      "required": ["ordinal", "factoryId", "adapterId", "name", "owner", "configurationSlots", "operations", "productionFactoryBinding", "state", "status", "constructed", "selfTestsPassed"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 4 }, "factoryId": { "pattern": "^FACTORY-0[1-4]$" }, "adapterId": { "pattern": "^ADAPTER-0[1-4]$" }, "name": { "type": "string" }, "owner": { "type": "string" }, "configurationSlots": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "string" } }, "operations": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "string" } }, "productionFactoryBinding": { "type": "null" }, "state": { "const": "CLOSED" }, "status": { "const": "PRODUCTION_FACTORY_BINDING_ABSENT" }, "constructed": { "const": false }, "selfTestsPassed": { "const": 0 } }
    },
    "forwardStep": {
      "type": "object", "additionalProperties": false,
      "required": ["ordinal", "step", "phase", "productionObserved"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 11 }, "step": { "type": "string" }, "phase": { "type": "string" }, "productionObserved": { "const": false } }
    },
    "compensationStep": {
      "type": "object", "additionalProperties": false,
      "required": ["ordinal", "step", "direction", "productionObserved"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 5 }, "step": { "type": "string" }, "direction": { "const": "REVERSE" }, "productionObserved": { "const": false } }
    },
    "field": {
      "type": "object", "additionalProperties": false,
      "required": ["ordinal", "field", "classification", "observed"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 20 }, "field": { "type": "string" }, "classification": { "enum": ["DIGEST_BINDING", "CRYPTO_BINDING", "TIME_BINDING", "TRANSACTION_BINDING", "IDENTITY_BINDING"] }, "observed": { "const": false } }
    },
    "fixture": {
      "type": "object", "additionalProperties": false,
      "required": ["ordinal", "id", "scenario", "expectedCode", "actualCode", "terminal", "passed", "failedStage", "factoriesConstructed", "selfTestsPassed", "forwardStepsExecuted", "compensationStepsExecuted", "handlesDisposed", "scopeClosed", "productionReady"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 44 }, "id": { "pattern": "^DAC-0(0[1-9]|[1-3][0-9]|4[0-4])$" }, "scenario": { "type": "string" }, "expectedCode": { "type": "string" }, "actualCode": { "type": "string" }, "terminal": { "enum": ["DRY_BOOT_READY_FIXTURE", "ROLLED_BACK_FIXTURE", "CONTAINED_FIXTURE", "DENIED"] }, "passed": { "const": true }, "failedStage": { "type": ["string", "null"] }, "factoriesConstructed": { "type": "integer", "minimum": 0, "maximum": 4 }, "selfTestsPassed": { "type": "integer", "minimum": 0, "maximum": 8 }, "forwardStepsExecuted": { "type": "integer", "minimum": 0, "maximum": 11 }, "compensationStepsExecuted": { "type": "integer", "minimum": 0, "maximum": 5 }, "handlesDisposed": { "type": "integer", "minimum": 0, "maximum": 4 }, "scopeClosed": { "type": "boolean" }, "productionReady": { "const": false } }
    },
    "safetyTruth": {
      "type": "object", "additionalProperties": false,
      "required": ["factoriesRequired", "selfTestsRequired", "forwardStepsRequired", "compensationStepsRequired", "receiptFieldsRequired", "productionBundleReceiptsObserved", "productionFactoryBindings", "productionFactoriesConstructed", "productionSelfTestsExecuted", "productionCompositionReceipts", "fixtureCases", "fixtureReady", "fixtureRolledBack", "fixtureContained", "fixtureDenied", "fixtureAssertionsPassed", "productionLoadersConfigured", "privateKeysLoaded", "externalReadsExecuted", "externalWritesExecuted", "ledgerWritesExecuted", "portCallsExecuted", "resourcesCreated", "controllerListenerStarts", "paidResourcesCreated", "provisioningPermitted", "d05Accepted"],
      "properties": { "factoriesRequired": { "const": 4 }, "selfTestsRequired": { "const": 8 }, "forwardStepsRequired": { "const": 11 }, "compensationStepsRequired": { "const": 5 }, "receiptFieldsRequired": { "const": 20 }, "productionBundleReceiptsObserved": { "const": 0 }, "productionFactoryBindings": { "const": 0 }, "productionFactoriesConstructed": { "const": 0 }, "productionSelfTestsExecuted": { "const": 0 }, "productionCompositionReceipts": { "const": 0 }, "fixtureCases": { "const": 44 }, "fixtureReady": { "const": 1 }, "fixtureRolledBack": { "const": 8 }, "fixtureContained": { "const": 1 }, "fixtureDenied": { "const": 34 }, "fixtureAssertionsPassed": { "const": 44 }, "productionLoadersConfigured": { "const": 0 }, "privateKeysLoaded": { "const": 0 }, "externalReadsExecuted": { "const": 0 }, "externalWritesExecuted": { "const": 0 }, "ledgerWritesExecuted": { "const": 0 }, "portCallsExecuted": { "const": 0 }, "resourcesCreated": { "const": 0 }, "controllerListenerStarts": { "const": 0 }, "paidResourcesCreated": { "const": false }, "provisioningPermitted": { "const": false }, "d05Accepted": { "const": false } }
    },
    "discovery": {
      "type": "object", "additionalProperties": false,
      "required": ["workbench", "schema", "configurationBundle", "verifierAdapters", "liveIdentity"],
      "properties": { "workbench": { "const": "/release-foundation#runner-controller-dossier-store-adapter-composition" }, "schema": { "const": "/schemas/runner-controller-dossier-store-adapter-composition.v1.schema.json" }, "configurationBundle": { "const": "/api/runner-controller/dossier-store-verifier-configuration-bundle" }, "verifierAdapters": { "const": "/api/runner-controller/dossier-store-verifier-adapters" }, "liveIdentity": { "const": "/api/release-unit" } }
    },
    "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
  }
}
