W18J — overlap-driven reference review (fp_l05_01)

W18J run_id: 20260526_1847_1955f2 · derived_from_w18f: 20260526_1559_dfadc8 · derived_from_w18d: 20260526_1522_c6d272 · derived_from_w18i: 20260526_1749_d02334

본 HTML 작성 단계의 새 API 호출은 0. W18J 본 실행에서 gpt-image-2 images.edit 4회 (L05B05/B04/B03/B01) + W18I L05B02 anchor 기존 산출분 1회 = 신 5 PNG. base FP는 W18B 기존 PNG 그대로 reference.
W18J overlap-driven planner contract
reference_derived mode (3 BG): exact-ID overlap (target_unit_refs.unit_id + base_marker_refs.marker_number) 으로 catalog 중 strong overlap (>=1 shared unit AND (>=2 shared units OR >=1 shared base marker)) 이 있는 BG. image=[ref1, ref2 up to 2] 만 사용, FP 제외.
fp_seeded_anchor mode (1 BG): catalog overlap weak. image=[base_fp_png] 만, FP 사용. 새 anchor 처럼 modest style contract 로 fresh home identity 생성.
guidance text 는 mode-keyed (2개), BG-id-keyed dict 없음.

W18B base FP (shared layout reference)

run_id: 20260526_1500_0ab6ac

L05B05 (fp_seeded_anchor) 만 이 FP 를 reference 로 사용.

W18I L05B02 accepted anchor (catalog seed)

run_id: 20260526_1749_d02334

anchor_units: ['kitchen_nook', 'living_dining']
anchor_base_markers: [1, 2, 11, 13, 14, 17]

W18J catalog 에 seed entry 로 등록. L05B01, L05B03 의 reference_derived 후보로 사용됨.

W18J generated BGs (4) — new vs prior comparison

L05B05 mode = fp_seeded_anchor · fp_included = True · selected_refs = (none — FP only)

W18J (new)
prior W18G/H (deprecated)

transient_markers: [] · clean: True · prompt_len: 2227

reference_decision_reason: fp_seeded_anchor: no catalog entry reached strong overlap (needs >=1 shared unit AND (>=2 shared units OR >=1 shared base marker)); base FP used as layout-only reference, BG must establish its own home identity under the modest style contract.

candidatescoreshared_unitsshared_basestrong
L05B021.0['living_dining'][]no

L05B04 mode = reference_derived · fp_included = False · selected_refs = L05B05

W18J (new)
prior W18G/H (deprecated)

transient_markers: [18, 19, 23] · clean: False · prompt_len: 2773

reference_decision_reason: reference_derived: 1 catalog entry reached strong overlap (>=1 shared unit AND (>=2 shared units OR >=1 shared base marker)); selected top-1 by score; FP excluded so reference identity dominates.

candidatescoreshared_unitsshared_basestrong
L05B020.0[][]no
L05B052.5['private_bedroom_a'][3, 8, 12]YES

L05B03 mode = reference_derived · fp_included = False · selected_refs = L05B05, L05B04

W18J (new)
prior W18G/H (deprecated)

transient_markers: [20, 22] · clean: False · prompt_len: 2796

reference_decision_reason: reference_derived: 3 catalog entries reached strong overlap (>=1 shared unit AND (>=2 shared units OR >=1 shared base marker)); selected top-2 by score; FP excluded so reference identity dominates.

candidatescoreshared_unitsshared_basestrong
L05B021.5['living_dining'][1]YES
L05B054.0['living_dining', 'private_bedroom_a'][3, 8, 12, 15]YES
L05B042.5['private_bedroom_a'][3, 8, 12]YES

L05B01 mode = reference_derived · fp_included = False · selected_refs = L05B02, L05B03

W18J (new)
prior W18G/H (deprecated)

transient_markers: [21] · clean: False · prompt_len: 2616

reference_decision_reason: reference_derived: 3 catalog entries reached strong overlap (>=1 shared unit AND (>=2 shared units OR >=1 shared base marker)); selected top-2 by score; FP excluded so reference identity dominates.

candidatescoreshared_unitsshared_basestrong
L05B022.5['living_dining'][1, 11, 13]YES
L05B052.0['living_dining', 'private_bedroom_a'][]YES
L05B041.0['private_bedroom_a'][]no
L05B032.5['living_dining', 'private_bedroom_a'][1]YES

mode summary

{"reference_derived": 3, "fp_seeded_anchor": 1}

invariants (5)

namestatusdetail
inputs_presentPASS
{"missing_inputs": [], "decisions_count": 4, "base_fp_png_exists": true, "anchor_png_exists": true}
targets_within_allowed_and_exclude_anchorPASS
{"target_bg_ids": ["L05B05", "L05B04", "L05B03", "L05B01"], "invalid_targets": [], "anchor_excluded": true, "allowed": ["L05B01", "L05B03", "L05B04", "L05B05"]}
reference_decision_shape_validPASS
{"failures": [], "failure_count": 0, "mode_summary": {"reference_derived": 3, "fp_seeded_anchor": 1}}
image_generation_count_matches_targets_and_modePASS
{"mode": "generated", "image_api_call_count": 4, "image_generation_count": 4, "per_bg_png_existence": {"L05B05": true, "L05B04": true, "L05B03": true, "L05B01": true}}
production_diff_zero_db_write_zero_no_imageasset_writePASS
{"production_diff_empty": true, "db_write_count": 0, "image_asset_write_count": 0, "image_import_seen": false}

style_contract (mode-independent)

Modest compact lived-in home, ordinary domestic finishes, practical low-budget materials, simple consistent indoor lighting, no luxury, no showroom, no hotel, no real-estate brochure styling, no marble, no chandelier, no designer furniture. Preserve the region and markers from the prompt body. Do not render any person, body, or corpse.

mode_guidance (mode-keyed)

{
  "reference_derived": "Inherit the home identity from the provided visual reference image(s). Match floor, wall, window-covering, lighting, and fixed-furniture palette so the room reads as the same dwelling. Do not redraw any transient cue that the reference already contains; only add the transient cues explicitly listed in the prompt body below.",
  "fp_seeded_anchor": "The provided reference is the base floor plan layout only. Use it as spatial guidance, not as a visible overlay. Establish a fresh ordinary lived-in interior under the modest style contract above. Render only the region and markers described in the prompt body below."
}
Counter 정직 보고 (W18J wave 전체)
- W18J planner script: 신규 (backend/scripts/experiment_background_image_overlap_reference_slice.py) + tests 2개.
- image API: 4 (L05B05/B04/B03/B01 각 1회, retry 0).
- LLM API: 0. VLM API: 0.
- production diff (backend/app + backend/alembic): empty.
- DB write: 0. ImageAsset write: 0. commit: 0. push: 0.
- backend/tests/scripts full regression: 605 passed (W18H baseline 603 + 새 2, 회귀 0).
- methodology grep: PASS (script + test 모두 forbidden token 0).
- W18J overlap planner output: scripts_output/background_image_overlap_reference_slice_experiment/20260526_1847_1955f2/.
- 본 review HTML: scripts_output/w18_overlap_review_html/20260526_1855_b193b4/review.html (HTML 작성 단계 새 API 호출 0).