ห
    ญgjm  ใ                  ๓,    d Z ddlmZ ddlmZmZ ddZy)uว  W19B-3 / W20B mutual exclusion guard helper.

background_render w18j_overlap (W19B-3) ์ shot_aware_bg_render_plan
(W20B) ๋ ๋์ผ reference-graph SOT ๋ฅผ ๋ค๋ฅด๊ฒ ์ฐ์ถํ  ์ ์์ด ๋ ๋ค ๋์์
ํ์ฑํ๋๋ฉด silent divergence โ ์ด๋ path ์ ๊ฒฐ๊ณผ๊ฐ downstream consumer
์ ๋ฐ์๋ ์ง ์ด์์๊ฐ ์์์ฑ์ง ๋ชปํ๋ค.  fail-closed ๋ก ์ฐจ๋จ.

contract:
    conflict := (
        settings.background_render_reference_mode == "w18j_overlap"
        and bool(settings.shot_aware_bg_render_plan_enabled)
    )

caller side (background_render_step._execute / shot_aware_bg_render_plan_step._execute)
๋ ์ ์ applicability gate ํต๊ณผ ํ โ ์ธ๋ถ ํธ์ถ / DB / ImageAsset write ์  โ ์
``detect_w19b3_w20b_conflict()`` ๋ฅผ ํธ์ถ, ๋ฐํ๊ฐ์ด None ์ด ์๋๋ฉด step result
๋ฅผ ``failed_count=1 + diagnostic`` ํํ๋ก emit (not_applicable ์๋ โ operator
๊ฐ ๋ selector ๊ฐ ๋์์ ์ผ์ง ์ํ๋ฅผ ์ฆ์ ๊ฐ์งํ๋๋ก).
้    )ฺannotations)ฺAnyฺOptionalc                ๓T    t        | ddซ      dk(  rt        t        | ddซ      ซ      r	 yy)u  W19B-3 / W20B ๊ฐ ๋์์ ํ์ฑํ๋ผ ์์ผ๋ฉด diagnostic ๋ฌธ์์ด, ์๋๋ฉด None.

    ํ์ชฝ๋ง ํ์ฑ์ด๊ฑฐ๋ ๋ ๋ค default off ์ผ ๋๋ None.  caller ๊ฐ ์ด ๊ฒฐ๊ณผ๋ฅผ
    ๊ทธ๋๋ก step result error / diagnostic field ์ ์ค์ด fail-closed ์ฒ๋ฆฌ.
    ฺ background_render_reference_modeฺlegacyฺw18j_overlapฺ!shot_aware_bg_render_plan_enabledFzืW19B-3/W20B selector conflict: background_render_reference_mode='w18j_overlap' AND shot_aware_bg_render_plan_enabled=True are mutually exclusive. exactly one of the two reference-graph paths may be opt-in at a time.N)ฺgetattrฺbool)ฺsettingss    ๚U/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/steps/_selector_guards.pyฺdetect_w19b3_w20b_conflictr      s;    ๔ 	ะ<ธhำGุ๒	ไะ#FศำNิO๐T๐	
๐ ๓    N)r   r   ฺreturnzOptional[str])ฺ__doc__ฺ
__future__r   ฺtypingr   r   r   ฉ r   r   ฺ<module>r      s   ๐๑๕& #็  ๔r   