{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-controller-evidence-handoff.v1.schema.json",
  "title": "D05 gate evidence owner handoff",
  "type": "object",
  "required": ["schemaVersion", "status", "observedAt", "mode", "program", "summary", "handoffSubject", "runtimeSnapshot", "receiptEnvelope", "collectionStages", "gatePackets", "ownerHandoffs", "decisionSeats", "intakeBoundary", "selectedDenialTrace", "operatorPlan", "safetyTruth", "verification", "discovery"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-controller-evidence-handoff/v1" },
    "status": { "const": "D05_EVIDENCE_HANDOFF_READY_CURRENT_DOSSIER_STALE_ALL_RECEIPTS_MISSING" },
    "observedAt": { "type": "string", "format": "date-time" },
    "mode": { "const": "READ_ONLY_OWNER_HANDOFF_SPECIFICATION_NO_INTAKE_NO_SIGNATURE_NO_ACCEPTANCE" },
    "program": { "$ref": "#/$defs/program" },
    "summary": { "$ref": "#/$defs/summary" },
    "handoffSubject": { "$ref": "#/$defs/handoffSubject" },
    "runtimeSnapshot": { "$ref": "#/$defs/runtimeSnapshot" },
    "receiptEnvelope": { "$ref": "#/$defs/receiptEnvelope" },
    "collectionStages": { "type": "array", "minItems": 8, "maxItems": 8, "items": { "$ref": "#/$defs/collectionStage" } },
    "gatePackets": { "type": "array", "minItems": 11, "maxItems": 11, "items": { "$ref": "#/$defs/gatePacket" } },
    "ownerHandoffs": { "type": "array", "minItems": 10, "maxItems": 10, "items": { "$ref": "#/$defs/ownerHandoff" } },
    "decisionSeats": { "type": "array", "minItems": 5, "maxItems": 5, "items": { "$ref": "#/$defs/decisionSeat" } },
    "intakeBoundary": { "$ref": "#/$defs/intakeBoundary" },
    "selectedDenialTrace": { "$ref": "#/$defs/selectedDenialTrace" },
    "operatorPlan": { "$ref": "#/$defs/operatorPlan" },
    "safetyTruth": { "$ref": "#/$defs/safetyTruth" },
    "verification": { "$ref": "#/$defs/verification" },
    "discovery": { "$ref": "#/$defs/discovery" }
  },
  "$defs": {
    "source": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
    "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
    "release": { "type": "string", "pattern": "^developer-portal@[0-9a-f]{12}-[0-9a-f]{12}$" },
    "gateId": { "type": "string", "pattern": "^D05-G(?:0[1-9]|1[01])$" },
    "owner": { "enum": ["PLATFORM_SRE", "MOBILE_PLATFORM", "SECURITY", "ARCHITECTURE", "CONTROLLER_OWNER", "RELEASE_OWNER", "QA", "SUPPLY_CHAIN", "RELEASE_ENGINEERING", "PRODUCT_OWNER"] },
    "program": {
      "type": "object",
      "required": ["acceptedKnives", "totalKnives", "currentKnife", "closeoutCut", "remainingIncludingCurrent", "remainingAfterAcceptance", "d05Accepted"],
      "properties": {
        "acceptedKnives": { "const": 4 }, "totalKnives": { "const": 36 }, "currentKnife": { "const": "D05" }, "closeoutCut": { "const": 8 },
        "remainingIncludingCurrent": { "const": 32 }, "remainingAfterAcceptance": { "const": 31 }, "d05Accepted": { "const": false }
      },
      "additionalProperties": false
    },
    "summary": {
      "type": "object",
      "required": ["gatePacketsSpecified", "gatePacketsRequired", "collectionStagesSpecified", "accountableOwners", "commonReceiptFields", "gateReceiptsObserved", "gateReceiptsRequired", "ownerAcknowledgementsObserved", "ownerAcknowledgementsRequired", "decisionSeatSignaturesObserved", "decisionSeatSignaturesRequired", "currentDossierReleaseMatch", "decision"],
      "properties": {
        "gatePacketsSpecified": { "const": 11 }, "gatePacketsRequired": { "const": 11 }, "collectionStagesSpecified": { "const": 8 }, "accountableOwners": { "const": 10 }, "commonReceiptFields": { "const": 14 },
        "gateReceiptsObserved": { "const": 0 }, "gateReceiptsRequired": { "const": 11 }, "ownerAcknowledgementsObserved": { "const": 0 }, "ownerAcknowledgementsRequired": { "const": 10 },
        "decisionSeatSignaturesObserved": { "const": 0 }, "decisionSeatSignaturesRequired": { "const": 5 }, "currentDossierReleaseMatch": { "const": false },
        "decision": { "const": "BLOCK_HANDOFF_EXECUTION_UNTIL_CURRENT_RELEASE_DOSSIER_AND_EXTERNAL_OWNERS_EXIST" }
      },
      "additionalProperties": false
    },
    "handoffSubject": {
      "type": "object",
      "required": ["id", "currentReleaseId", "currentSourceRevision", "currentArtifactDigest", "rollbackReleaseId", "ownerApprovalDossierId", "ownerApprovalDossierReleaseId", "releaseMatchesDossier", "dossierState", "reason"],
      "properties": {
        "id": { "type": "string", "pattern": "^d05-handoff@[0-9a-f]{12}$" }, "currentReleaseId": { "$ref": "#/$defs/release" }, "currentSourceRevision": { "$ref": "#/$defs/source" },
        "currentArtifactDigest": { "$ref": "#/$defs/digest" }, "rollbackReleaseId": { "$ref": "#/$defs/release" }, "ownerApprovalDossierId": { "type": "string", "pattern": "^d05-closure@[0-9a-f]{12}-[0-9a-f]{12}$" },
        "ownerApprovalDossierReleaseId": { "$ref": "#/$defs/release" }, "releaseMatchesDossier": { "const": false }, "dossierState": { "const": "STALE_RELEASE_MISMATCH_REGENERATE_REQUIRED" }, "reason": { "type": "string", "minLength": 1 }
      },
      "additionalProperties": false
    },
    "ec2Snapshot": {
      "type": "object",
      "required": ["releaseId", "sourceRevision", "serviceState", "listeners", "controller8110Observed"],
      "properties": { "releaseId": { "$ref": "#/$defs/release" }, "sourceRevision": { "$ref": "#/$defs/source" }, "serviceState": { "const": "ACTIVE" }, "listeners": { "const": ["127.0.0.1:8100"] }, "controller8110Observed": { "const": false } },
      "additionalProperties": false
    },
    "sitesSnapshot": {
      "type": "object",
      "required": ["releaseId", "sourceRevision", "version", "environmentRevision", "archiveDigest", "accessMode", "allowedUsers", "allowedGroups"],
      "properties": {
        "releaseId": { "$ref": "#/$defs/release" }, "sourceRevision": { "$ref": "#/$defs/source" }, "version": { "const": 138 }, "environmentRevision": { "const": 18 }, "archiveDigest": { "$ref": "#/$defs/digest" },
        "accessMode": { "const": "OWNER_ONLY_CUSTOM" }, "allowedUsers": { "const": 1 }, "allowedGroups": { "const": 0 }
      },
      "additionalProperties": false
    },
    "runtimeSnapshot": {
      "type": "object", "required": ["ec2", "sites"],
      "properties": { "ec2": { "$ref": "#/$defs/ec2Snapshot" }, "sites": { "$ref": "#/$defs/sitesSnapshot" } }, "additionalProperties": false
    },
    "receiptField": {
      "type": "object", "required": ["id", "binding", "required"],
      "properties": { "id": { "type": "string", "minLength": 1 }, "binding": { "type": "string", "minLength": 1 }, "required": { "const": true } }, "additionalProperties": false
    },
    "receiptEnvelope": {
      "type": "object", "required": ["schemaVersion", "canonicalEncoding", "signatureAlgorithm", "fields", "bindingRules"],
      "properties": {
        "schemaVersion": { "const": "developer.reits.tech/d05-gate-receipt-envelope/v1" }, "canonicalEncoding": { "const": "UTF-8_CANONICAL_JSON" }, "signatureAlgorithm": { "const": "ECDSA_P256_SHA256" },
        "fields": { "type": "array", "minItems": 14, "maxItems": 14, "items": { "$ref": "#/$defs/receiptField" } },
        "bindingRules": { "type": "array", "minItems": 12, "maxItems": 12, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
      },
      "additionalProperties": false
    },
    "collectionStage": {
      "type": "object", "required": ["ordinal", "id", "label", "gates", "dependsOn", "status"],
      "properties": {
        "ordinal": { "type": "integer", "minimum": 1, "maximum": 8 }, "id": { "enum": ["foundation-capacity", "foundation-trust", "release-supply", "runtime-install", "runtime-qa", "recovery-drill", "listener-authority", "owner-decision"] },
        "label": { "type": "string", "minLength": 1 }, "gates": { "type": "array", "minItems": 1, "maxItems": 2, "uniqueItems": true, "items": { "$ref": "#/$defs/gateId" } },
        "dependsOn": { "type": "array", "maxItems": 7, "uniqueItems": true, "items": { "type": "string" } }, "status": { "type": "string", "pattern": "^BLOCKED_" }
      },
      "additionalProperties": false
    },
    "gatePacket": {
      "type": "object", "required": ["id", "owner", "stage", "evidenceContract", "artifactsRequired", "dependsOnGates", "knownMaxAgeSeconds", "ownerMustSetExpiresAt", "receiptObserved", "ownerAcknowledged", "status"],
      "properties": {
        "id": { "$ref": "#/$defs/gateId" }, "owner": { "$ref": "#/$defs/owner" }, "stage": { "type": "string" }, "evidenceContract": { "type": "string", "pattern": "^/api/" },
        "artifactsRequired": { "type": "integer", "minimum": 4, "maximum": 11 }, "dependsOnGates": { "type": "array", "maxItems": 10, "uniqueItems": true, "items": { "$ref": "#/$defs/gateId" } },
        "knownMaxAgeSeconds": { "type": ["integer", "null"], "enum": [null, 120, 300] }, "ownerMustSetExpiresAt": { "const": true }, "receiptObserved": { "const": false }, "ownerAcknowledged": { "const": false }, "status": { "type": "string", "pattern": "^BLOCKED_" }
      },
      "additionalProperties": false
    },
    "ownerHandoff": {
      "type": "object", "required": ["owner", "gates", "acknowledged", "handoffChannel", "status"],
      "properties": { "owner": { "$ref": "#/$defs/owner" }, "gates": { "type": "array", "minItems": 1, "maxItems": 2, "uniqueItems": true, "items": { "$ref": "#/$defs/gateId" } }, "acknowledged": { "const": false }, "handoffChannel": { "const": "EXTERNAL_COORDINATION_REQUIRED" }, "status": { "const": "NOT_CONTACTED_BY_PORTAL" } },
      "additionalProperties": false
    },
    "decisionSeat": {
      "type": "object", "required": ["ordinal", "seat", "requiredBinding", "signed"],
      "properties": { "ordinal": { "type": "integer", "minimum": 1, "maximum": 5 }, "seat": { "enum": ["PLATFORM_SRE_SIGNOFF", "SECURITY_SIGNOFF", "ARCHITECTURE_SIGNOFF", "QA_SIGNOFF", "PRODUCT_OWNER_SIGNOFF"] }, "requiredBinding": { "type": "string", "minLength": 1 }, "signed": { "const": false } },
      "additionalProperties": false
    },
    "intakeBoundary": {
      "type": "object", "required": ["currentReadApis", "writeEndpoint", "targetInbox", "targetInboxInstalled", "signatureVerifierConfigured", "durableReceiptStoreConfigured", "portalMayAcceptReceipts", "portalMayAcceptD05"],
      "properties": {
        "currentReadApis": { "type": "array", "minItems": 6, "maxItems": 6, "uniqueItems": true, "items": { "type": "string", "pattern": "^/api/" } }, "writeEndpoint": { "const": null }, "targetInbox": { "const": "/var/lib/reits-runner-factory/evidence/inbox/{gateId}/{receiptId}.json" },
        "targetInboxInstalled": { "const": false }, "signatureVerifierConfigured": { "const": false }, "durableReceiptStoreConfigured": { "const": false }, "portalMayAcceptReceipts": { "const": false }, "portalMayAcceptD05": { "const": false }
      },
      "additionalProperties": false
    },
    "selectedDenialTrace": {
      "type": "object", "required": ["id", "condition", "currentReleaseId", "dossierReleaseId", "decision"],
      "properties": { "id": { "const": "HANDOFF-001" }, "condition": { "const": "CURRENT_RELEASE_DIFFERS_FROM_OWNER_APPROVAL_DOSSIER" }, "currentReleaseId": { "$ref": "#/$defs/release" }, "dossierReleaseId": { "$ref": "#/$defs/release" }, "decision": { "const": "DENY_ALL_NEW_APPROVALS_AND_REQUIRE_DOSSIER_REGENERATION" } },
      "additionalProperties": false
    },
    "operatorPlan": {
      "type": "object", "required": ["nextAction", "forbiddenActions"],
      "properties": { "nextAction": { "type": "string", "minLength": 1 }, "forbiddenActions": { "type": "array", "minItems": 5, "maxItems": 5, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } } },
      "additionalProperties": false
    },
    "safetyTruth": {
      "type": "object",
      "required": ["readOnlyAuditPerformed", "credentialsRecorded", "ownerMessagesSent", "receiptUploadsAccepted", "receiptsPersisted", "signaturesVerified", "approvalRequestsCreated", "d05AcceptanceDecisionsWritten", "controllerListenerStarts", "productionSwitches", "externalWritesExecuted", "paidResourcesCreated", "handoffExecutionAuthorized", "d05Accepted"],
      "properties": {
        "readOnlyAuditPerformed": { "const": true }, "credentialsRecorded": { "const": false }, "ownerMessagesSent": { "const": 0 }, "receiptUploadsAccepted": { "const": 0 }, "receiptsPersisted": { "const": 0 }, "signaturesVerified": { "const": 0 },
        "approvalRequestsCreated": { "const": 0 }, "d05AcceptanceDecisionsWritten": { "const": 0 }, "controllerListenerStarts": { "const": 0 }, "productionSwitches": { "const": 0 }, "externalWritesExecuted": { "const": 0 },
        "paidResourcesCreated": { "const": false }, "handoffExecutionAuthorized": { "const": false }, "d05Accepted": { "const": false }
      },
      "additionalProperties": false
    },
    "verification": {
      "type": "object",
      "required": ["status", "gatePackets", "collectionStages", "accountableOwners", "commonReceiptFields", "gateReceiptsObserved", "ownerAcknowledgementsObserved", "decisionSeatSignaturesObserved", "currentDossierReleaseMatch", "receiptUploadsAccepted", "externalWritesExecuted", "d05Accepted"],
      "properties": {
        "status": { "const": "PASS_READ_ONLY_D05_OWNER_HANDOFF_SPECIFICATION" }, "gatePackets": { "const": 11 }, "collectionStages": { "const": 8 }, "accountableOwners": { "const": 10 }, "commonReceiptFields": { "const": 14 },
        "gateReceiptsObserved": { "const": 0 }, "ownerAcknowledgementsObserved": { "const": 0 }, "decisionSeatSignaturesObserved": { "const": 0 }, "currentDossierReleaseMatch": { "const": false },
        "receiptUploadsAccepted": { "const": 0 }, "externalWritesExecuted": { "const": 0 }, "d05Accepted": { "const": false }
      },
      "additionalProperties": false
    },
    "discovery": {
      "type": "object", "required": ["workbench", "schema", "ownerApproval", "closure", "runtimeIdentity", "releaseRegistry"],
      "properties": {
        "workbench": { "const": "/release-foundation#runner-controller-evidence-handoff" }, "schema": { "const": "/schemas/runner-controller-evidence-handoff.v1.schema.json" },
        "ownerApproval": { "const": "/api/runner-controller/owner-approval-evidence" }, "closure": { "const": "/api/runner-factory/controller/d05-acceptance-closure" },
        "runtimeIdentity": { "const": "/api/release-unit" }, "releaseRegistry": { "const": "/api/release-units" }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
