{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://oshun.dev/schemas/eve-sota-attachment-artifact-lifecycle.schema.json",
  "title": "Eve attachment and generated-artifact lifecycle record",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion",
    "initiativeId",
    "taskId",
    "evaluatedOn",
    "policy",
    "officialSources",
    "assetKinds",
    "sensitivityClasses",
    "deletionPartitions",
    "controls",
    "sourceBindings",
    "limitations"
  ],
  "properties": {
    "schemaVersion": { "const": "eve.attachment-artifact-lifecycle.v1" },
    "initiativeId": { "const": "eve-sota-gap-closure-2026-09-01" },
    "taskId": { "const": "14.8" },
    "evaluatedOn": { "type": "string", "format": "date" },
    "policy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "missingEvidenceDefault",
        "publicRawObjectAccess",
        "maxSignedPermalinkHours",
        "maxBiometricRetentionDays",
        "sessionDeletionRequiresZeroResiduals",
        "engineeringMayNotClaimCompliance"
      ],
      "properties": {
        "missingEvidenceDefault": { "const": "block" },
        "publicRawObjectAccess": { "const": "prohibited" },
        "maxSignedPermalinkHours": { "const": 24 },
        "maxBiometricRetentionDays": { "const": 30 },
        "sessionDeletionRequiresZeroResiduals": { "const": true },
        "engineeringMayNotClaimCompliance": { "const": true }
      }
    },
    "officialSources": {
      "type": "array",
      "minItems": 4,
      "items": { "$ref": "#/$defs/officialSource" }
    },
    "assetKinds": {
      "type": "array",
      "minItems": 5,
      "uniqueItems": true,
      "items": {
        "enum": ["uploaded-attachment", "generated-artifact", "generated-media", "share", "export"]
      }
    },
    "sensitivityClasses": {
      "type": "array",
      "minItems": 5,
      "uniqueItems": true,
      "items": { "enum": ["public", "internal", "personal", "sensitive", "biometric"] }
    },
    "deletionPartitions": {
      "type": "array",
      "minItems": 7,
      "uniqueItems": true,
      "items": {
        "enum": ["object-storage", "metadata", "memory", "trace", "backup", "share", "export"]
      }
    },
    "controls": {
      "type": "array",
      "minItems": 8,
      "items": { "$ref": "#/$defs/control" }
    },
    "sourceBindings": {
      "type": "array",
      "minItems": 7,
      "items": { "$ref": "#/$defs/sourceBinding" }
    },
    "limitations": {
      "type": "array",
      "minItems": 3,
      "items": { "$ref": "#/$defs/limitation" }
    }
  },
  "$defs": {
    "id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
    "text": { "type": "string", "minLength": 1 },
    "officialSource": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "authority", "url", "retrievedOn", "claimBoundary"],
      "properties": {
        "id": { "$ref": "#/$defs/id" },
        "authority": { "$ref": "#/$defs/text" },
        "url": { "type": "string", "format": "uri", "pattern": "^https://" },
        "retrievedOn": { "type": "string", "format": "date" },
        "claimBoundary": { "$ref": "#/$defs/text" }
      }
    },
    "control": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "decision", "requiredEvidence", "sourceBindingRefs"],
      "properties": {
        "id": { "$ref": "#/$defs/id" },
        "decision": { "const": "block-on-missing-or-residual-evidence" },
        "requiredEvidence": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": { "$ref": "#/$defs/text" }
        },
        "sourceBindingRefs": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": { "$ref": "#/$defs/id" }
        }
      }
    },
    "sourceBinding": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "source", "includes"],
      "properties": {
        "id": { "$ref": "#/$defs/id" },
        "source": { "$ref": "#/$defs/text" },
        "includes": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": { "$ref": "#/$defs/text" }
        }
      }
    },
    "limitation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "statement"],
      "properties": {
        "id": { "$ref": "#/$defs/id" },
        "statement": { "$ref": "#/$defs/text" }
      }
    }
  }
}
