{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Agent Production Playbook 1.0",
  "type": "object",
  "required": ["schema_version", "review_date", "units", "status_contract", "render_settings", "coordinate_contract", "evidence", "recipes", "sequences"],
  "additionalProperties": false,
  "properties": {
    "schema_version": {"const": "1.0.0"},
    "review_date": {"type": "string", "format": "date"},
    "units": {"type": "object", "minProperties": 6, "additionalProperties": {"type": "string"}},
    "status_contract": {"type": "object", "required": ["measured-observation", "editorial-interpretation", "fitted-approximation", "proposed-production-default"], "additionalProperties": {"type": "string"}},
    "render_settings": {"type": "object", "required": ["width_px", "height_px", "fps", "format", "codec", "crf", "pixel_format", "audio", "color", "font"], "additionalProperties": false, "properties": {
      "width_px": {"type": "integer", "minimum": 640}, "height_px": {"type": "integer", "minimum": 360}, "fps": {"enum": [24, 30, 60]}, "format": {"const": "mp4"}, "codec": {"const": "libx264"}, "crf": {"type": "integer", "minimum": 0, "maximum": 51}, "pixel_format": {"const": "yuv420p"}, "audio": {"const": false}, "color": {"type": "string"}, "font": {"type": "string"}
    }},
    "coordinate_contract": {"type": "string", "minLength": 30},
    "evidence": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/evidence"}},
    "recipes": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/recipe"}},
    "sequences": {"type": "array", "minItems": 3, "items": {"$ref": "#/$defs/sequence"}}
  },
  "$defs": {
    "id": {"type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},
    "text": {"type": "string", "minLength": 1},
    "texts": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/text"}},
    "ids": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/id"}},
    "seconds": {"type": "number", "minimum": 0},
    "status": {"enum": ["measured-observation", "editorial-interpretation", "fitted-approximation", "proposed-production-default"]},
    "evidence": {
      "type": "object", "additionalProperties": false,
      "required": ["id", "film_slug", "film_title", "source_url", "source_sha256", "channel_id", "start_s", "end_s", "dataset", "record_id", "study_route", "claim", "claim_status", "precision", "contrast"],
      "properties": {
        "id": {"$ref": "#/$defs/id"}, "film_slug": {"$ref": "#/$defs/id"}, "film_title": {"$ref": "#/$defs/text"}, "source_url": {"type": "string", "pattern": "^https://www\\.youtube\\.com/watch\\?v=[A-Za-z0-9_-]{11}$"}, "source_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"}, "channel_id": {"const": "UCXZCJLdBC09xxGZ6gcdrc6A"}, "start_s": {"$ref": "#/$defs/seconds"}, "end_s": {"$ref": "#/$defs/seconds"}, "dataset": {"type": "string", "pattern": "^[a-z-]+\\.json$"}, "record_id": {"$ref": "#/$defs/id"}, "study_route": {"type": "string", "pattern": "^/videos/"}, "claim": {"$ref": "#/$defs/text"}, "claim_status": {"$ref": "#/$defs/status"}, "precision": {"$ref": "#/$defs/text"}, "contrast": {"$ref": "#/$defs/text"},
        "additional_inspection": {"type": "object", "required": ["dataset", "record_id"], "additionalProperties": false, "properties": {"dataset": {"const": "playbook-inspection.json"}, "record_id": {"$ref": "#/$defs/id"}}}
      }
    },
    "phase": {
      "type": "object", "additionalProperties": false, "required": ["id", "start_s", "end_s", "layer", "action"],
      "properties": {"id": {"$ref": "#/$defs/id"}, "start_s": {"$ref": "#/$defs/seconds"}, "end_s": {"$ref": "#/$defs/seconds"}, "layer": {"$ref": "#/$defs/id"}, "action": {"$ref": "#/$defs/text"}}
    },
    "layer": {
      "type": "object", "additionalProperties": false, "required": ["id", "z", "rect_norm", "coordinate_space", "construction"],
      "properties": {"id": {"$ref": "#/$defs/id"}, "z": {"type": "integer", "minimum": 0}, "rect_norm": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "number", "minimum": 0, "maximum": 1}}, "coordinate_space": {"enum": ["frame", "workspace"]}, "construction": {"$ref": "#/$defs/text"}}
    },
    "parameters": {
      "type": "object", "minProperties": 1, "additionalProperties": false,
      "patternProperties": {
        "_s$": {"$ref": "#/$defs/seconds"},
        "_(?:h|w|opacity)$": {"type": "number", "minimum": 0, "maximum": 1},
        "_norm$": {"type": "array", "minItems": 2, "maxItems": 4, "items": {"type": "number", "minimum": 0, "maximum": 1}}
      },
      "properties": {
        "camera_scale": {"type": "number", "minimum": 1, "maximum": 3},
        "max_upscale_ratio": {"type": "number", "exclusiveMinimum": 0},
        "ease": {"const": "1-(1-u)^3"},
        "selection_row": {"type": "integer", "minimum": 0},
        "landmark": {"$ref": "#/$defs/text"},
        "latency_status": {"const": "illustrative-not-product-latency"},
        "read_words_per_s": {"type": "number", "exclusiveMinimum": 0},
        "reference_viewport_px": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "integer", "minimum": 1}},
        "identity_tolerance_px": {"type": "integer", "minimum": 0},
        "transition": {"const": "cut"},
        "entrance": {"const": "hard-on"}
      }
    },
    "recipe": {
      "type": "object", "additionalProperties": false,
      "required": ["id", "version", "title", "intent", "avoid_when", "evidence_ids", "claim_status", "parameter_status", "duration_s", "hold_start_s", "minimum_hold_s", "duration_adaptation", "phases", "layers", "parameters", "capture_requirements", "construction", "failure_modes", "verification", "entry_state", "exit_state", "run", "renderer"],
      "properties": {
        "id": {"$ref": "#/$defs/id"}, "version": {"type": "integer", "minimum": 1}, "title": {"$ref": "#/$defs/text"}, "intent": {"$ref": "#/$defs/text"}, "avoid_when": {"$ref": "#/$defs/text"}, "evidence_ids": {"$ref": "#/$defs/ids"}, "claim_status": {"$ref": "#/$defs/status"}, "parameter_status": {"const": "proposed-production-default"}, "duration_s": {"type": "number", "exclusiveMinimum": 0}, "hold_start_s": {"$ref": "#/$defs/seconds"}, "minimum_hold_s": {"$ref": "#/$defs/seconds"}, "duration_adaptation": {"$ref": "#/$defs/text"}, "phases": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/phase"}}, "layers": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/layer"}}, "parameters": {"$ref": "#/$defs/parameters"}, "capture_requirements": {"$ref": "#/$defs/texts"}, "construction": {"$ref": "#/$defs/texts"}, "failure_modes": {"$ref": "#/$defs/texts"}, "verification": {"$ref": "#/$defs/texts"}, "entry_state": {"$ref": "#/$defs/id"}, "exit_state": {"$ref": "#/$defs/id"}, "run": {"$ref": "#/$defs/text"}, "renderer": {"$ref": "#/$defs/id"}
      }
    },
    "sequence": {
      "type": "object", "additionalProperties": false, "required": ["id", "title", "segments", "duration_s", "checkpoints_s", "focus", "evidence_ids"],
      "properties": {"id": {"$ref": "#/$defs/id"}, "title": {"$ref": "#/$defs/text"}, "segments": {"$ref": "#/$defs/ids"}, "duration_s": {"type": "number", "exclusiveMinimum": 0}, "checkpoints_s": {"type": "array", "minItems": 3, "items": {"$ref": "#/$defs/seconds"}}, "focus": {"$ref": "#/$defs/text"}, "evidence_ids": {"$ref": "#/$defs/ids"}}
    }
  }
}
