"""s6 — v3.1 마이크로 검증: hop 이후 CONTROL=eye-level 스케치로 교체.

v3 풀체인의 항공 회귀 원인(temp CONTROL=top-down root_marked 의 prior 재주입)을
격리 확인했으므로, CONTROL 을 sketch(eye-level line-art)로 바꿔 체인 유지 여부 검증.
산출: out/outdoor_v3/S4_Shot1/{temp_v31,bg_B_v31,final_B_v31}.png
"""
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent))
import forest_lib as F  # noqa: E402
import forest_chain as C  # noqa: E402

SK = "S4_Shot1"

recon = F.load_recon()
s = recon["shots"][SK]
d = F.OUT / "outdoor_v3" / SK
contracts = [C.people_contract(s), C.MARKER_NOT_PEOPLE, C.EYE_LEVEL_CONTRACT]
passports = C.passports_for_shot(recon, s)

temp = C.temp_shot(f"{SK}_temp_v31", s, d / "plate.png", d / "sketch.png",
                   d / "temp_v31.png", contracts=contracts)
comp = C.vlm_composition(SK + "_v31", temp)
bg = C.bg_regen(f"{SK}_bgB_v31", s, d / "plate.png", d / "bg_B_v31.png",
                comp=comp, contracts=contracts)
C.final_shot(f"{SK}_final_B_v31", s, bg, passports, d / "final_B_v31.png",
             contracts=contracts)
F.runlog({"kind": "stage", "stage": "s6_hopfix", "shot": SK})
print("v31 done")
