{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.invalid/course/deck-content-schema-v09.json",
  "title": "Deck Content Schema v0.9",
  "type": "object",
  "required": [
    "deck_id",
    "version",
    "audience",
    "objective",
    "core_claim",
    "slides"
  ],
  "properties": {
    "deck_id": {
      "type": "string",
      "minLength": 1
    },
    "version": {
      "type": "string",
      "minLength": 1
    },
    "audience": {
      "type": "string",
      "minLength": 1
    },
    "objective": {
      "type": "string",
      "minLength": 1
    },
    "core_claim": {
      "type": "string",
      "minLength": 1
    },
    "execution_record": {
      "type": "object",
      "required": [
        "actual_model_or_tool",
        "input_versions",
        "human_reviewer",
        "open_item_count",
        "handoff_file"
      ],
      "properties": {
        "actual_model_or_tool": {
          "type": "string"
        },
        "input_versions": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "human_reviewer": {
          "type": "string"
        },
        "open_item_count": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0
        },
        "handoff_file": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "slides": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "slide_id",
          "role",
          "title",
          "key_message",
          "supporting_points",
          "evidence_refs",
          "visual_intent",
          "uncertainty",
          "speaker_note",
          "human_decision"
        ],
        "properties": {
          "slide_id": {
            "type": "string",
            "pattern": "^S[0-9]{2}$"
          },
          "role": {
            "enum": [
              "opening",
              "context",
              "problem",
              "evidence",
              "option",
              "decision",
              "action",
              "appendix"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "key_message": {
            "type": "string",
            "minLength": 1
          },
          "supporting_points": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "evidence_refs": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "visual_intent": {
            "type": "string"
          },
          "uncertainty": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "speaker_note": {
            "type": "string"
          },
          "human_decision": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
