{
  "status": "completed",
  "applicable_count": 1,
  "completed_count": 2,
  "failed_count": 0,
  "schema_version": 10,
  "config_hash": "98833fa1843c165d",
  "data": {
    "per_fp": {
      "fp_bus_one_interior": {
        "fp_id": "fp_bus_one_interior",
        "shot_aware_bg_render_plan_status": "ok",
        "graph": {
          "nodes": [
            {
              "bg_id": "L01B01",
              "node_index": 0,
              "mode": "fp_seeded_anchor",
              "is_dwelling_identity_anchor": true,
              "rationale": "L01B01 is an allowed clean-anchor fallback candidate and establishes the dwelling identity directly from the floor plan because no same-fp rendered reference is available. A wide representative plate from camera unit 1 toward unit 3 supports the close and medium framings of S1_Shot7, S1_Shot8, and S1_Shot9 while retaining the required relationships among target units 1-4 and base markers 5, 7, and 8-14.",
              "reference_decision": {
                "selected_refs": [],
                "rejected_refs": [],
                "same_physical_space_dedup_decision": "not_applicable_no_references",
                "why_single_ref_or_two_refs": "No reference is selected because this first node is the dwelling-identity anchor and the same-fp candidate reference catalog is empty.",
                "physical_space_id_per_ref": [],
                "same_physical_space_low_delta_candidate": false,
                "low_delta_reuse_target_bg_id": "",
                "low_delta_rationale": ""
              },
              "camera_decision": {
                "camera_unit": 1,
                "camera_cell": [
                  1,
                  2
                ],
                "look_at_unit": 3,
                "look_at_cell": [
                  4,
                  3
                ],
                "lens_enum": "wide",
                "fov_deg": 90,
                "framing_notes": "Use the exact camera candidate [1,2] in unit 1 and the exact look-at candidate [4,3] toward unit 3. The 90-degree wide framing provides a broad representative background from which the consuming close, medium, and subjective framings can take shot-specific crops."
              },
              "render_guidance": {
                "visible_space_directive": "Show unit 1 at the camera side and unit 3 on the look-at axis, with only geometry-supported portions of candidate-visible units 2 and 4. Preserve the required relationships of base markers 5 and 7 with fixed markers 8-14; include openings only where they fall inside the wide view rather than forcing every opening candidate into frame.",
                "camera_framing_directive": "Frame from camera unit 1 at cell [1,2] toward unit 3 at look-at cell [4,3] with a wide 90-degree field of view. Maintain broad coverage for the shared spatial plate while leaving sufficient detail around markers 11-13 and enough depth around markers 8-10 for the consuming close and medium crops.",
                "subject_position_directive": "Keep the background compatible with the staged subject placements: S1_Shot7 requires the committed prop target P01 in the lower center from a steep subjective view; S1_Shot8 places one committed subject in the right half near marker 5; S1_Shot9 places C01 in the left foreground and C02 in the right background. Do not add subjects beyond these shot-specific placements.",
                "state_cue_directive": "Carry transient marker 16 as the committed state cue, together with the numbered elements in the use list. Preserve the restrained low-key evening ambience stated by the surfaced shots, without adding any unlisted state cue.",
                "negative_continuity_directive": "Exclude marker 15 and any overlay associated with ignored-state marker 15. Do not invent unnumbered scenario-specific elements, do not force geometry-superset openings or units outside the actual 90-degree view, and do not relocate fixed markers 8-14 between shot-specific crops."
              },
              "render_action": "render_new_plate",
              "reuse_target_bg_id": "",
              "anchor_shot_id": "",
              "projection_card_id": "",
              "projection_card_hash": "",
              "projection_card_state": "not_applicable",
              "projection_card_fallback_reason": "no_projection_card_target",
              "projection_card_source_bg_id": "L01B01",
              "projection_card_inherited": false,
              "plate_group_id": "L01B01",
              "plate_anchor_bg_id": "L01B01",
              "needs_new_plate": true,
              "plate_anchor_shot_id": "",
              "plate_shareability": "shareable_geometry_only",
              "render_order_index": 0,
              "ref_tree_parents": [],
              "ref_role_per_parent": {},
              "max_refs": 2,
              "render_action_source": "geometry_route",
              "partition_fallback_reason": "partition_plan_missing"
            },
            {
              "bg_id": "L01B02",
              "node_index": 1,
              "mode": "reference_derived",
              "is_dwelling_identity_anchor": false,
              "rationale": "L01B02 uses L01B01 because both nodes target units 1-4 and reference the same fixed base-marker set 1-5, 7, and 8-14. The identical camera unit 1, look-at unit 3, and candidate cells preserve the same visible-space plate for S3_Shot5 and S3_Shot9; the committed differences are the shot-specific subject framing and the replacement of transient marker 16 with transient marker 15.",
              "reference_decision": {
                "selected_refs": [
                  {
                    "ref_bg_id": "L01B01",
                    "physical_space_id": "fp_bus_one_interior_space_01",
                    "space_description": "Same physical space spanning target units 1-4 and fixed base markers 1-5, 7, and 8-14."
                  }
                ],
                "rejected_refs": [],
                "same_physical_space_dedup_decision": "single_reference_same_physical_space",
                "why_single_ref_or_two_refs": "A single reference is sufficient because the consuming shots remain within the same physical-space identity and do not commit two distinct co-visible spaces requiring separate references.",
                "physical_space_id_per_ref": [
                  "fp_bus_one_interior_space_01"
                ],
                "same_physical_space_low_delta_candidate": true,
                "low_delta_reuse_target_bg_id": "L01B01",
                "low_delta_rationale": "L01B02 matches L01B01 at camera unit 1, camera cell [1,2], look-at unit 3, and look-at cell [4,3]. The remaining differences are shot-specific subject placement and the restorable transient-marker change from 16 to 15, with no committed fixed-structure change."
              },
              "camera_decision": {
                "camera_unit": 1,
                "camera_cell": [
                  1,
                  2
                ],
                "look_at_unit": 3,
                "look_at_cell": [
                  4,
                  3
                ],
                "lens_enum": "wide",
                "fov_deg": 90,
                "framing_notes": "Reuse the exact representative geometry of L01B01: camera unit 1 at [1,2], looking toward unit 3 at [4,3], with a wide 90-degree field of view. The insert and medium compositions are shot-specific crops within this fixed background framing."
              },
              "render_guidance": {
                "visible_space_directive": "Match reference L01B01's visible-space arrangement from unit 1 toward unit 3. Keep base markers 5, 7, and 8-14 in the same fixed positions, with geometry-supported portions of units 2 and 4 included only where the wide cone exposes them; retain marker 9 and marker 10 as spatial anchors for the staged compositions.",
                "camera_framing_directive": "Frame from camera unit 1 at cell [1,2] toward unit 3 at look-at cell [4,3] using the same wide 90-degree coverage as L01B01. Preserve the reference plate's fixed perspective while allowing S3_Shot5 to use an insert crop and S3_Shot9 to use a medium crop without changing the underlying camera-cell or look-at-cell relationship.",
                "subject_position_directive": "For S3_Shot5, accommodate only the committed hand and sleeve fragment around P02 in the middle center, with the face excluded and a restrained fragment of marker 9 retained for scale. For S3_Shot9, accommodate C01 in the lower-left foreground and C02 in the middle-right midground, with C02 supported against marker 9. Do not invent additional subjects.",
                "state_cue_directive": "Carry transient marker 15 as the committed state cue and preserve the numbered elements in the use list. Maintain the subdued low-key night ambience stated by the surfaced shots, including only state-facing cues explicitly committed there.",
                "negative_continuity_directive": "Exclude marker 16 and remove any ignored-state overlay associated with marker 16 from reference L01B01. Keep fixed markers 5, 7, and 8-14 in the same positions as L01B01, do not expose units or openings outside the supported wide view, and do not introduce unnumbered scenario-specific elements."
              },
              "render_action": "reuse_existing_plate",
              "reuse_target_bg_id": "L01B01",
              "anchor_shot_id": "",
              "projection_card_id": "",
              "projection_card_hash": "",
              "projection_card_state": "not_available",
              "projection_card_fallback_reason": "reuse_target_projection_missing",
              "projection_card_source_bg_id": "L01B01",
              "projection_card_inherited": true,
              "plate_group_id": "L01B01",
              "plate_anchor_bg_id": "L01B01",
              "needs_new_plate": false,
              "plate_anchor_shot_id": "",
              "plate_shareability": "shareable_geometry_only",
              "render_action_source": "geometry_route",
              "partition_fallback_reason": "partition_plan_missing"
            }
          ]
        },
        "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": [],
          "render_action_routing_ok": true,
          "reuse_plate_count": 1,
          "card_withhold_count": 0,
          "projection_card_state_counts": {
            "not_applicable": 1,
            "not_available": 1
          },
          "plate_group_count": 1,
          "plate_shareability_counts": {
            "shareable_geometry_only": 2
          },
          "dag_node_count": 1,
          "space_partition_applied": false,
          "space_partition_fallback_reason": "partition_plan_missing"
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": true,
        "diagnostics": []
      },
      "fp_bus_two_interior": {
        "fp_id": "fp_bus_two_interior",
        "shot_aware_bg_render_plan_status": "ok",
        "graph": {
          "nodes": [
            {
              "bg_id": "L02B01",
              "node_index": 0,
              "mode": "fp_seeded_anchor",
              "is_dwelling_identity_anchor": true,
              "rationale": "L02B01 is the sole supplied clean-anchor candidate and no same-fp reference is available, so it seeds dwelling identity directly from the floor plan. A wide view from unit 3 toward unit 5 supports the staged foreground-to-background axis through markers 3, 13, 14, and 15 while retaining broad coverage for the separate staged view through marker 10.",
              "reference_decision": {
                "selected_refs": [],
                "rejected_refs": [],
                "same_physical_space_dedup_decision": "not_applicable_anchor_no_refs",
                "why_single_ref_or_two_refs": "No reference is selected because this first node is the dwelling-identity anchor and the same-fp candidate reference catalog is empty.",
                "physical_space_id_per_ref": [],
                "same_physical_space_low_delta_candidate": false,
                "low_delta_reuse_target_bg_id": "",
                "low_delta_rationale": ""
              },
              "camera_decision": {
                "camera_unit": 3,
                "camera_cell": [
                  1,
                  5
                ],
                "look_at_unit": 5,
                "look_at_cell": [
                  5,
                  2
                ],
                "lens_enum": "wide",
                "fov_deg": 90,
                "framing_notes": "Use broad coverage from camera unit 3 at [1,5] toward unit 5 at the verbatim permitted look-at cell [5,2]. The 90-degree view supports the staged central depth axis and leaves sufficient surrounding coverage for the staged oblique view associated with marker 10."
              },
              "render_guidance": {
                "visible_space_directive": "From camera unit 3 toward unit 5 with a wide lens, show unit 3 as the camera-bearing unit and broad candidate coverage of units 1, 2, 4, 5, and 6. Preserve the floor-plan relationships among structural markers 1-6, openings 7-10, furniture markers 11, 13, and 14, and fixed markers 12 and 15; openings 7 and 8 are geometry-visible candidates rather than mandatory co-visible commitments.",
                "camera_framing_directive": "Frame from camera cell [1,5] in unit 3 toward look-at cell [5,2] in unit 5 using the wide 90-degree lens. Use broad spatial coverage with a clear central foreground-to-background axis for markers 3, 13, 14, and 15, while retaining enough lateral context for the consuming shot that frames marker 10 obliquely.",
                "subject_position_directive": "For S2_Shot5, reserve the middle-center foreground-to-midground axis for the committed back-to-camera subject, with the subject oriented toward marker 15 in the upper-center background. For S2_Shot7, reserve the middle-center background beyond marker 10 for the committed exterior subject, with the raised gesture extending into the upper portion of that framed opening.",
                "state_cue_directive": "Carry transient markers 16 and 17 as committed shot-facing cues while retaining all numbered elements 1-15. Marker 16 applies to the relevant seating state, and marker 17 must read beyond the relevant window plane; do not treat this BG as a clean background.",
                "negative_continuity_directive": "Do not relocate or redesign structural markers 1-6, openings 7-10, furniture markers 11, 13, and 14, or fixed markers 12 and 15. Do not place marker 17 on the camera side of marker 10, do not extend marker 16 beyond its committed seating context, and do not invent additional subjects, numbered elements, or spaces outside the geometry-visible candidate coverage."
              },
              "render_action": "render_new_plate",
              "reuse_target_bg_id": "",
              "anchor_shot_id": "",
              "projection_card_id": "",
              "projection_card_hash": "",
              "projection_card_state": "not_applicable",
              "projection_card_fallback_reason": "no_projection_card_target",
              "projection_card_source_bg_id": "L02B01",
              "projection_card_inherited": false,
              "plate_group_id": "L02B01",
              "plate_anchor_bg_id": "L02B01",
              "needs_new_plate": true,
              "plate_anchor_shot_id": "",
              "plate_shareability": "exclusive",
              "render_order_index": 0,
              "ref_tree_parents": [],
              "ref_role_per_parent": {},
              "max_refs": 2,
              "render_action_source": "geometry_route",
              "partition_fallback_reason": "partition_plan_missing"
            }
          ]
        },
        "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": [],
          "render_action_routing_ok": true,
          "reuse_plate_count": 0,
          "card_withhold_count": 0,
          "projection_card_state_counts": {
            "not_applicable": 1
          },
          "plate_group_count": 1,
          "plate_shareability_counts": {
            "exclusive": 1
          },
          "dag_node_count": 1,
          "space_partition_applied": false,
          "space_partition_fallback_reason": "partition_plan_missing"
        },
        "real_api_call_counts": {
          "image": 0,
          "llm": 1,
          "vlm": 0
        },
        "readback_status": "ok",
        "production_clear": true,
        "diagnostics": []
      }
    },
    "real_api_call_counts": {
      "image": 0,
      "llm": 2,
      "vlm": 0
    },
    "llm_provider_attempts_per_fp": {
      "fp_bus_one_interior": 1,
      "fp_bus_two_interior": 1
    },
    "shot_staging_index_diagnostics": {
      "shot_staging_index_explicit_id": 0,
      "shot_staging_index_synthesized_id": 7,
      "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": "6ef403b1-b823-4e7c-80fb-84ceb76172df",
  "resolved_model": "gpt",
  "updated_at": "2026-08-29T07:28:23.858026+00:00",
  "project_config_snapshot": {}
}