{
  "status": "partial",
  "applicable_count": 1,
  "completed_count": 2,
  "failed_count": 6,
  "schema_version": 3,
  "config_hash": "ad96093ace039736",
  "data": {
    "per_fp": {
      "fp_l04_rooftop": {
        "fp_id": "fp_l04_rooftop",
        "shot_aware_bg_render_plan_status": "failed",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "llm_provider raised: ShotAwareBgRenderPlanProviderError: production validate_llm_output failed: graph.nodes must be a non-empty list; graph completeness: missing renderable bg_ids ['L04B01', 'L04B02', 'L04B05'] (dwelling-scoped graph must include every staged-shot renderable BG of the fp); graph requires exactly one anchor node (found 0)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_l04_stairs": {
        "fp_id": "fp_l04_stairs",
        "shot_aware_bg_render_plan_status": "failed",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "llm_provider raised: ShotAwareBgRenderPlanProviderError: production validate_llm_output failed: graph.nodes must be a non-empty list; graph completeness: missing renderable bg_ids ['L04B03', 'L04B04'] (dwelling-scoped graph must include every staged-shot renderable BG of the fp); graph requires exactly one anchor node (found 0)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_l12_main": {
        "fp_id": "fp_l12_main",
        "shot_aware_bg_render_plan_status": "not_applicable",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "shot_readiness gate skipped (no BG has at least one staged consuming shot in shot_staging cp; not_applicable)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 0,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_l09_supermarket_main": {
        "fp_id": "fp_l09_supermarket_main",
        "shot_aware_bg_render_plan_status": "ok",
        "graph": {
          "nodes": [
            {
              "bg_id": "L09B03",
              "camera_decision": {
                "camera_cell": [
                  3,
                  9
                ],
                "camera_unit": 14,
                "fov_deg": 90,
                "framing_notes": "Wide 90-degree framing from unit 14 at cell [3,9] toward marker 12 at cell [9,4], assigned to look_at_unit 15 for the visible-unit plan; broad coverage supports the committed wide exterior-facing shot while still allowing the close shot to soften the same background.",
                "lens_enum": "wide",
                "look_at_cell": [
                  9,
                  4
                ],
                "look_at_unit": 15
              },
              "is_dwelling_identity_anchor": true,
              "mode": "fp_seeded_anchor",
              "node_index": 0,
              "rationale": "L09B03 is the only clean anchor candidate supplied for this fp_id and is marked clean_background_expected=true, so it is first and fp_seeded_anchor. No references are selected because this node establishes the same-fp identity. The camera is placed in unit 14 at [3,9] and aimed to marker 12 at [9,4] with a wide lens because the surfaced shots include a wide exterior-facing composition emphasizing marker 12 above subjects, and the same clean background can also support the later close shot as a softened context.",
              "reference_decision": {
                "physical_space_id_per_ref": [],
                "rejected_refs": [],
                "same_physical_space_dedup_decision": "not_applicable_anchor",
                "selected_refs": [],
                "why_single_ref_or_two_refs": "Anchor node uses no selected_refs; it seeds the fp identity for later same-fp nodes."
              },
              "render_guidance": {
                "camera_framing_directive": "Frame from camera_unit 14 at camera_cell [3,9] toward look_at_unit 15 using look_at_cell [9,4]. Use the wide lens with fov_deg 90 for broad coverage, keeping marker 12 readable high in the composition for the wide staged shot while allowing the same background to fall soft for the close staged shot.",
                "negative_continuity_directive": "Do not include transient marker 16 or transient marker 17 for this clean anchor. Do not introduce additional state overlays beyond use_numbered_elements [1,2,3,4,5,12,13,14,15]. From camera_unit 14, treat visible_units_candidates [1,2,15] and visible_openings_candidates [3,4,11] as supersets only; do not add unlisted spaces or invented scenario-specific cues.",
                "state_cue_directive": "clean_background_expected is true and transient_marker_numbers_to_describe is empty, so no committed state cue beyond \"clean residential space\" applies. Refrain from inventing additional cues; use only numbered elements [1,2,3,4,5,12,13,14,15] and keep ignored overlay markers 16 and 17 absent.",
                "subject_position_directive": "Committed subject cues come from surfaced shots S19_Shot3 and S19_Shot4. For S19_Shot3, two committed subjects are back-to-camera in the lower frame area, with the frame_spatial_contract placing one in lower_left and one in lower_right while both look upward toward marker 12 in upper_center. For S19_Shot4, one committed subject is close in front of the camera with a phone pressed to one ear and the background softened; do not invent additional subjects.",
                "visible_space_directive": "Camera is in unit 14 at [3,9], looking toward marker 12 at [9,4] within the look_at_unit 15 plan. The geometry exposes visible_units_candidates for unit 14 as [1,2,15] and visible_openings_candidates as [3,4,11]; use these only as visibility supersets. Reference plan has no selected_refs because this node is the clean anchor."
              }
            },
            {
              "bg_id": "L09B01",
              "camera_decision": {
                "camera_cell": [
                  0,
                  1
                ],
                "camera_unit": 2,
                "fov_deg": 50,
                "framing_notes": "Normal 50-degree framing from unit 2 at [0,1] toward unit 1 via marker 7 at [6,7] gives neutral medium coverage for the committed two-subject staging and maintains readable depth through the central fixture markers.",
                "lens_enum": "normal",
                "look_at_cell": [
                  6,
                  7
                ],
                "look_at_unit": 1
              },
              "is_dwelling_identity_anchor": false,
              "mode": "reference_derived",
              "node_index": 1,
              "rationale": "L09B01 is renderable and shares the same fp_id and many base markers with the clean anchor L09B03, so it is derived from that earlier same-fp reference while adding its own transient marker 16 and broader use_numbered_elements. The camera is placed at unit 2 [0,1] looking into unit 1 at marker 7 [6,7] with a normal lens because S8_Shot2 is committed as a balanced medium two-subject shot with central depth behind the conversation axis.",
              "reference_decision": {
                "physical_space_id_per_ref": [
                  "fp_l09_supermarket_main_shared_units_1_2_14_15_clean_anchor"
                ],
                "rejected_refs": [],
                "same_physical_space_dedup_decision": "single_reference_no_dedup_needed",
                "selected_refs": [
                  {
                    "physical_space_id": "fp_l09_supermarket_main_shared_units_1_2_14_15_clean_anchor",
                    "ref_bg_id": "L09B03",
                    "space_description": "Clean same-fp anchor covering shared numbered units and base markers used for identity continuity."
                  }
                ],
                "why_single_ref_or_two_refs": "A single same-fp clean anchor reference is sufficient because the consuming shot uses one continuous visible plan from unit 2 toward unit 1; no co-visible second distinct physical space needs a separate reference."
              },
              "render_guidance": {
                "camera_framing_directive": "Frame from camera_unit 2 at camera_cell [0,1] toward look_at_unit 1 using look_at_cell [6,7]. Use the normal lens with fov_deg 50 for neutral medium coverage, matching the committed medium framing and keeping the central numbered fixtures readable without broad distortion or telephoto compression.",
                "negative_continuity_directive": "Do not render ignored marker 17. Do not inherit the clean-anchor absence of marker 16; marker 16 is required here, but keep it tied to this BG only. Avoid adding spaces outside the camera_unit 2 visible_units_candidates [1,14,15] or openings outside visible_openings_candidates [3,4,11]. Do not invent additional state overlays, extra subjects, or unnumbered scenario-specific cues.",
                "state_cue_directive": "Use transient marker 16 as the committed state overlay for this BG. The staged shot also commits bright, orderly, stocked background state and neatly arranged unopened stacked items as state-facing cues. Ignore marker 17 and keep it absent. Use numbered elements [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] only.",
                "subject_position_directive": "S8_Shot2 commits two subjects in a medium two-subject arrangement: one frame-left and one frame-right, facing each other across a narrow gap. Their angles are three_quarter_right and three_quarter_left, with gazes directed at each other. Keep background figures from becoming subjects, and do not invent any additional committed subject cues beyond this staging.",
                "visible_space_directive": "Camera is in unit 2 at [0,1], looking toward unit 1 through look_at_cell [6,7]. The chosen single reference L09B03 supplies clean same-fp continuity for shared numbered units and markers. Geometry lists visible_units_candidates for camera_unit 2 as [1,14,15] and visible_openings_candidates as [3,4,11]; use those only as visibility supersets while emphasizing the numbered elements in this BG's use list."
              }
            },
            {
              "bg_id": "L09B02",
              "camera_decision": {
                "camera_cell": [
                  3,
                  9
                ],
                "camera_unit": 14,
                "fov_deg": 25,
                "framing_notes": "Telephoto 25-degree framing from unit 14 at [3,9] toward unit 2 through marker 3 at [3,1] gives narrow compressed coverage for the committed close subject staging with the entrance-related background softened behind the subject.",
                "lens_enum": "telephoto",
                "look_at_cell": [
                  3,
                  1
                ],
                "look_at_unit": 2
              },
              "is_dwelling_identity_anchor": false,
              "mode": "reference_derived",
              "node_index": 2,
              "rationale": "L09B02 is renderable and should inherit the clean same-fp identity from earlier anchor L09B03 while applying its own transient marker 17 and excluding marker 16. The camera is in unit 14 at [3,9] looking toward unit 2 via marker 3 at [3,1] with a telephoto lens because S8_Shot4 is a close subject-focused exterior-facing setup with the background compressed and softened.",
              "reference_decision": {
                "physical_space_id_per_ref": [
                  "fp_l09_supermarket_main_shared_units_1_2_14_15_clean_anchor"
                ],
                "rejected_refs": [
                  {
                    "reason": "Earlier node L09B01 carries transient marker 16, which this BG explicitly ignores, so it is not used as the continuity reference.",
                    "ref_bg_id": "L09B01"
                  }
                ],
                "same_physical_space_dedup_decision": "single_reference_no_dedup_needed",
                "selected_refs": [
                  {
                    "physical_space_id": "fp_l09_supermarket_main_shared_units_1_2_14_15_clean_anchor",
                    "ref_bg_id": "L09B03",
                    "space_description": "Clean same-fp anchor covering shared numbered units and base markers used for identity continuity."
                  }
                ],
                "why_single_ref_or_two_refs": "A single clean same-fp anchor reference is sufficient because the consuming shot frames one compressed view from unit 14 toward unit 2; no co-visible second distinct physical space requires a second reference."
              },
              "render_guidance": {
                "camera_framing_directive": "Frame from camera_unit 14 at camera_cell [3,9] toward look_at_unit 2 using look_at_cell [3,1]. Use the telephoto lens with fov_deg 25 for compressed narrow coverage, matching the committed close framing and keeping the numbered background soft rather than broadly descriptive.",
                "negative_continuity_directive": "Do not render ignored marker 16. Do not carry over L09B01's transient marker 16 from the rejected earlier node. Keep the reference L09B03's clean identity but apply marker 17 only for this BG. From camera_unit 14, avoid adding spaces outside visible_units_candidates [1,2,15] or openings outside visible_openings_candidates [3,4,11], and do not invent unnumbered scenario-specific cues.",
                "state_cue_directive": "Use transient marker 17 as the committed state overlay for this BG. The staged shot commits a dim exterior-facing condition with bright interior contrast and a close subject-focused glow cue; keep those state cues subordinate to marker 17 and the listed use_numbered_elements [1,2,3,4,5,6,7,8,12,13,14,15,17]. Ignore marker 16 and keep it absent.",
                "subject_position_directive": "S8_Shot4 commits one subject in close framing, three_quarter_left, hunched over a phone, gaze down. The face occupies the upper portion of the staged frame and the phone sits in the lower third. Do not add other subjects or turn softened background activity into a subject.",
                "visible_space_directive": "Camera is in unit 14 at [3,9], looking toward unit 2 through look_at_cell [3,1]. The selected reference L09B03 provides clean same-fp continuity for the shared numbered units and base markers. Geometry lists visible_units_candidates for camera_unit 14 as [1,2,15] and visible_openings_candidates as [3,4,11]; use those only as visibility supersets and keep the telephoto view narrow."
              }
            }
          ]
        },
        "validators": {
          "required_shape_ok": true,
          "graph_completeness_ok": true,
          "node_index_order_ok": true,
          "dag_ok": true,
          "max_refs_per_bg_ok": true,
          "two_refs_distinct_spaces_ok": true,
          "same_fp_only_ok": true,
          "anchor_exactly_one_ok": true,
          "anchor_in_clean_candidate_set_ok": true,
          "camera_in_candidates_ok": true,
          "rationale_and_mode_ok": true,
          "synthetic_readback_production_clear": true,
          "all_validators_passed": true,
          "diagnostics": []
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": true,
        "diagnostics": []
      },
      "fp_l10_supermarket_exterior_main": {
        "fp_id": "fp_l10_supermarket_exterior_main",
        "shot_aware_bg_render_plan_status": "not_applicable",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "shot_readiness gate skipped (no BG has at least one staged consuming shot in shot_staging cp; not_applicable)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 0,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_l14_security_room_main": {
        "fp_id": "fp_l14_security_room_main",
        "shot_aware_bg_render_plan_status": "failed",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "llm_provider raised: ShotAwareBgRenderPlanProviderError: production validate_llm_output failed: graph.nodes must be a non-empty list; graph completeness: missing renderable bg_ids ['L14B01'] (dwelling-scoped graph must include every staged-shot renderable BG of the fp); graph requires exactly one anchor node (found 0)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_l13_police_office_main": {
        "fp_id": "fp_l13_police_office_main",
        "shot_aware_bg_render_plan_status": "failed",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "llm_provider raised: ShotAwareBgRenderPlanProviderError: production validate_llm_output failed: graph.nodes must be a non-empty list; graph completeness: missing renderable bg_ids ['L13B01', 'L13B02'] (dwelling-scoped graph must include every staged-shot renderable BG of the fp); graph requires exactly one anchor node (found 0)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_l15_police_street_main": {
        "fp_id": "fp_l15_police_street_main",
        "shot_aware_bg_render_plan_status": "failed",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "llm_provider raised: ShotAwareBgRenderPlanProviderError: production validate_llm_output failed: graph.nodes must be a non-empty list; graph completeness: missing renderable bg_ids ['L15B01'] (dwelling-scoped graph must include every staged-shot renderable BG of the fp); graph requires exactly one anchor node (found 0)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      },
      "fp_deck_main": {
        "fp_id": "fp_deck_main",
        "shot_aware_bg_render_plan_status": "ok",
        "graph": {
          "nodes": [
            {
              "bg_id": "L19B01",
              "camera_decision": {
                "camera_cell": [
                  1,
                  5
                ],
                "camera_unit": 2,
                "fov_deg": 90,
                "framing_notes": "Use broad coverage from unit marker 2 at cell [1,5] looking within the same target unit toward cell [5,5]; the wide 90-degree lens supports the full clean anchor pass for the surfaced wide shot and leaves room for the close-shot background context.",
                "lens_enum": "wide",
                "look_at_cell": [
                  5,
                  5
                ],
                "look_at_unit": 2
              },
              "is_dwelling_identity_anchor": true,
              "mode": "fp_seeded_anchor",
              "node_index": 0,
              "rationale": "L19B01 is the only bg_id in anchor_selection_metadata.candidate_bg_ids and its readiness block is ok=true, so it is the required first fp_seeded_anchor. No same-fp references are available, so the node is seeded directly from the floor-plan and dossier facts. The selected wide camera from unit marker 2 cell [1,5] toward look-at cell [5,5] is valid against the geometry candidates and suits a clean identity anchor for the surfaced shots: S28_Shot1 asks for a wide establishing background relationship, while S28_Shot5 needs the same numbered environment available as close-shot background context without inventing extra state.",
              "reference_decision": {
                "physical_space_id_per_ref": [],
                "rejected_refs": [],
                "same_physical_space_dedup_decision": "no_refs_anchor",
                "selected_refs": [],
                "why_single_ref_or_two_refs": "No selected_refs are used because this node is the fp_seeded_anchor and the same-fp candidate reference catalog is empty."
              },
              "render_guidance": {
                "camera_framing_directive": "Frame from camera_unit 2 at camera_cell [1,5] toward look_at_unit 2 at look_at_cell [5,5] with lens_enum wide and fov_deg 90. Use broad coverage appropriate to a clean anchor pass, keeping the numbered environment legible enough for S28_Shot1 while allowing the same BG to support S28_Shot5 background continuity.",
                "negative_continuity_directive": "Do not introduce any ignored numbered elements because ignore_numbered_elements is empty and ignored_state_overlay_marker_numbers is empty. Do not draw unlisted transient marker cues because transient_marker_numbers_to_describe is empty. Do not imply spaces outside the unit marker set visible from camera_unit 2: camera unit 2 plus visible_units_candidates [1,3,4,5]. Do not add scenario-specific props, state overlays, or reference-derived details; selected_refs is empty.",
                "state_cue_directive": "clean_background_expected is true and transient_marker_numbers_to_describe is empty, so no committed state cue beyond clean residential space applies. Render use_numbered_elements [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] without inventing additional state cues or transient overlays.",
                "subject_position_directive": "S28_Shot1 has no committed character_angles and treats the full numbered setting as the distant primary visual field. S28_Shot5 commits one foreground subject cue, target_id C03 in screen_zone middle_center on the foreground depth_plane, with gaze_direction_kind off_screen; keep that subject relationship in front of the BG and do not invent additional subjects beyond the staged facts.",
                "visible_space_directive": "From camera_unit 2 at cell [1,5] looking toward look_at_unit 2 at cell [5,5] with a wide 90-degree lens, include camera unit marker 2 and the geometry-readback visible_units_candidates for unit 2: [1,3,4,5]. The BG target_unit_marker_numbers are [1,2,3,4,5]. The visible_openings_candidates for camera_unit 2 are opening markers [8,9,10]. Use base_marker_numbers_to_reference [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]; no selected reference BG contributes additional visible space."
              }
            }
          ]
        },
        "validators": {
          "required_shape_ok": true,
          "graph_completeness_ok": true,
          "node_index_order_ok": true,
          "dag_ok": true,
          "max_refs_per_bg_ok": true,
          "two_refs_distinct_spaces_ok": true,
          "same_fp_only_ok": true,
          "anchor_exactly_one_ok": true,
          "anchor_in_clean_candidate_set_ok": true,
          "camera_in_candidates_ok": true,
          "rationale_and_mode_ok": true,
          "synthetic_readback_production_clear": true,
          "all_validators_passed": true,
          "diagnostics": []
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": true,
        "diagnostics": []
      },
      "fp_wheelhouse_main": {
        "fp_id": "fp_wheelhouse_main",
        "shot_aware_bg_render_plan_status": "failed",
        "graph": {
          "nodes": []
        },
        "validators": {
          "all_validators_passed": false,
          "diagnostics": [
            "llm_provider raised: ShotAwareBgRenderPlanProviderError: production validate_llm_output failed: graph.nodes must be a non-empty list; graph completeness: missing renderable bg_ids ['L20B01', 'L20B02', 'L20B03'] (dwelling-scoped graph must include every staged-shot renderable BG of the fp); graph requires exactly one anchor node (found 0)"
          ]
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": false,
        "diagnostics": []
      }
    },
    "real_api_call_counts": {
      "image": 0,
      "llm": 8,
      "vlm": 0
    },
    "llm_provider_attempts_per_fp": {
      "fp_l04_rooftop": 1,
      "fp_l04_stairs": 1,
      "fp_l09_supermarket_main": 1,
      "fp_l14_security_room_main": 1,
      "fp_l13_police_office_main": 1,
      "fp_l15_police_street_main": 1,
      "fp_deck_main": 1,
      "fp_wheelhouse_main": 1
    },
    "shot_staging_index_diagnostics": {
      "shot_staging_index_explicit_id": 0,
      "shot_staging_index_synthesized_id": 50,
      "shot_staging_index_dropped_no_id": [],
      "shot_staging_index_dropped_bad_index_type": [],
      "shot_staging_index_collisions": []
    }
  },
  "step_id": "shot_aware_bg_render_plan",
  "run_id": "08fc6c52-df25-4c5e-b1a3-1e4c78ca1bdb",
  "resolved_model": "gpt",
  "updated_at": "2026-05-28T00:56:12.292001+00:00",
  "project_config_snapshot": {}
}