{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-controller-release-evidence.v1.schema.json",
  "title": "REITs D05 G09/G10 Release Identity and Rollback Evidence",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "status", "observedAt", "observationMode", "program", "gateSummary", "gates", "identity", "rollback", "operatorPlan", "safetyTruth"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-controller-release-evidence/v1" },
    "status": { "const": "G09_G10_DENIED_UNSIGNED_RELEASE_CHAIN_AND_NO_INTENTIONAL_ROLLBACK_DRILL" },
    "observedAt": { "type": "string", "format": "date-time" },
    "observationMode": { "const": "READ_ONLY_DUAL_TARGET_RELEASE_AND_ROLLBACK_AUDIT_NO_PRODUCTION_SWITCH" },
    "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": 6 },
        "remainingIncludingCurrent": { "const": 32 }, "remainingAfterAcceptance": { "const": 31 }, "d05Accepted": { "const": false }
      }
    },
    "gateSummary": {
      "type": "object", "additionalProperties": false,
      "required": ["targetedGates", "satisfiedGates", "positiveAcceptanceReceipts", "identityFieldsMatched", "identityFieldsRequired", "missingIndependentIdentityReceipts", "namedRollbackTargetsObserved", "executedRollbackSteps", "requiredRollbackSteps", "decision"],
      "properties": {
        "targetedGates": { "const": 2 }, "satisfiedGates": { "const": 0 }, "positiveAcceptanceReceipts": { "const": 0 },
        "identityFieldsMatched": { "const": 6 }, "identityFieldsRequired": { "const": 6 }, "missingIndependentIdentityReceipts": { "const": 4 },
        "namedRollbackTargetsObserved": { "const": 2 }, "executedRollbackSteps": { "const": 0 }, "requiredRollbackSteps": { "const": 8 },
        "decision": { "const": "DENY_AND_ESCALATE_TO_SUPPLY_CHAIN_AND_RELEASE_ENGINEERING" }
      }
    },
    "gates": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "$ref": "#/$defs/gate" } },
    "identity": {
      "type": "object", "additionalProperties": false,
      "required": ["auditBaseline", "fields", "targets", "acceptanceRequirements"],
      "properties": {
        "auditBaseline": {
          "type": "object", "additionalProperties": false, "required": ["releaseId", "sourceRevision", "rollbackReleaseId"],
          "properties": { "releaseId": { "$ref": "#/$defs/releaseId" }, "sourceRevision": { "$ref": "#/$defs/source" }, "rollbackReleaseId": { "$ref": "#/$defs/releaseId" } }
        },
        "fields": { "type": "array", "minItems": 6, "maxItems": 6, "items": { "$ref": "#/$defs/identityField" } },
        "targets": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "$ref": "#/$defs/identityTarget" } },
        "acceptanceRequirements": { "type": "array", "minItems": 4, "maxItems": 4, "items": { "$ref": "#/$defs/requirement" } }
      }
    },
    "rollback": {
      "type": "object", "additionalProperties": false,
      "required": ["currentReleaseId", "targetReleaseId", "targetMatchesCurrent", "namedTargetsObserved", "intentionalTransitionsObserved", "recoveryTransitionsObserved", "rollbackReceiptsObserved", "recoveryReceiptsObserved", "verifiedAt", "targets", "steps"],
      "properties": {
        "currentReleaseId": { "$ref": "#/$defs/releaseId" }, "targetReleaseId": { "$ref": "#/$defs/releaseId" }, "targetMatchesCurrent": { "const": false },
        "namedTargetsObserved": { "const": 2 }, "intentionalTransitionsObserved": { "const": 0 }, "recoveryTransitionsObserved": { "const": 0 },
        "rollbackReceiptsObserved": { "const": 0 }, "recoveryReceiptsObserved": { "const": 0 }, "verifiedAt": { "type": "null" },
        "targets": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "$ref": "#/$defs/rollbackTarget" } },
        "steps": { "type": "array", "minItems": 8, "maxItems": 8, "items": { "$ref": "#/$defs/rollbackStep" } }
      }
    },
    "operatorPlan": {
      "type": "object", "additionalProperties": false, "required": ["nextAction", "forbiddenActions"],
      "properties": { "nextAction": { "type": "string", "minLength": 180 }, "forbiddenActions": { "type": "array", "minItems": 5, "maxItems": 5, "items": { "type": "string", "minLength": 60 } } }
    },
    "safetyTruth": {
      "type": "object", "additionalProperties": false,
      "required": ["readOnlyAuditPerformed", "credentialsRecorded", "productionSymlinkSwitches", "sitesProductionVersionChanges", "sitesEnvironmentUpdates", "serviceRestarts", "rollbackTransitionsExecuted", "recoveryTransitionsExecuted", "externalWritesExecuted", "paidResourcesCreated", "controllerListener8110Observed", "g09Satisfied", "g10Satisfied", "d05Accepted"],
      "properties": {
        "readOnlyAuditPerformed": { "const": true }, "credentialsRecorded": { "const": false }, "productionSymlinkSwitches": { "const": 0 },
        "sitesProductionVersionChanges": { "const": 0 }, "sitesEnvironmentUpdates": { "const": 0 }, "serviceRestarts": { "const": 0 },
        "rollbackTransitionsExecuted": { "const": 0 }, "recoveryTransitionsExecuted": { "const": 0 }, "externalWritesExecuted": { "const": 0 },
        "paidResourcesCreated": { "const": false }, "controllerListener8110Observed": { "const": false }, "g09Satisfied": { "const": false },
        "g10Satisfied": { "const": false }, "d05Accepted": { "const": false }
      }
    },
    "verification": { "type": "object" },
    "discovery": { "type": "object" }
  },
  "$defs": {
    "source": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
    "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
    "releaseId": { "type": "string", "pattern": "^developer-portal@[0-9a-f]{12}-[0-9a-f]{12}$" },
    "gate": {
      "type": "object", "additionalProperties": false, "required": ["id", "name", "owner", "target", "observed", "positiveReceiptsObserved", "decision"],
      "properties": {
        "id": { "enum": ["D05-G09", "D05-G10"] }, "name": { "type": "string" }, "owner": { "enum": ["SUPPLY_CHAIN", "RELEASE_ENGINEERING"] },
        "target": { "type": "string", "minLength": 100 }, "observed": { "type": "string", "minLength": 120 }, "positiveReceiptsObserved": { "const": 0 },
        "decision": { "enum": ["DENIED_MATCHED_VALUES_ARE_UNSIGNED_SELF_ASSERTIONS", "DENIED_NAMED_TARGETS_EXIST_BUT_DRILL_NOT_EXECUTED"] }
      }
    },
    "identityField": {
      "type": "object", "additionalProperties": false, "required": ["id", "label", "ec2", "sites", "matches", "acceptanceStatus"],
      "properties": {
        "id": { "enum": ["source", "artifact", "sbom", "configuration", "migration", "runtime"] }, "label": { "type": "string" },
        "ec2": { "type": "string", "minLength": 20 }, "sites": { "type": "string", "minLength": 20 }, "matches": { "const": true },
        "acceptanceStatus": { "const": "OBSERVED_UNSIGNED" }
      }
    },
    "identityTarget": {
      "type": "object", "additionalProperties": false,
      "required": ["id", "label", "runtimeStatus", "sourceStatus", "materialization", "materializationOwner", "materializationMode", "materializationWritableByServiceIdentity", "packagedReceiptMatchesRuntime", "receiptSigned", "independentAcceptanceReceipt"],
      "properties": {
        "id": { "enum": ["ec2-systemd", "sites-worker"] }, "label": { "type": "string" }, "runtimeStatus": { "const": "BOUND" }, "sourceStatus": { "const": "MATCHED" },
        "materialization": { "type": "string" }, "materializationOwner": { "type": "string" }, "materializationMode": { "type": "string" },
        "materializationWritableByServiceIdentity": { "type": "boolean" }, "packagedReceiptMatchesRuntime": { "type": "boolean" },
        "receiptSigned": { "const": false }, "independentAcceptanceReceipt": { "const": false }, "versionSource": { "$ref": "#/$defs/source" },
        "archiveDigest": { "$ref": "#/$defs/digest" }, "archiveToDistAttestation": { "const": false }
      }
    },
    "requirement": {
      "type": "object", "additionalProperties": false, "required": ["id", "proof", "status"],
      "properties": { "id": { "type": "string" }, "proof": { "type": "string", "minLength": 60 }, "status": { "const": "MISSING" } }
    },
    "rollbackTarget": {
      "type": "object", "additionalProperties": false,
      "required": ["id", "platform", "target", "sourceRevision", "artifactDigest", "targetPresent", "targetPrepared", "drillExecuted", "recoveredToCurrent", "receiptStatus"],
      "properties": {
        "id": { "enum": ["ec2-predecessor", "sites-predecessor"] }, "platform": { "enum": ["EC2_SYSTEMD", "SITES"] }, "target": { "type": "string" },
        "sourceRevision": { "$ref": "#/$defs/source" }, "artifactDigest": { "$ref": "#/$defs/digest" }, "targetPresent": { "const": true },
        "targetPrepared": { "const": true }, "drillExecuted": { "const": false }, "recoveredToCurrent": { "const": false }, "receiptStatus": { "const": "MISSING" }
      }
    },
    "rollbackStep": {
      "type": "object", "additionalProperties": false, "required": ["id", "label", "evidence", "status"],
      "properties": { "id": { "pattern": "^RB-0[1-8]$" }, "label": { "type": "string" }, "evidence": { "type": "string", "minLength": 40 }, "status": { "enum": ["REQUIRED_NOT_AUTHORIZED", "NOT_EXECUTED"] } }
    }
  }
}
