{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-controller-dossier-store-authorization.v1.schema.json",
  "title": "Runner Controller D05 Dossier Store Resource Authorization",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "status", "evaluatedAt", "mode", "program", "summary", "artifactProjection", "authorizationPlan", "observedBaseline", "resourcePlan", "schemaPlan", "operationMatrix", "principalPlan", "economicScope", "approvalSeats", "rolloutPlan", "rollbackPlan", "decisionStates", "invariants", "safetyTruth", "discovery"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-controller-dossier-store-authorization/v1" },
    "status": {
      "enum": [
        "LIVE_PROJECTION_UNAVAILABLE_RESOURCE_PLAN_DENIED",
        "RESOURCE_PLAN_READY_OWNER_AUTHORIZATION_REQUIRED",
        "RESOURCE_AUTHORIZED_MIGRATION_REVIEW_REQUIRED",
        "MIGRATION_REVIEWED_PROVISIONING_CONFIRMATION_REQUIRED"
      ]
    },
    "evaluatedAt": { "type": "string", "format": "date-time" },
    "mode": { "const": "READ_ONLY_RESOURCE_PERMISSION_MIGRATION_ROLLBACK_PLAN_NO_PROVISION_NO_WRITE" },
    "program": { "$ref": "#/$defs/program" },
    "summary": { "$ref": "#/$defs/summary" },
    "artifactProjection": {
      "oneOf": [
        { "type": "null" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["id", "contentDigest", "proposedObjectKey", "canonicalBytes", "releaseId", "sourceRevision", "stored", "sealed"],
          "properties": {
            "id": { "type": "string", "minLength": 1 },
            "contentDigest": { "$ref": "#/$defs/digest" },
            "proposedObjectKey": { "type": "string", "minLength": 1 },
            "canonicalBytes": { "type": "integer", "minimum": 1 },
            "releaseId": { "type": "string", "minLength": 1 },
            "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
            "stored": { "const": false },
            "sealed": { "const": false }
          }
        }
      ]
    },
    "authorizationPlan": {
      "oneOf": [
        { "type": "null" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["id", "contentDigest", "canonicalBytes", "subject", "approved", "executable"],
          "properties": {
            "id": { "type": "string", "pattern": "^d05-store-plan@[0-9a-f]{12}-[0-9a-f]{12}$" },
            "contentDigest": { "$ref": "#/$defs/digest" },
            "canonicalBytes": { "type": "integer", "minimum": 1 },
            "subject": { "type": "object", "required": ["schemaVersion", "artifactProjectionId", "artifactContentDigest", "artifactObjectKey", "releaseId", "resourcePlan", "schemaPlan", "operationMatrix", "principalPlan", "economicScope", "rolloutPlan", "rollbackPlan"], "additionalProperties": true },
            "approved": { "const": false },
            "executable": { "const": false }
          }
        }
      ]
    },
    "observedBaseline": { "$ref": "#/$defs/observedBaseline" },
    "resourcePlan": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "$ref": "#/$defs/resource" } },
    "schemaPlan": { "$ref": "#/$defs/schemaPlan" },
    "operationMatrix": { "type": "array", "minItems": 8, "maxItems": 8, "items": { "$ref": "#/$defs/operation" } },
    "principalPlan": { "type": "array", "minItems": 6, "maxItems": 6, "items": { "$ref": "#/$defs/principal" } },
    "economicScope": { "$ref": "#/$defs/economicScope" },
    "approvalSeats": { "type": "array", "minItems": 5, "maxItems": 5, "items": { "$ref": "#/$defs/approvalSeat" } },
    "rolloutPlan": { "type": "array", "minItems": 9, "maxItems": 9, "items": { "$ref": "#/$defs/rolloutStep" } },
    "rollbackPlan": { "type": "array", "minItems": 6, "maxItems": 6, "items": { "$ref": "#/$defs/rollbackStep" } },
    "decisionStates": { "type": "array", "minItems": 4, "maxItems": 4, "items": { "$ref": "#/$defs/decisionState" } },
    "invariants": { "type": "array", "minItems": 12, "maxItems": 12, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
    "safetyTruth": { "$ref": "#/$defs/safetyTruth" },
    "discovery": {
      "type": "object",
      "additionalProperties": false,
      "required": ["workbench", "schema", "artifactProjection", "liveIdentity", "closure"],
      "properties": {
        "workbench": { "const": "/release-foundation#runner-controller-dossier-store-authorization" },
        "schema": { "const": "/schemas/runner-controller-dossier-store-authorization.v1.schema.json" },
        "artifactProjection": { "const": "/api/runner-controller/dossier-artifact-projection" },
        "liveIdentity": { "const": "/api/release-unit" },
        "closure": { "const": "/api/runner-factory/controller/d05-acceptance-closure" }
      }
    }
  },
  "$defs": {
    "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
    "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": 12 },
        "remainingIncludingCurrent": { "const": 32 },
        "remainingAfterAcceptance": { "const": 31 },
        "d05Accepted": { "const": false }
      }
    },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["liveProjectionAvailable", "resourcePlansSpecified", "resourcesConfigured", "resourcesCreated", "schemaTablesSpecified", "schemaTablesCreated", "migrationsGenerated", "migrationsApplied", "operationsSpecified", "operationsAuthorized", "principalsSpecified", "principalsConfigured", "approvalSeatsRequired", "approvalSeatsApproved", "budgetApproved", "retentionApproved", "provisioningPermitted", "migrationPermitted", "externalWritesExecuted", "storedArtifactsCreated", "decision"],
      "properties": {
        "liveProjectionAvailable": { "type": "boolean" },
        "resourcePlansSpecified": { "const": 2 },
        "resourcesConfigured": { "const": 0 },
        "resourcesCreated": { "const": 0 },
        "schemaTablesSpecified": { "const": 3 },
        "schemaTablesCreated": { "const": 0 },
        "migrationsGenerated": { "const": 0 },
        "migrationsApplied": { "const": 0 },
        "operationsSpecified": { "const": 8 },
        "operationsAuthorized": { "const": 0 },
        "principalsSpecified": { "const": 6 },
        "principalsConfigured": { "const": 0 },
        "approvalSeatsRequired": { "const": 5 },
        "approvalSeatsApproved": { "const": 0 },
        "budgetApproved": { "const": false },
        "retentionApproved": { "const": false },
        "provisioningPermitted": { "const": false },
        "migrationPermitted": { "const": false },
        "externalWritesExecuted": { "const": 0 },
        "storedArtifactsCreated": { "const": 0 },
        "decision": { "type": "string", "minLength": 1 }
      }
    },
    "observedBaseline": {
      "type": "object",
      "additionalProperties": false,
      "required": ["hostingProjectPresent", "d1Binding", "r2Binding", "databaseTables", "databaseMigrations", "workerDbTypeScaffoldPresent", "workerR2TypeScaffoldPresent", "configuredResources", "configuredWriterIdentities", "durableArtifacts", "status"],
      "properties": {
        "hostingProjectPresent": { "const": true },
        "d1Binding": { "type": "null" },
        "r2Binding": { "type": "null" },
        "databaseTables": { "const": 0 },
        "databaseMigrations": { "const": 0 },
        "workerDbTypeScaffoldPresent": { "const": true },
        "workerR2TypeScaffoldPresent": { "const": false },
        "configuredResources": { "const": 0 },
        "configuredWriterIdentities": { "const": 0 },
        "durableArtifacts": { "const": 0 },
        "status": { "const": "NO_DURABLE_STORE_RESOURCES_CONFIGURED" }
      }
    },
    "resource": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "kind", "logicalBinding", "purpose", "dataClass", "configured", "created", "approvalOwner", "observedBinding", "status"],
      "properties": {
        "id": { "type": "string", "pattern": "^RP-[0-9]{2}$" },
        "kind": { "enum": ["D1_METADATA_INDEX", "R2_IMMUTABLE_OBJECT_STORE"] },
        "logicalBinding": { "type": "string", "minLength": 1 },
        "purpose": { "type": "string", "minLength": 1 },
        "dataClass": { "type": "string", "minLength": 1 },
        "configured": { "const": false },
        "created": { "const": false },
        "approvalOwner": { "type": "string", "minLength": 1 },
        "observedBinding": { "type": "null" },
        "status": { "const": "UNCONFIGURED_AUTHORIZATION_REQUIRED" }
      }
    },
    "schemaPlan": {
      "type": "object",
      "additionalProperties": false,
      "required": ["dialect", "migrationId", "migrationGenerated", "migrationApplied", "tables", "indexes", "forbiddenColumns"],
      "properties": {
        "dialect": { "const": "sqlite" },
        "migrationId": { "const": "PENDING_OWNER_AUTHORIZATION" },
        "migrationGenerated": { "const": false },
        "migrationApplied": { "const": false },
        "tables": { "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": "object", "required": ["name", "purpose", "primaryKey", "columns", "uniqueConstraints", "writeMode"], "additionalProperties": false, "properties": { "name": { "type": "string" }, "purpose": { "type": "string" }, "primaryKey": { "type": "string" }, "columns": { "type": "integer", "minimum": 1 }, "uniqueConstraints": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "writeMode": { "type": "string" } } } },
        "indexes": { "type": "array", "minItems": 8, "maxItems": 8, "uniqueItems": true, "items": { "type": "string" } },
        "forbiddenColumns": { "type": "array", "minItems": 5, "maxItems": 5, "uniqueItems": true, "items": { "type": "string" } }
      }
    },
    "operation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "operation", "principal", "resource", "mutating", "authorized"],
      "properties": { "id": { "type": "string", "pattern": "^OP-[0-9]{2}$" }, "operation": { "type": "string" }, "principal": { "type": "string" }, "resource": { "type": "string" }, "mutating": { "type": "boolean" }, "authorized": { "const": false } }
    },
    "principal": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "trustType", "permissions", "separation", "configured"],
      "properties": { "id": { "type": "string" }, "trustType": { "type": "string" }, "permissions": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "separation": { "type": "string" }, "configured": { "const": false } }
    },
    "economicScope": {
      "type": "object",
      "additionalProperties": false,
      "required": ["currency", "monthlyBudgetCeiling", "expectedMonthlyArtifacts", "expectedMonthlyReads", "maxArtifactBytes", "maxPendingReservations", "nonceTtlSeconds", "defaultRetentionDays", "liveProviderQuoteObserved", "budgetApproved", "costBearingProvisioningPermitted", "status"],
      "properties": {
        "currency": { "const": "USD" },
        "monthlyBudgetCeiling": { "type": "null" },
        "expectedMonthlyArtifacts": { "type": "null" },
        "expectedMonthlyReads": { "type": "null" },
        "maxArtifactBytes": { "const": 524288 },
        "maxPendingReservations": { "const": 20 },
        "nonceTtlSeconds": { "const": 300 },
        "defaultRetentionDays": { "type": "null" },
        "liveProviderQuoteObserved": { "const": false },
        "budgetApproved": { "const": false },
        "costBearingProvisioningPermitted": { "const": false },
        "status": { "const": "OWNER_MUST_SET_VOLUME_RETENTION_AND_BUDGET" }
      }
    },
    "approvalSeat": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "owner", "scope", "approved"],
      "properties": { "id": { "type": "string", "pattern": "^AS-[0-9]{2}$" }, "owner": { "type": "string" }, "scope": { "type": "string" }, "approved": { "const": false } }
    },
    "rolloutStep": {
      "type": "object",
      "additionalProperties": false,
      "required": ["ordinal", "id", "effect", "status"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 9 }, "id": { "type": "string" }, "effect": { "type": "string" }, "status": { "type": "string", "pattern": "^BLOCKED_" } }
    },
    "rollbackStep": {
      "type": "object",
      "additionalProperties": false,
      "required": ["ordinal", "action", "preservesEvidence"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 6 }, "action": { "type": "string" }, "preservesEvidence": { "const": true } }
    },
    "decisionState": {
      "type": "object",
      "additionalProperties": false,
      "required": ["status", "condition", "provisioningPermitted", "migrationPermitted"],
      "properties": { "status": { "type": "string" }, "condition": { "type": "string" }, "provisioningPermitted": { "const": false }, "migrationPermitted": { "const": false } }
    },
    "safetyTruth": {
      "type": "object",
      "additionalProperties": false,
      "required": ["resourcePlansSpecified", "schemaTablesSpecified", "operationsSpecified", "principalsSpecified", "approvalSeatsSpecified", "resourcesConfigured", "resourcesCreated", "migrationsGenerated", "migrationsApplied", "permissionGrantsIssued", "budgetApprovalsObserved", "externalWritesExecuted", "storedArtifactsCreated", "storageReceiptsIssued", "controllerListenerStarts", "paidResourcesCreated", "d05Accepted"],
      "properties": {
        "resourcePlansSpecified": { "const": 2 },
        "schemaTablesSpecified": { "const": 3 },
        "operationsSpecified": { "const": 8 },
        "principalsSpecified": { "const": 6 },
        "approvalSeatsSpecified": { "const": 5 },
        "resourcesConfigured": { "const": 0 },
        "resourcesCreated": { "const": 0 },
        "migrationsGenerated": { "const": 0 },
        "migrationsApplied": { "const": 0 },
        "permissionGrantsIssued": { "const": 0 },
        "budgetApprovalsObserved": { "const": 0 },
        "externalWritesExecuted": { "const": 0 },
        "storedArtifactsCreated": { "const": 0 },
        "storageReceiptsIssued": { "const": 0 },
        "controllerListenerStarts": { "const": 0 },
        "paidResourcesCreated": { "const": false },
        "d05Accepted": { "const": false }
      }
    }
  }
}
