{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Cortex Agent Decision",
  "type": "object",
  "required": [
    "schema_version",
    "decision_id",
    "type",
    "status",
    "requested_by",
    "prompt",
    "options",
    "selected_option",
    "resolved_by",
    "resolved_at",
    "rationale",
    "gate",
    "relations",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "schema_version": { "const": 1 },
    "decision_id": { "type": "string", "pattern": "^D-[A-Za-z0-9][A-Za-z0-9._-]*$" },
    "type": {
      "type": "string",
      "enum": ["approval", "architecture", "merge", "release", "risk"]
    },
    "status": {
      "type": "string",
      "enum": ["open", "approved", "rejected", "revision_requested", "canceled", "superseded"]
    },
    "requested_by": { "type": "string", "minLength": 1 },
    "prompt": { "type": "string", "minLength": 1 },
    "options": {
      "type": "array",
      "minItems": 2,
      "uniqueItems": true,
      "items": { "type": "string", "minLength": 1 }
    },
    "selected_option": { "type": ["string", "null"] },
    "resolved_by": { "type": ["string", "null"] },
    "resolved_at": { "type": ["string", "null"], "format": "date-time" },
    "rationale": { "type": "string" },
    "gate": {
      "type": "object",
      "required": ["action", "resource_ref"],
      "properties": {
        "action": {
          "type": "string",
          "enum": ["architecture", "merge", "release", "destructive", "credential", "external_side_effect"]
        },
        "resource_ref": { "type": "string", "minLength": 1 }
      },
      "additionalProperties": false
    },
    "relations": {
      "type": "object",
      "required": ["task_ids", "mission_ids", "run_ids", "queue_ids", "session_ids", "artifact_refs", "worktree_paths"],
      "properties": {
        "task_ids": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "mission_ids": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "run_ids": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "queue_ids": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "session_ids": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "artifact_refs": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "worktree_paths": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
      },
      "additionalProperties": false
    },
    "superseded_by_decision_id": {
      "type": ["string", "null"],
      "pattern": "^D-[A-Za-z0-9][A-Za-z0-9._-]*$"
    },
    "created_at": { "type": "string", "format": "date-time" },
    "updated_at": { "type": "string", "format": "date-time" }
  },
  "allOf": [
    {
      "if": { "properties": { "status": { "enum": ["approved", "rejected", "revision_requested"] } }, "required": ["status"] },
      "then": {
        "properties": {
          "selected_option": { "type": "string", "minLength": 1 },
          "resolved_by": { "type": "string", "minLength": 1 },
          "resolved_at": { "type": "string", "format": "date-time" }
        }
      }
    },
    {
      "if": { "properties": { "status": { "const": "open" } }, "required": ["status"] },
      "then": {
        "properties": {
          "selected_option": { "type": "null" },
          "resolved_by": { "type": "null" },
          "resolved_at": { "type": "null" }
        }
      }
    },
    {
      "if": { "properties": { "status": { "const": "superseded" } }, "required": ["status"] },
      "then": {
        "properties": {
          "selected_option": { "type": "null" },
          "resolved_by": { "type": "string", "minLength": 1 },
          "resolved_at": { "type": "string", "format": "date-time" },
          "superseded_by_decision_id": { "type": "string", "pattern": "^D-[A-Za-z0-9][A-Za-z0-9._-]*$" }
        },
        "required": ["resolved_by", "resolved_at", "superseded_by_decision_id"]
      }
    }
  ],
  "additionalProperties": false
}
