{
  "source": "scene_detail.manifest.json",
  "_archival_note": "pre-framing_scale_enum_sot_v1 snapshot (G4.6 round capture, area B/C 시기) — do not sweep. framing_scale_keywords / identify framing_scale from camera_direction references 보존: historical card snapshot intent. Gate 11 grep exclusion.",
  "shot": {
    "scene_index": 1,
    "heading": "S#1. 숲속 / 해 질 무렵",
    "beat_title": "공중에서 덮치는 검은 형상",
    "representative_moment": "검은 형상이 허공으로 뛰어올라 C07을 덮치기 직전의 찰나의 순간.",
    "t2i_variations": [
      {
        "variant_label": "var_1",
        "camera_effect": "Wide shot from a low angle, underexposed cold blue-gray dusk lighting with dim sky backlight",
        "t2i_prompt": "Photorealistic cinematic still. A low-angle observer's view looking up from the muddy forest floor, enveloped in fading cold blue-gray dusk light. Focus on the spatial tension between the airborne attacker and the victim in the dense clearing they both occupy. In the upper center of the frame against the dim clouded sky, C15O15 in a dark torn cloak, a mysterious East Asian figure, is caught mid-leap in the air. Facing the camera, arms outstretched downward, eyes fixed on the man below. C15O15 appears as a backlit figure, body volume preserved with cold rim light tracing the shoulders and jaw contour, the torn cloak trailing upward in the direction opposite to the downward motion. In the lower frame, C07O09 in a worn hiking jacket, a middle-aged East Asian man, is recoiling backward on his back foot. With his back to the camera, his face is turned upward in left profile, eyes fixed on the leaping attacker above. The surrounding foliage and tree trunks are swallowed by deep, pervasive shadows, creating a chilling atmosphere, while the dense tree canopy forms a dark border around the fading gray-blue evening sky.",
        "outfit_assignments": [
          {
            "character_id": "C07",
            "outlook_id": "O09"
          },
          {
            "character_id": "C15",
            "outlook_id": "O15"
          }
        ],
        "source_facts": [
          "Scene text: 숲속 / 해 질 무렵 (Forest / Dusk), 검은 인영이 남자를 덮친다.",
          "Shot description: 검은 형상이 한국인 남자를 덮치기 위해 공중으로 뛰어올라 양팔을 뻗은 채 허공에 떠 있는 찰나의 순간.",
          "DP instruction: observer's direct view locks into a wide shot low angle... attacker bursts out of the upper center of frame, recoiling victim beneath."
        ],
        "visual_inferences": [
          "fixed_element dusk_forest_lighting: Deep, pervasive shadows swallowing the background elements due to the extremely low light level.",
          "To avoid a flat, featureless silhouette, rim light is added to trace the attacker's shoulders and jawline while maintaining the underexposed backlit mood.",
          "Motion is frozen mid-leap with the cloak trailing opposite to the direction of the dive."
        ],
        "creative_decisions": [
          "Placed the camera at a low angle from the forest floor to geometrically align the sky in the background of the leaping figure while keeping the victim anchored in the lower frame.",
          "Explicitly linked the two characters within the 'dense clearing they both occupy' to prevent background separation artifacts.",
          "Turned the victim's face into a left profile looking upward to comply with face identifiability rules while keeping his back to the camera."
        ],
        "confidence": "high",
        "owned_validation": {
          "schema_version": 1,
          "t2i_prompt_hash": "e1d53f195ead5255",
          "owned_hash": "e3b0c44298fc1c14",
          "camera_direction_hash": "d7231eb8d11090b0",
          "validator": "scene_detail_owned_objects.v1",
          "violations": []
        }
      }
    ],
    "scene_type": "normal",
    "dependent_scene_index": 1,
    "dependency_reason": "직전 샷과 동일한 숲속 배경 및 한색(cold blue-gray) 조명 상태를 유지하며 동작의 연속성과 공간을 보존",
    "_shot_index": 5,
    "visible_entities": [
      "C07",
      "C15",
      "P01",
      "L01"
    ],
    "render_prompt_card": {
      "schema_version": 1,
      "shot_key": {
        "scene_index": 1,
        "shot_index": 5
      },
      "render_strategy": {
        "mode": "direct",
        "primary_subject": "",
        "framing_scale": "medium",
        "moment_lock": "single still moment from the selected shot only",
        "camera_direction": "An observer's direct view locks into a wide shot (WS) low angle from the dark clearing, static and aimed upward as 검은 형상 bursts out of the upper center of frame. The 한국인 남자 stays small and lower in the frame, recoiling beneath it, while the black figure is held at the apex of its leap as a silhouette against the dim sky.",
        "lighting_mood": "The scene is underexposed in cold dusk tones, using the last gray sky as backlight to carve the attacker into a black occult silhouette.",
        "perception_mode": "direct",
        "spatial_consistency": {
          "camera_frame_rule": {
            "applies_when": "camera_direction specifies a vertical height/position (low / hip-height / overhead / ground level / quay level / floor level / from above) and the scene description includes frame-edge surfaces",
            "consistency_check_summary": "elements described inside the frame must be at vertical/depth positions consistent with the camera's height — low cameras place feet/lower-body in the lower frame, overhead cameras place head/shoulders in upper frame, hip-height cameras place torso in frame with head/feet implied beyond edges",
            "core_principles": [
              "low cameras at ground/quay/floor level place feet and lower legs in the lower frame; chest-height frame-edge surfaces behind the subject are geometrically forbidden",
              "overhead high angles from above place the top of head and shoulders in the upper-center frame; floor surfaces visible below feet at the lower frame edge are forbidden",
              "hip-height side cameras place torso and arms in frame; head and feet are implied beyond frame edges, not both fully visible together",
              "full body shots require either eye-level or high-angle framing where head and feet both fit; low cameras + full silhouette in one frame is forbidden"
            ],
            "forbidden_combinations": [
              "low camera at ground/quay/floor level + frame-edge surface described at chest/waist height behind the subject",
              "overhead high angle + feet visible at the lower frame edge with floor visible below them",
              "hip-height side camera + full silhouette including head and feet visible in same frame",
              "low angle looking up + ceiling and floor both fully visible in same frame"
            ],
            "recommended_phrasings": [
              "low observer at ground level, shoes and lower legs occupying the lower frame, upper body extending toward the upper edge",
              "overhead high angle from above, the top of head and shoulders fill the upper-center frame, the floor visible around them",
              "at hip height beside the subject, torso and arms in frame, head and lower legs implied beyond frame edges",
              "low angle looking up at the figure, ceiling lamps in the upper frame, the wall behind extending downward"
            ],
            "self_check_steps": [
              "identify the camera position phrasing (height + angle)",
              "list elements described inside the frame (foreground prop, body parts, background surfaces)",
              "verify each element's vertical/depth placement is geometrically consistent with that camera position",
              "if mismatch found, adjust frame-edge description to match camera position"
            ],
            "rationale_summary": "T2I 모델은 카메라 위치와 frame 안 요소 vertical 좌표 모순 시 절충 합성 — 인물이 가구에 박히거나 신체 일부가 잘리거나 prop 이 떠 있는 부자연스러운 결과"
          },
          "fg_bg_shared_anchor_rule": {
            "applies_when": "two characters share an interaction (dialogue / handing object / facing / co-watching) AND are described as foreground/background separated AND a shared surface or spatial anchor exists between them (bench / table / door / room)",
            "shared_anchor_required": "describe the shared surface or spatial anchor explicitly so both figures occupy the same physical space",
            "forbidden_phrasings": [
              "fg/bg separation without naming the shared surface/space",
              "isolated foreground hand reaching with another figure 'in the rear background' (no shared anchor named)",
              "one figure 'in the foreground' and another 'in the back' without naming the room/surface they share"
            ],
            "recommended_keywords": [
              "shared bench / shared table / shared surface",
              "the same X they both occupy (X = bench, sofa, table, doorway, room)",
              "across the X from each other",
              "<prop> crosses the air between them (interaction prop visually links the two)",
              "the <surface> sharing a single line of sight from the camera"
            ],
            "self_check_steps": [
              "do the two characters share a single interaction (dialogue, handing, facing, co-watching)?",
              "is one foreground and the other background-separated?",
              "is the shared surface/space anchor explicitly named?",
              "if not, add one of the recommended keywords"
            ],
            "rationale_summary": "fg/bg 분리만 묘사하면 모델이 두 인물을 다른 공간에 배치하거나 인터랙션이 끊긴 어색한 합성 — 공유 anchor 명시가 같은 물리적 공간 강제"
          },
          "primary_framing_rule": {
            "applies_when": "framing_scale ∈ {close, medium, insert} from `_derive_framing_scale()` (render_strategy.framing_scale, production enum). wide-class shots are mapped to medium and use `wide_medium_rules`. The LLM may *additionally* infer wide from prose keywords (`wide shot` / `전경` / `establishing` / `aerial`) for stricter checking — these are LLM-side reasoning hints, not the production framing_scale enum (RO-4 binding — card-only classification).",
            "framing_scale_keywords": {
              "_comment": "LLM-facing reasoning hints — not the production framing_scale enum. card framing_scale is close/medium/insert from _derive_framing_scale(); wide is LLM hint only (RO-4 / RO-5 binding). Canary close-framing shot scope filter uses production _CLOSE_FRAMING_RE (9-entry alignment) — separate from this 11-entry LLM list.",
              "close": [
                "close-up",
                "CU",
                "MCU",
                "ECU",
                "XCU",
                "extreme close-up",
                "클로즈업",
                "손가락이",
                "손이",
                "눈이",
                "얼굴이"
              ],
              "wide": [
                "wide shot",
                "establishing",
                "aerial",
                "전경",
                "전신"
              ],
              "medium_default": "medium / mid / two-shot — anything not matching close/wide keywords"
            },
            "close_framing_rules": {
              "primary_subject_only_fully_visible": "the named primary subject (hand / face / object) is the only fully visible entity in the frame",
              "other_entities_appearance_options": [
                "partial visibility — shoulder slice / arm slice / sleeve / fingertips entering the frame edge",
                "soft background — out-of-focus silhouette via shallow depth of field",
                "absent — not rendered at all even if listed in visible_entities"
              ],
              "forbidden_combinations": [
                "same character's full body and body-part close-up in the same frame (view mixing)",
                "two characters both rendered as sharp close-up faces in the same frame"
              ],
              "body_part_focus_cross_ref": "see id_policy.body_part_focus_rule (G4.3 sub-field — body-part Focus 시 C##O## 금지)"
            },
            "wide_medium_rules": {
              "primary_and_secondary_both_visible": "primary subject + secondary entities all renderable",
              "body_part_close_up_forbidden": "body-part close-up of any character is forbidden in wide/medium framing — close-up belongs in a separate shot",
              "fg_bg_separation_requires_shared_anchor": "if two characters are rendered fg/bg separated, also apply fg_bg_shared_anchor_rule",
              "body_part_focus_cross_ref": "see id_policy.body_part_focus_rule (G4.3 sub-field — body-part Focus 시 C##O## 금지)"
            },
            "self_check_steps": [
              "identify framing_scale from camera_direction",
              "if close: verify only primary subject is fully visible; other entities are partial / soft bg / absent",
              "verify same character's full body + body-part close-up are not combined",
              "if close: verify two faces are not both rendered sharp"
            ],
            "rationale_summary": "한 shot 안 framing scale 가 일관되어야 모델이 단일 카메라 셔터로 해석. close/wide/medium 혼합은 multi-camera 합성으로 인식되어 인물 분열 / 부위 분리 / 시점 혼합 합성"
          },
          "rationale_summary": "Rule F/G/J 의 spatial consistency 룰 통합 — camera 위치 vs frame edge 모순, fg/bg 분리 시 공유 anchor 누락, framing scale 혼합. 3 sub-rule 모두 single t2i_prompt = single camera shutter 원칙의 spatial 측면."
        },
        "constraints": [
          "one prompt captures one still moment",
          "do not combine full-body framing and body-part close-up in one frame",
          "camera position and frame-edge elements must be geometrically consistent — see render_strategy.spatial_consistency.camera_frame_rule",
          "two characters in fg/bg separation must share a named surface/space anchor — see render_strategy.spatial_consistency.fg_bg_shared_anchor_rule",
          "framing_scale binds entity rendering — close = primary subject only fully visible, wide/medium = no body-part close-up — see render_strategy.spatial_consistency.primary_framing_rule"
        ]
      },
      "id_policy": {
        "allowed_base_entity_ids": [
          "C07",
          "C15",
          "P01",
          "L01"
        ],
        "allowed_outlook_pairs": [
          {
            "character_id": "C07",
            "outlook_id": "O09"
          },
          {
            "character_id": "C15",
            "outlook_id": "O15"
          }
        ],
        "must_use_composite_character_ids": true,
        "common_noun_required_when": [
          "body-part close-up",
          "photo/poster/screen/mirror/reflection/projection depiction",
          "unregistered extra"
        ],
        "demographic_fallback_required": true,
        "face_identifiability_rule": {
          "use_entity_id_when": [
            "face identifiable: front, profile, three-quarter, or eyes closed",
            "OTS framing with any visible face"
          ],
          "common_noun_required_when": [
            "back to camera with no visible face",
            "silhouette or blurred outline only",
            "OTS with only back of head/shoulder, face entirely hidden"
          ],
          "id_use_summary": "C##/C##O## allowed only when face is identifiable AND framing is not dominated by an isolated body part",
          "rationale_summary": "C## 사용 시 얼굴 ref 가 자동 결합 — 얼굴이 안 보이는 인물에 C## 부착하면 ref 와 본문 묘사가 충돌"
        },
        "body_part_focus_rule": {
          "trigger_phrases": [
            "focus on",
            "close on",
            "tight on",
            "detail on"
          ],
          "applies_to": "any body part (face or non-face) when the framing is dominated by that part",
          "id_use": "forbidden — use a common noun + demographic descriptor instead",
          "common_noun_examples_generic": [
            "a trembling hand",
            "an exposed forearm",
            "the furrowed brow of a figure in shadow",
            "the clenched jaw of a figure in profile"
          ]
        },
        "close_framing_face_phrasing": {
          "forbidden_phrases": [
            "face filling the entire frame",
            "face filling nearly the entire frame",
            "her face fills the frame",
            "shoulders only entering the frame",
            "head snapped sideways",
            "his face fills the frame"
          ],
          "recommended_phrasings": [
            "tight framing on her face, upper body in frame",
            "close on his expression, shoulder visible at the edge",
            "head-and-shoulder composition, face occupying the center-right",
            "face in profile at the left, neck and upper chest visible"
          ],
          "rationale_summary": "T2I 모델은 얼굴이 프레임 전체를 가득 채우는 묘사를 받으면 몸과 분리된 얼굴만 공중에 떠 있는 합성을 낸다 — 어깨/상반신 일부를 프레임 안에 유지"
        },
        "reproduction_surface_rule": {
          "applies": false,
          "id_use": "forbidden — common noun + demographic descriptor only",
          "rationale_summary": "C##O## 은 얼굴 reference 이미지를 원본 해상도로 inject 하므로 사진/화면 속 얼굴이 사진 밖 실물 크기로 합성됨 (Area C 2026-05-12: applies_to_surfaces enumeration → directionality_class SOT 기반 boolean)"
        },
        "demographic_descriptor_policy": {
          "required_on_first_appearance": true,
          "applies_to_id_forms": [
            "C##",
            "C##O##"
          ],
          "token_count_range": [
            1,
            2
          ],
          "components": {
            "ethnicity": [
              "Asian",
              "East Asian",
              "South Asian",
              "Southeast Asian",
              "Black",
              "Middle Eastern",
              "Hispanic",
              "Latina",
              "Latino",
              "Caucasian"
            ],
            "gender": [
              "man",
              "woman",
              "figure"
            ],
            "age_band": [
              "in his/her 20s",
              "in his/her 30s",
              "in his/her 40s",
              "young",
              "middle-aged",
              "elderly"
            ],
            "role_hint_from_outfit": [
              "in worker uniform",
              "in fisher workwear",
              "in detective coat",
              "in business suit"
            ]
          },
          "format_template_a": "C##O## in <옷 1-3 단어>, <demographic descriptor>",
          "format_template_b": "C##O##, <demographic descriptor>, <자세 표현>",
          "source_priority": [
            "visual_world_rules.region",
            "visual_world_rules.era",
            "shot context outfit hint"
          ],
          "scenario_dependency_ban": "no work-specific proper nouns (character names, place names) — common nouns only",
          "regional_consistency": "한 작품 내 region 표기는 일관 — 선택된 세분 ethnicity (East Asian / Southeast Asian / South Asian / Caucasian / Black / Hispanic / Latina|o / Middle Eastern) 를 작품 단위 고정"
        },
        "constraints": [
          "visible real people with outfit binding use C##O## composite IDs",
          "do not use C##O## for a reproduced face inside a photograph, poster, painting, portrait, monitor, TV, mirror, window reflection, or projection — use a common noun + demographic descriptor instead",
          "do not use C##O## for isolated body-part focus (face or non-face) — when the framing is dominated by a single body part triggered by 'focus on / close on / tight on / detail on' phrasing, use a common noun (hand / eye / brow / jaw / etc.)",
          "for close-up of a face, do not use 'face filling the entire frame' / 'face filling nearly the entire frame' / 'her face fills the frame' / 'shoulders only entering the frame' / 'head snapped sideways' — keep upper body or shoulder edge visible in the frame ('tight framing on her face, upper body in frame')",
          "when introducing a C##O## (or C##) for the first time in this t2i_prompt, append a 1-2 token demographic descriptor (ethnicity + age band, or ethnicity + role hint) consistent with visual_world_rules.region — never use scenario-specific proper nouns",
          "use the format `C##O## in <옷 1-3 단어>, <demographic descriptor>` or `C##O##, <demographic descriptor>, <자세 표현>` — main characters with face refs may include this descriptor too (image inject takes precedence)"
        ]
      },
      "background_binding": {
        "mode": "not_applicable",
        "bg_id": null,
        "reference_usage": "none",
        "owned_objects": [],
        "camera_reference": null,
        "close_framing_skips_background_ref": false,
        "constraints": [
          "no chain_bg is bound to this shot — describe the location freely without referencing a background image",
          "do not use 'from the reference' / 'the existing room' / 'preserving the room' style phrasing — there is no reference image to refer to"
        ]
      },
      "continuity_elements_used": {
        "fixed_elements": [
          {
            "element_id": "dusk_forest_lighting",
            "element_type": "environment_state",
            "character_name": "",
            "description": "A dense, overgrown forest environment enveloped in cold, fading blue-gray dusk light. The surrounding foliage and tree trunks are partially obscured by deep, pervasive shadows, creating a chilling and eerie atmosphere.",
            "applies_to_shots": [
              3,
              4,
              5
            ],
            "source_facts": [
              "Scene text: 숲속 / 해 질 무렵 (Forest / Dusk)",
              "Shot 3: Cold blue-gray dusk light leaks through foliage",
              "Shot 4: Fading coastal-blue dusk",
              "Shot 5: cold dusk tones, using the last gray sky"
            ],
            "visual_inferences": [
              "Deep, pervasive shadows swallowing the background elements due to the extremely low light level"
            ],
            "creative_decisions": [
              "Applying a consistent cold blue-gray color palette across extreme close-ups and wide shots to anchor the visual timeline right before nightfall"
            ],
            "confidence": "high"
          }
        ],
        "previous_shot_refs": [
          {
            "scene_index": 1,
            "shot_index": 4,
            "ref_usage": "",
            "kind": "location"
          }
        ],
        "forward_zoom_targets": [],
        "cross_shot_id_substitution_rule": {
          "applies_when": "fixed_elements[i].character_name maps to a C## allowed in id_policy.allowed_base_entity_ids OR a C##O## in id_policy.allowed_outlook_pairs",
          "substitution": "replace the common-noun person reference inside fixed_elements[i].description (e.g. 'An Asian man' / 'a woman' / 'a figure') with the matched C## or C##O##",
          "double_description_forbidden": "do not describe the same character with both a C##/C##O## and a separate common-noun person reference in the same t2i_prompt — produces phantom extra figures",
          "preserve_pose_unchanged": "fixed_elements[i].description 의 자세/위치/상태 keyword 는 그대로 유지 — 인물 참조 토큰만 교체",
          "no_repeat_after_pose": "이미 t2i_prompt 안에서 같은 인물의 자세를 묘사했다면, 같은 fixed_element description 을 별도 문장으로 반복하지 마라",
          "rationale_summary": "fixed_element description 이 보통명사로 작성되었고 같은 인물의 C## 묘사가 t2i_prompt 에 따로 있으면 모델이 두 인물로 인식해 인원 수가 부풀려진다"
        },
        "ref_usage_constraints": {
          "zoom_in_detail": {
            "scope_summary": "same moment, same space, same primary subject; camera moved/zoomed onto a sub-region only",
            "forbidden_additions": [
              "new persons not in the prior shot",
              "new props not in the prior shot",
              "new background elements not in the prior shot",
              "new poses, gestures, or expressions not in the prior shot",
              "different moments of action"
            ],
            "required_phrasings": [
              "describe only the focused sub-region in concrete terms",
              "explicitly state the same environment (lighting, background) is preserved",
              "use continuity tokens such as 'the same figure', 'the same room', 'the same surface'"
            ],
            "body_part_cross_ref": "id_policy.body_part_focus_rule applies — when the focused sub-region is a body part, use a common noun + demographic descriptor (no C##/C##O##)",
            "rationale_summary": "zoom_in_detail = 앞 샷의 특정 영역을 확대한 '같은 사진'. 새 정보 추가 금지 — 현재 프레임이 보여주는 부분만 정확히 묘사"
          },
          "exact_background": {
            "scope_summary": "same room, possibly different moment or angle; background carries through, persons/actions are described fresh for this shot",
            "permitted_additions": [
              "new persons, poses, expressions, actions for this shot's moment",
              "different camera angle within the same room"
            ],
            "background_consistency_rule": "background elements established in the prior shot must remain consistent (no contradictory walls, doors, furniture)",
            "ignore_keep_handled_elsewhere": "ignore/keep directives are auto-applied via reference image processing — do not echo them inside t2i_prompt",
            "rationale_summary": "같은 공간, 새 순간 — 인물·동작은 이 샷의 instantaneous moment 로 묘사하되 배경은 prior shot 과 일관"
          },
          "atmosphere_reference": {
            "scope_summary": "different room/floor/angle entirely — only mood/tone is shared with the prior shot",
            "forbidden_imports": [
              "furniture layout from the prior shot",
              "wall positions from the prior shot",
              "specific architectural features from the prior shot"
            ],
            "required_handling": "describe the new space's background directly in this shot; carry through only color tone or lighting mood (e.g. 'cool gray ambient' / 'dim warm pool')",
            "rationale_summary": "atmosphere_reference = 분위기 reference 만, 레이아웃 reference 아님. 가구·벽 배치를 끌어오면 모델이 두 공간을 한 공간으로 합성"
          }
        },
        "view_consistency": {
          "framing_scope_options": [
            "third_person",
            "close_up"
          ],
          "single_camera_rule": "one t2i_prompt = one camera position. do not combine a third-person full-body description and a close-up of the same character's body part.",
          "third_person_handling": "describe persons with full or partial body in frame; their hands/arms remain attached to their bodies (no isolated hand close-up alongside the full body)",
          "close_up_handling": "isolated body part (hand, wrist, fingers, brow) — do not include the same character's full body in the same prompt",
          "focus_on_is_focus_area_not_view_switch": "the phrasing 'Focus on ...' specifies the area of focus while the camera position remains the same; it is NOT a view switch",
          "id_policy_cross_ref_for_body_part_focus": "id_policy.body_part_focus_rule applies — body-part Focus 시 C##O## 금지 (얼굴 ref 합성 차단)",
          "prop_orientation_rule": "props the character holds must face one direction only — toward camera OR toward character, not both. forbidden contradiction example: 'photo angled partly toward the camera' + 'eyes fixed on the photograph' (양방향 모순)",
          "mixing_forbidden": true,
          "rationale_summary": "single t2i_prompt = single camera shutter at 1/1000s. 시점 혼합은 모델이 두 카메라 합성으로 해석해 인물이 두 번 등장 또는 부위 분리"
        },
        "constraints": [
          "fixed_elements are continuity inputs derived from prior shots — treat them as binding context, not as source facts to be invented",
          "when fixed_elements[i].character_name maps to a C## in id_policy.allowed_base_entity_ids or a C##O## in id_policy.allowed_outlook_pairs, replace the common-noun person reference inside fixed_elements[i].description with that C##/C##O## and do not also write a separate common-noun reference for the same character in the same t2i_prompt",
          "previous_shot_refs with ref_usage='zoom_in_detail' must preserve the same moment, the same space, and the same lighting as the prior shot — no new persons, props, background elements, poses, or moments",
          "previous_shot_refs with ref_usage='exact_background' may freely describe this shot's persons, poses, and moment, but must keep background elements consistent with the prior shot's established room",
          "previous_shot_refs with ref_usage='atmosphere_reference' must describe a new space directly — do not import furniture layout or wall positions from the prior shot, only mood/tone",
          "one t2i_prompt = one camera position — do not combine a third-person full-body description and a close-up of the same character's body part; 'Focus on' specifies the area of focus, not a view switch (id_policy.body_part_focus_rule applies for any body-part Focus)",
          "props held by characters face one direction only — toward camera OR toward character, never both"
        ]
      },
      "asset_requirements": {
        "required_refs": [
          {
            "kind": "character_outlook",
            "id": "C07O09",
            "policy": "required"
          },
          {
            "kind": "character_outlook",
            "id": "C15O15",
            "policy": "required"
          }
        ],
        "forbidden_refs": [],
        "readiness_policy": "block_if_missing",
        "constraints": [
          "do not imply or describe a reference image that is not listed in required_refs (no phantom references)",
          "if a required character_outlook ref is missing, scene image generation must block before the image stage"
        ]
      },
      "_card_metadata": {
        "lift_status": {
          "rule_a_lifted": true,
          "rule_c_lifted": true,
          "rule_e_lifted": false,
          "rule_h_lifted": true,
          "id_policy_composite_lifted": true,
          "id_policy_close_framing_face_lifted": true,
          "id_policy_reproduction_surface_lifted": true,
          "continuity_cross_shot_id_substitution_lifted": true,
          "continuity_ref_usage_constraints_lifted": true,
          "continuity_view_consistency_lifted": true,
          "continuity_constraints_extended": true,
          "spatial_camera_frame_lifted": true,
          "spatial_fg_bg_shared_anchor_lifted": true,
          "spatial_primary_framing_lifted": true,
          "spatial_constraints_extended": true
        },
        "rule_source": {
          "camera_rule": "A",
          "owned_rule": "C",
          "close_skip_rule": "E",
          "demographic_rule": "H",
          "composite_id_rule": "C## 사용 규칙 — 참조 이미지 연동 (v17:32-64)",
          "close_framing_face_rule": "극단 클로즈업 표현 (v17:66-85)",
          "reproduction_surface_rule": "사진·포스터·화면·거울 속 인물 규칙 (v17:133-146)",
          "cross_shot_id_substitution_rule": "v20/scene_detail/system.md#continuity-section",
          "ref_usage_rule": "v20/scene_detail/system.md#continuity-section",
          "view_consistency_rule": "v20/scene_detail/system.md#continuity-section",
          "camera_frame_rule": "v20/scene_detail/system.md#spatial-consistency",
          "fg_bg_shared_anchor_rule": "v20/scene_detail/system.md#spatial-consistency",
          "primary_framing_rule": "v20/scene_detail/system.md#spatial-consistency"
        }
      }
    },
    "render_prompt_card_hash": "9d062b0ddd86aa82"
  }
}