{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/controller-release-rollback-qualification.v1.schema.json",
  "title": "D05-T07 Controller release identity and rollback qualification",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "status", "observedAt", "program", "task", "trustCorrection", "planBinding", "repositoryPacket", "currentObservation", "identityFields", "attestations", "topology", "rollbackSteps", "signatures", "acceptanceContract", "controls", "liveEvidence", "invariants", "sources", "boundary"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/controller-release-rollback-qualification/v1" },
    "status": { "const": "T07_REPOSITORY_IMPLEMENTED_LIVE_CONTROLLER_RELEASE_AND_ROLLBACK_BLOCKED" },
    "observedAt": { "type": "string", "format": "date-time" },
    "program": {
      "type": "object",
      "required": ["acceptedKnives", "totalKnives", "currentOrdinal", "currentKnife", "remainingIncludingCurrent", "remainingAfterCurrentAcceptance"],
      "properties": {
        "acceptedKnives": { "const": 4 },
        "totalKnives": { "const": 36 },
        "currentOrdinal": { "const": 5 },
        "currentKnife": { "const": "D05" },
        "remainingIncludingCurrent": { "const": 32 },
        "remainingAfterCurrentAcceptance": { "const": 31 }
      }
    },
    "task": {
      "type": "object",
      "required": ["id", "repositoryImplementationComplete", "liveT06QualificationObserved", "liveControllerReleaseObserved", "intentionalRollbackExecuted", "productionAccepted", "nextTask", "nextTaskBlocked"],
      "properties": {
        "id": { "const": "D05-T07" },
        "repositoryImplementationComplete": { "const": true },
        "liveT06QualificationObserved": { "const": false },
        "liveControllerReleaseObserved": { "const": false },
        "intentionalRollbackExecuted": { "const": false },
        "productionAccepted": { "const": false },
        "nextTask": { "const": "D05-T08" },
        "nextTaskBlocked": { "const": true }
      }
    },
    "trustCorrection": {
      "type": "object",
      "required": ["decision", "historicalEvidencePath", "historicalEvidenceStatus", "developerPortalEligibleForG09G10", "sitesEligibleForG09G10", "onlyEligibleSubject"],
      "properties": {
        "developerPortalEligibleForG09G10": { "const": false },
        "sitesEligibleForG09G10": { "const": false }
      }
    },
    "planBinding": {
      "type": "object",
      "required": ["planId", "path", "sha256", "maximumReceiptAgeHours", "exactRevisionRequired"],
      "properties": {
        "planId": { "const": "D05-T07-CONTROLLER-RELEASE-ROLLBACK-V1" },
        "path": { "const": "ops/runner-factory/release/controller-release-rollback-plan.json" },
        "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
        "maximumReceiptAgeHours": { "const": 2 },
        "exactRevisionRequired": { "const": true }
      }
    },
    "repositoryPacket": {
      "type": "object",
      "required": ["identityFieldContracts", "attestationContracts", "rollbackStepContracts", "requiredIndependentSignatures"],
      "properties": {
        "identityFieldContracts": { "const": 6 },
        "attestationContracts": { "const": 4 },
        "rollbackStepContracts": { "const": 8 },
        "requiredIndependentSignatures": { "const": 4 }
      }
    },
    "currentObservation": { "type": "object", "required": ["source", "portal", "sites", "controller"] },
    "identityFields": {
      "type": "array",
      "minItems": 6,
      "maxItems": 6,
      "items": {
        "type": "object",
        "required": ["id", "label", "requirement", "controllerObserved", "state"],
        "properties": { "controllerObserved": { "const": null }, "state": { "const": "MISSING" } }
      }
    },
    "attestations": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4,
      "items": {
        "type": "object",
        "required": ["id", "owner", "observed", "state"],
        "properties": { "observed": { "const": false }, "state": { "const": "MISSING" } }
      }
    },
    "topology": { "type": "object", "required": ["current", "predecessor", "final"] },
    "rollbackSteps": {
      "type": "array",
      "minItems": 8,
      "maxItems": 8
    },
    "signatures": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4,
      "items": {
        "type": "object",
        "required": ["role", "responsibility", "observed"],
        "properties": { "observed": { "const": false } }
      }
    },
    "acceptanceContract": {
      "type": "object",
      "required": ["requiredLiveT06Receipts", "observedLiveT06Receipts", "requiredIdentityFields", "observedIdentityFields", "requiredAttestations", "observedAttestations", "requiredRollbackSteps", "observedRollbackSteps", "requiredSignatures", "observedSignatures", "requiredFinalControllerListeners", "observedFinalControllerListeners", "g09Satisfied", "g10Satisfied", "t07ReceiptAcceptsD05"],
      "properties": {
        "requiredLiveT06Receipts": { "const": 1 },
        "observedLiveT06Receipts": { "const": 0 },
        "requiredIdentityFields": { "const": 6 },
        "observedIdentityFields": { "const": 0 },
        "requiredAttestations": { "const": 4 },
        "observedAttestations": { "const": 0 },
        "requiredRollbackSteps": { "const": 8 },
        "observedRollbackSteps": { "const": 0 },
        "requiredSignatures": { "const": 4 },
        "observedSignatures": { "const": 0 },
        "requiredFinalControllerListeners": { "const": 1 },
        "observedFinalControllerListeners": { "const": 0 },
        "g09Satisfied": { "const": false },
        "g10Satisfied": { "const": false },
        "t07ReceiptAcceptsD05": { "const": false }
      }
    },
    "controls": { "type": "array", "minItems": 8, "maxItems": 8 },
    "liveEvidence": {
      "type": "object",
      "required": ["readOnlyAuditPerformed", "controllerReleaseSwitches", "controllerRecoverySwitches", "controllerServiceRestarts", "controllerListenerStarts", "publicRouteChanges", "externalWritesExecuted", "credentialsRecorded", "paidResourcesCreated"],
      "properties": {
        "readOnlyAuditPerformed": { "const": true },
        "controllerReleaseSwitches": { "const": 0 },
        "controllerRecoverySwitches": { "const": 0 },
        "controllerServiceRestarts": { "const": 0 },
        "controllerListenerStarts": { "const": 0 },
        "publicRouteChanges": { "const": 0 },
        "externalWritesExecuted": { "const": 0 },
        "credentialsRecorded": { "const": false },
        "paidResourcesCreated": { "const": 0 }
      }
    },
    "invariants": {
      "type": "object",
      "required": ["portalReleaseExcluded", "sitesReleaseExcluded", "controllerListener8110", "qualifiedReceipts", "programAdvanced", "d05Accepted"],
      "properties": {
        "portalReleaseExcluded": { "const": true },
        "sitesReleaseExcluded": { "const": true },
        "controllerListener8110": { "const": 0 },
        "qualifiedReceipts": { "const": 0 },
        "programAdvanced": { "const": false },
        "d05Accepted": { "const": false }
      }
    },
    "sources": { "type": "array", "minItems": 3 },
    "boundary": { "type": "string", "minLength": 160 }
  }
}
