{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.reits.tech/schemas/runner-controller-dossier-drift-status.v1.schema.json",
  "title": "D05 live dossier candidate drift status",
  "type": "object",
  "required": ["schemaVersion", "status", "evaluatedAt", "mode", "program", "summary", "candidateSnapshot", "liveIdentity", "fieldComparisons", "decisionStates", "cycleBoundary", "invariants", "safetyTruth", "discovery"],
  "properties": {
    "schemaVersion": { "const": "developer.reits.tech/runner-controller-dossier-drift-status/v1" },
    "status": { "enum": ["LIVE_IDENTITY_UNVERIFIED_REGENERATION_DENIED", "CANDIDATE_STALE_REGENERATION_REQUIRED", "CANDIDATE_CURRENT_UNSEALED_REVIEW_DENIED"] },
    "evaluatedAt": { "type": "string", "format": "date-time" },
    "mode": { "const": "NO_STORE_RUNTIME_IDENTITY_COMPARISON_NO_REGENERATION_NO_SEAL_NO_ACCEPTANCE" },
    "program": { "$ref": "#/$defs/program" },
    "summary": { "$ref": "#/$defs/summary" },
    "candidateSnapshot": { "$ref": "#/$defs/candidate" },
    "liveIdentity": { "$ref": "#/$defs/liveIdentity" },
    "fieldComparisons": { "type": "array", "minItems": 5, "maxItems": 5, "items": { "$ref": "#/$defs/comparison" } },
    "decisionStates": { "type": "array", "minItems": 3, "maxItems": 3, "items": { "$ref": "#/$defs/decisionState" } },
    "cycleBoundary": { "$ref": "#/$defs/cycleBoundary" },
    "invariants": { "type": "array", "minItems": 8, "maxItems": 8, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
    "safetyTruth": { "$ref": "#/$defs/safetyTruth" },
    "discovery": { "$ref": "#/$defs/discovery" }
  },
  "$defs": {
    "nullableString": { "type": ["string", "null"] },
    "source": { "type": ["string", "null"], "pattern": "^[0-9a-f]{40}$" },
    "digest": { "type": ["string", "null"], "pattern": "^sha256:[0-9a-f]{64}$" },
    "release": { "type": ["string", "null"], "pattern": "^developer-portal@[0-9a-f]{12}-[0-9a-f]{12}$" },
    "program": {
      "type": "object", "required": ["acceptedKnives", "totalKnives", "currentKnife", "closeoutCut", "remainingIncludingCurrent", "remainingAfterAcceptance", "d05Accepted"],
      "properties": { "acceptedKnives": { "const": 4 }, "totalKnives": { "const": 36 }, "currentKnife": { "const": "D05" }, "closeoutCut": { "const": 10 }, "remainingIncludingCurrent": { "const": 32 }, "remainingAfterAcceptance": { "const": 31 }, "d05Accepted": { "const": false } },
      "additionalProperties": false
    },
    "summary": {
      "type": "object", "required": ["requiredBindings", "matchingFields", "mismatchedFields", "unverifiedFields", "completeLiveIdentity", "exactBindingMatch", "regenerationRequired", "candidateSealed", "ownerReviewEligible", "decision"],
      "properties": {
        "requiredBindings": { "const": 5 }, "matchingFields": { "type": "integer", "minimum": 0, "maximum": 5 }, "mismatchedFields": { "type": "integer", "minimum": 0, "maximum": 5 }, "unverifiedFields": { "type": "integer", "minimum": 0, "maximum": 5 },
        "completeLiveIdentity": { "type": "boolean" }, "exactBindingMatch": { "type": "boolean" }, "regenerationRequired": { "type": "boolean" }, "candidateSealed": { "const": false }, "ownerReviewEligible": { "const": false },
        "decision": { "enum": ["INVALIDATE_STATIC_CANDIDATE_AND_REQUIRE_EXTERNAL_RUNTIME_REGENERATION", "DENY_REGENERATION_SEAL_AND_REVIEW_UNTIL_LIVE_IDENTITY_IS_BOUND", "KEEP_UNSEALED_AND_DENY_REVIEW_UNTIL_ELEVEN_GATES_AND_FIVE_SIGNATURES_EXIST"] }
      }, "additionalProperties": false
    },
    "candidate": {
      "type": "object", "required": ["id", "releaseId", "sourceRevision", "artifactDigest", "configurationDigest", "rollbackReleaseId", "gatesSatisfied", "gatesRequired", "independentlySigned", "sealed", "reviewEligible"],
      "properties": {
        "id": { "type": "string", "pattern": "^d05-candidate@[0-9a-f]{12}-[0-9a-f]{12}$" }, "releaseId": { "type": "string", "pattern": "^developer-portal@" }, "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" }, "artifactDigest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }, "configurationDigest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }, "rollbackReleaseId": { "type": "string", "pattern": "^developer-portal@" },
        "gatesSatisfied": { "const": 0 }, "gatesRequired": { "const": 11 }, "independentlySigned": { "const": false }, "sealed": { "const": false }, "reviewEligible": { "const": false }
      }, "additionalProperties": false
    },
    "liveIdentity": {
      "type": "object", "required": ["schemaVersion", "status", "releaseId", "repository", "service", "channel", "environment", "source", "artifact", "sbom", "configuration", "migration", "secrets", "rollback", "provenance"],
      "properties": {
        "schemaVersion": { "const": "developer.reits.tech/runtime-release-identity/v1" }, "status": { "enum": ["BOUND", "UNVERIFIED"] }, "releaseId": { "$ref": "#/$defs/release" }, "repository": { "const": "local/developer-portal" }, "service": { "const": "reits-developer-portal" }, "channel": { "type": "string" }, "environment": { "type": "string" },
        "source": { "type": "object", "required": ["revision"], "properties": { "revision": { "$ref": "#/$defs/source" } }, "additionalProperties": false },
        "artifact": { "$ref": "#/$defs/digestObject" }, "sbom": { "$ref": "#/$defs/digestObject" }, "configuration": { "$ref": "#/$defs/digestObject" }, "migration": { "$ref": "#/$defs/digestObject" },
        "secrets": { "type": "object", "required": ["referencesOnly", "valuesExposed"], "properties": { "referencesOnly": { "const": true }, "valuesExposed": { "const": false } }, "additionalProperties": false },
        "rollback": { "type": "object", "required": ["targetReleaseId"], "properties": { "targetReleaseId": { "$ref": "#/$defs/release" } }, "additionalProperties": false },
        "provenance": { "type": "object", "required": ["predicateType", "builderId", "signed"], "properties": { "predicateType": { "const": "https://slsa.dev/provenance/v1" }, "builderId": { "$ref": "#/$defs/nullableString" }, "signed": { "type": "boolean" } }, "additionalProperties": false }
      }, "additionalProperties": false
    },
    "digestObject": { "type": "object", "required": ["digest"], "properties": { "digest": { "$ref": "#/$defs/digest" } }, "additionalProperties": false },
    "comparison": {
      "type": "object", "required": ["id", "label", "required", "liveValue", "candidateValue", "matches", "status"],
      "properties": { "id": { "enum": ["releaseId", "sourceRevision", "artifactDigest", "configurationDigest", "rollbackReleaseId"] }, "label": { "type": "string", "minLength": 1 }, "required": { "const": true }, "liveValue": { "$ref": "#/$defs/nullableString" }, "candidateValue": { "type": "string", "minLength": 1 }, "matches": { "type": "boolean" }, "status": { "enum": ["MATCH", "MISMATCH", "UNVERIFIED"] } }, "additionalProperties": false
    },
    "decisionState": {
      "type": "object", "required": ["status", "condition", "regenerationRequired", "sealPermitted", "ownerReviewEligible"],
      "properties": { "status": { "enum": ["LIVE_IDENTITY_UNVERIFIED_REGENERATION_DENIED", "CANDIDATE_STALE_REGENERATION_REQUIRED", "CANDIDATE_CURRENT_UNSEALED_REVIEW_DENIED"] }, "condition": { "type": "string", "minLength": 1 }, "regenerationRequired": { "type": "boolean" }, "sealPermitted": { "const": false }, "ownerReviewEligible": { "const": false } }, "additionalProperties": false
    },
    "cycleBoundary": {
      "type": "object", "required": ["staticCandidateCoupledToPortalRelease", "promotionAdvancesPortalRelease", "committingRegeneratedSnapshotClosesLoop", "requiredExternalization", "statement"],
      "properties": { "staticCandidateCoupledToPortalRelease": { "const": true }, "promotionAdvancesPortalRelease": { "const": true }, "committingRegeneratedSnapshotClosesLoop": { "const": false }, "requiredExternalization": { "const": "RUNTIME_GENERATED_IMMUTABLE_DOSSIER_ARTIFACT_OUTSIDE_PORTAL_RELEASE" }, "statement": { "type": "string", "minLength": 1 } }, "additionalProperties": false
    },
    "safetyTruth": {
      "type": "object", "required": ["runtimeIdentityReadsModeled", "candidateFilesMutated", "dossiersRegenerated", "dossiersSealed", "ownerReviewsRequested", "approvalDecisionsWritten", "d05AcceptanceDecisionsWritten", "controllerListenerStarts", "externalWritesExecuted", "paidResourcesCreated", "d05Accepted"],
      "properties": { "runtimeIdentityReadsModeled": { "const": 1 }, "candidateFilesMutated": { "const": 0 }, "dossiersRegenerated": { "const": 0 }, "dossiersSealed": { "const": 0 }, "ownerReviewsRequested": { "const": 0 }, "approvalDecisionsWritten": { "const": 0 }, "d05AcceptanceDecisionsWritten": { "const": 0 }, "controllerListenerStarts": { "const": 0 }, "externalWritesExecuted": { "const": 0 }, "paidResourcesCreated": { "const": false }, "d05Accepted": { "const": false } }, "additionalProperties": false
    },
    "discovery": {
      "type": "object", "required": ["workbench", "schema", "liveIdentity", "candidate", "handoff", "closure", "releaseRegistry"],
      "properties": { "workbench": { "const": "/release-foundation#runner-controller-dossier-drift-sentinel" }, "schema": { "const": "/schemas/runner-controller-dossier-drift-status.v1.schema.json" }, "liveIdentity": { "const": "/api/release-unit" }, "candidate": { "const": "/api/runner-controller/dossier-regeneration" }, "handoff": { "const": "/api/runner-controller/evidence-handoff" }, "closure": { "const": "/api/runner-factory/controller/d05-acceptance-closure" }, "releaseRegistry": { "const": "/api/release-units" } }, "additionalProperties": false
    }
  },
  "additionalProperties": false
}
