== LOCATION CONTEXT ==
short_id: {location_id}
name (Korean — context only, IGNORE the proper name): {location_name}
description (English visual): {location_description}
visual_traits (JSON): {visual_traits_json}

== SHOTS IN THIS LOCATION ({shot_count}) ==
{shots_block}

== VISUAL WORLD RULES (excerpt) ==
{world_rules_excerpt}

== TASK ==
Decide first whether to skip chain rendering for this location (see SKIP DECISION in the system message). Then either:

A) If SKIP applies (outdoor / open-air):
- Output strict JSON with `skip_chain: true`, a short English `skip_reason`, empty arrays for `nodes` / `execution_order` / `unassigned_shots`, and a one-sentence `rationale_summary`.
- Do NOT invent any nodes — the renderer will use a previous-related-shot reference instead.

B) Otherwise (indoor / enclosed / fixed-set):
- Output strict JSON with `skip_chain: false`, empty `skip_reason: ""`, and a full chain plan as below:
- Every shot above must end up in exactly ONE node's shot_ids.
- All ids, labels, descriptions, rationales: English ASCII common nouns only.
- location_id field in the output must equal "{location_id}".
- At least one node must have kind = "anchor_root".
- execution_order: parents strictly before children.
- unassigned_shots should be empty.

In both cases:
- Output strict JSON matching the response schema (no markdown fence).
