{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://iarpg.com/mission-brief.schema.json",
  "title": "IARPG-OPS-2 Mission Brief",
  "description": "Mission brief contract for fictional intelligence operations under IARPG-OPS-2.",
  "type": "object",
  "required": [
    "standard_version",
    "mission_id",
    "title",
    "authority",
    "customer",
    "mandate",
    "jurisdiction",
    "intelligence_requirement",
    "known_facts",
    "assumptions",
    "competing_hypotheses",
    "roles",
    "information_asymmetry",
    "collection_plan",
    "sources",
    "player_interactions",
    "cover_and_access",
    "evidence_threshold",
    "synthetic_source_policy",
    "compromise_indicators",
    "abort_conditions",
    "extraction_plan",
    "debrief_deliverable",
    "reward_posture",
    "reason_codes",
    "fiction_boundary",
    "states",
    "transitions",
    "evidence_events",
    "failure_paths",
    "extraction_states",
    "debrief_outputs",
    "seed"
  ],
  "properties": {
    "mission_id": {
      "type": "string",
      "minLength": 3
    },
    "title": {
      "type": "string",
      "minLength": 3
    },
    "authority": {
      "type": "string",
      "minLength": 2
    },
    "customer": {
      "type": "string",
      "minLength": 2
    },
    "mandate": {
      "type": "string",
      "minLength": 8
    },
    "intelligence_requirement": {
      "type": "string",
      "minLength": 8
    },
    "jurisdiction": {
      "type": "string",
      "minLength": 2
    },
    "known_facts": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "collection_plan": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "evidence_threshold": {
      "type": "string",
      "minLength": 8
    },
    "cover_plan": {
      "type": "string",
      "deprecated": true,
      "description": "Legacy OPS-1 alias. Use cover_and_access."
    },
    "abort_condition": {
      "type": "string",
      "minLength": 8,
      "deprecated": true,
      "description": "Legacy OPS-1 alias. Use abort_conditions."
    },
    "extraction_plan": {
      "type": "string",
      "minLength": 8
    },
    "debrief_deliverable": {
      "type": "string",
      "minLength": 8
    },
    "synthetic_source_policy": {
      "type": "string",
      "enum": [
        "none",
        "disclosed-and-claim-only",
        "disclosed-and-intentionally-unreliable"
      ]
    },
    "reward_posture": {
      "type": "string",
      "enum": [
        "verified",
        "authority-reviewed",
        "reputation-backed",
        "unverified"
      ]
    },
    "standard_version": {
      "const": "IARPG-OPS-2"
    },
    "interaction_model": {
      "type": "string",
      "minLength": 20,
      "description": "Legacy OPS-1 alias. Use player_interactions.",
      "deprecated": true
    },
    "reason_codes": {
      "type": "boolean",
      "const": true,
      "description": "Mission outcomes and restrictions expose reviewable reason codes."
    },
    "fiction_boundary": {
      "type": "boolean",
      "const": true,
      "description": "The brief is explicitly fictional and does not invite real-world targeting or validation of personal surveillance claims."
    },
    "competing_hypotheses": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2
    },
    "information_asymmetry": {
      "type": "object"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "player_interactions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "cover_and_access": {
      "type": "string",
      "minLength": 8
    },
    "compromise_indicators": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "abort_conditions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "states": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 4
    },
    "transitions": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "minItems": 3
    },
    "failure_paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "seed": {
      "type": "string",
      "minLength": 1
    },
    "evidence_events": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "Reviewable evidence events emitted during the operation."
    },
    "extraction_states": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "Declared extraction and remote-debrief states."
    },
    "debrief_outputs": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "Products required from the debrief."
    }
  },
  "additionalProperties": true
}
