{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-isolation-qualification.v1.schema.json",
  "title": "D05-T04 runner isolation qualification",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion",
    "status",
    "observedAt",
    "program",
    "task",
    "planBinding",
    "preconditions",
    "scopeModel",
    "liveSummary",
    "repositoryMatrix",
    "adversarialProbes",
    "acceptanceContract",
    "controls",
    "liveEvidence",
    "invariants",
    "sources",
    "boundary"
  ],
  "properties": {
    "schemaVersion": {
      "const": "developer.reits.tech/runner-isolation-qualification/v1"
    },
    "status": {
      "const": "T04_REPOSITORY_IMPLEMENTED_LIVE_EXECUTION_BLOCKED"
    },
    "observedAt": {
      "type": "string",
      "format": "date-time"
    },
    "program": {
      "type": "object",
      "additionalProperties": false,
      "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",
        "liveExecutionStarted",
        "liveExecutionAdmitted",
        "productionAccepted",
        "nextTask",
        "nextTaskBlocked"
      ],
      "properties": {
        "id": {
          "const": "D05-T04"
        },
        "repositoryImplementationComplete": {
          "const": true
        },
        "liveExecutionStarted": {
          "const": false
        },
        "liveExecutionAdmitted": {
          "const": false
        },
        "productionAccepted": {
          "const": false
        },
        "nextTask": {
          "const": "D05-T05"
        },
        "nextTaskBlocked": {
          "const": true
        }
      }
    },
    "planBinding": {
      "type": "object",
      "required": [
        "planId",
        "path",
        "sha256",
        "registry",
        "workflowPath",
        "gateContext",
        "exactRevisionRequired"
      ],
      "properties": {
        "planId": {
          "const": "D05-T04-18-REPOSITORY-ISOLATION-V1"
        },
        "sha256": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "exactRevisionRequired": {
          "const": true
        }
      }
    },
    "preconditions": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4
    },
    "scopeModel": {
      "type": "object",
      "required": [
        "coreRepositories",
        "reitsOrganizationRepositories",
        "sharedExternalRepositories",
        "reitsOrganization",
        "sharedExternal"
      ],
      "properties": {
        "coreRepositories": {
          "const": 18
        },
        "reitsOrganizationRepositories": {
          "const": 17
        },
        "sharedExternalRepositories": {
          "const": 1
        }
      }
    },
    "liveSummary": {
      "type": "object",
      "required": [
        "repositoriesObserved",
        "rawGateSuccess",
        "rawGateCancelled",
        "qualifiedIsolationReceipts",
        "reitsOrganizationRunnersOnline",
        "jxImOrganizationRunnersOnline",
        "adversarialProbeReceipts",
        "retirementReplacementReceipts",
        "trustedSignatures"
      ],
      "properties": {
        "repositoriesObserved": {
          "const": 18
        },
        "rawGateSuccess": {
          "const": 9
        },
        "rawGateCancelled": {
          "const": 9
        },
        "qualifiedIsolationReceipts": {
          "const": 0
        },
        "reitsOrganizationRunnersOnline": {
          "const": 0
        },
        "jxImOrganizationRunnersOnline": {
          "const": 0
        },
        "adversarialProbeReceipts": {
          "const": 0
        },
        "retirementReplacementReceipts": {
          "const": 0
        },
        "trustedSignatures": {
          "const": 0
        }
      }
    },
    "repositoryMatrix": {
      "type": "array",
      "minItems": 18,
      "maxItems": 18,
      "items": {
        "type": "object",
        "required": [
          "ordinal",
          "repository",
          "revision",
          "nativeMinimumRunner",
          "scope",
          "rawGateStatus",
          "rawGateDescription",
          "rawGateObservedAt",
          "qualificationState",
          "qualifiedReceipt"
        ],
        "properties": {
          "ordinal": {
            "type": "integer",
            "minimum": 1,
            "maximum": 18
          },
          "repository": {
            "type": "string",
            "pattern": "^[a-z0-9-]+/[a-z0-9-]+$"
          },
          "revision": {
            "type": "string",
            "pattern": "^[0-9a-f]{40}$"
          },
          "rawGateStatus": {
            "enum": [
              "success",
              "failure"
            ]
          },
          "qualifiedReceipt": {
            "const": false
          }
        }
      }
    },
    "adversarialProbes": {
      "type": "array",
      "minItems": 7,
      "maxItems": 7
    },
    "acceptanceContract": {
      "type": "object",
      "required": [
        "requiredExactGateReceipts",
        "observedExactGateReceipts",
        "requiredQualifiedRunnerIdentities",
        "observedQualifiedRunnerIdentities",
        "requiredAdversarialProbeReceipts",
        "observedAdversarialProbeReceipts",
        "requiredRetirementReplacementReceipts",
        "observedRetirementReplacementReceipts",
        "requiredSignatureRoles",
        "observedSignatures",
        "maximumReceiptAgeHours",
        "exactPlanDigestRequired",
        "rawCiSuccessIsQualification",
        "allConditionsRequired"
      ],
      "properties": {
        "requiredExactGateReceipts": {
          "const": 18
        },
        "observedExactGateReceipts": {
          "const": 0
        },
        "requiredQualifiedRunnerIdentities": {
          "const": 2
        },
        "observedQualifiedRunnerIdentities": {
          "const": 0
        },
        "requiredAdversarialProbeReceipts": {
          "const": 7
        },
        "observedAdversarialProbeReceipts": {
          "const": 0
        },
        "requiredRetirementReplacementReceipts": {
          "const": 2
        },
        "observedRetirementReplacementReceipts": {
          "const": 0
        },
        "requiredSignatureRoles": {
          "const": [
            "PLATFORM_SRE",
            "SECURITY",
            "QA"
          ]
        },
        "observedSignatures": {
          "const": 0
        },
        "maximumReceiptAgeHours": {
          "const": 24
        },
        "exactPlanDigestRequired": {
          "const": true
        },
        "rawCiSuccessIsQualification": {
          "const": false
        },
        "allConditionsRequired": {
          "const": true
        }
      }
    },
    "controls": {
      "type": "array",
      "minItems": 6,
      "maxItems": 6
    },
    "liveEvidence": {
      "type": "object"
    },
    "invariants": {
      "type": "object"
    },
    "sources": {
      "type": "array",
      "minItems": 3
    },
    "boundary": {
      "type": "string",
      "minLength": 200
    }
  }
}
