{
  "type": "object",
  "properties": {
    "location_id": {"type": "string"},
    "skip_chain": {
      "type": "boolean",
      "description": "true if this location is OUTDOOR/OPEN-AIR (street, road, coast, sea, forest, yard, park, exterior rooftop, public square, beach, dock, vehicle exterior, etc.) where shot-to-shot continuity is naturally accepting of variation, so chain rendering adds little value. When true, nodes / execution_order / unassigned_shots may all be empty arrays — the renderer will fall back to a previous-related-shot reference. When false, plan a full chain as usual."
    },
    "skip_reason": {
      "type": "string",
      "description": "Short English reason when skip_chain=true (e.g. 'outdoor open-air'). Empty string when skip_chain=false."
    },
    "rationale_summary": {"type": "string"},
    "nodes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {"type": "string"},
          "kind": {"type": "string", "enum": ["anchor_root", "anchor_state"]},
          "label": {"type": "string"},
          "description": {"type": "string"},
          "shot_ids": {
            "type": "array",
            "items": {"type": "string"}
          },
          "parent_id": {"type": "string"},
          "depth": {"type": "integer"},
          "rationale": {"type": "string"},
          "shared_visual_anchors_with_parent": {
            "type": "array",
            "items": {"type": "string"}
          }
        },
        "required": [
          "id", "kind", "label", "description", "shot_ids",
          "parent_id", "depth", "rationale",
          "shared_visual_anchors_with_parent"
        ],
        "additionalProperties": false
      }
    },
    "execution_order": {
      "type": "array",
      "items": {"type": "string"}
    },
    "unassigned_shots": {
      "type": "array",
      "items": {"type": "string"}
    }
  },
  "required": [
    "location_id", "skip_chain", "skip_reason", "rationale_summary",
    "nodes", "execution_order", "unassigned_shots"
  ],
  "additionalProperties": false
}
