§
    —Èj,u  ã                   ó  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
ddlZddlmZ ddlmZmZ ddlZ ee¦  «                             ¦   «         j        j        Zedz  Zedz  dz  Zedz  dz  Zedz  d	z  Zed
z  dz  dz  dz  Z ee¦  «        ej        vr$ej                             d ee¦  «        ¦  «         ddlZddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'  ej(        d¬¦  «        d„ ¦   «         Z) G d„ d¦  «        Z* G d„ d¦  «        Z+dS )u7  
=============================================================================
THáº¬P NGÅ¨ NIÃŠN (THE FIFTEEN SPRINGS) - CHALLENGER 1 EMPIRICAL GATE VERIFICATION
=============================================================================
Module: tests/test_m3_challenger1_probe.py
Milestone: M3 Gate Verification (Challenger 1 Empirical Challenge)
Author: Challenger 1 (Adversarial Critic)

Mandatory Verification:
1. Empirically probe Start Frame resolution across all 140 shots of Ep01 Scenes 01 to 10:
   - Every shot must resolve to a physical file existing on disk.
   - Every file must be a valid readable image >= 720p.
   - Character safeguards must strictly hold across all 140 shots.
2. Empirically challenge the Shot Gate retake loop with real synthetic files:
   - Score < 0.8 retakes with incremented versions (_v1, _v2, _v3).
   - Terminates with True on score >= 0.8.
   - Terminates with False on max_retakes exhausted.
   - suggested_action == 'RETAKE_SHOT' overrides score >= 0.8.
=============================================================================
é    N)ÚPath)ÚpatchÚ	MagicMockÚ05_Production_PipelineÚ	04_AssetsÚvideosÚ	keyframesÚ
charactersÚepisodesÚep01Úpromptszmuse_prompts.json)Úrun_shot_pipelineÚensure_audio_guardÚAUDIO_GUARD_CANONICAL)ÚVideoCriticVerdictÚShotEvaluationÚSceneEvaluationÚmodule)Úscopec                  ó  ‡— t          j        d¦  «        } d„ t          dd¦  «        D ¦   «         Šˆfd„|                      ¦   «         D ¦   «         }t	          |¦  «        }d}||k    }|�st          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nd	d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        dt	          |¦  «        › �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|S )z(Load all shots for Ep01 Scenes 01 to 10.r   c                 ó   — g | ]}d |d›�‘Œ	S ©Ú
ep01_sceneÚ02d© ©Ú.0Úis     ú8C:\Projects\KieuStory\tests\test_m3_challenger1_probe.pyú
<listcomp>z"ep01_140_shots.<locals>.<listcomp>2   s$   € Ð9Ð9Ð9 qÐ"˜1Ð"Ð"Ð"Ð9Ð9Ð9ó    é   é   c                 óV   •— i | ]%\  }}|                      d ¦  «        d         ‰v ¯"||“Œ&S )Ú_shotr   )Úsplit)r   ÚsidÚsdataÚsceness      €r   ú
<dictcomp>z"ep01_140_shots.<locals>.<dictcomp>3   s<   ø€ Ð^Ð^Ð^™z˜s E¸c¿iºiÈÑ>PÔ>PÐQRÔ>SÐW]Ð>]Ð>]��UÐ>]Ð>]Ð>]r!   éŒ   ©ú==©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚfiltered©Úpy0Úpy1Úpy3Úpy6z9Expected exactly 140 shots across Scenes 01 to 10, found ú
>assert %(py8)sÚpy8N)ÚpoÚget_all_shotsÚrangeÚitemsr/   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚ_format_assertmsgÚAssertionErrorÚ_format_explanation)Úshotsr0   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9r)   s          @r   Úep01_140_shotsrK   .   s•  ø€ õ Ô˜VÑ$Ô$€EØ9Ð9­E°!°R©L¬LÐ9Ñ9Ô9€FØ^Ð^Ð^Ð^¨U¯[ª[©]¬]Ð^Ñ^Ô^€HÝˆx‰=Œ=Ðl˜CÐlˆ=˜CÒÐlÐlÑlÕlÔlÐlÐlÐlÐlˆ=˜CÐlÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔl�3ÑlÔlÐlÕlÔl�3ÑlÔlÐlÐlÐlÕlÔlÑlÔlÐlÐlÕlÔlˆxÑlÔlÐlÕlÔlˆxÑlÔlÐlÐlÕlÔlˆ=ÑlÔlÕlÔl˜CÑlÔlÐlÐlÑlÐlÕlÔlÐ!lÕ]`ÐaiÑ]jÔ]jÐ!lÐ!lÑlÔlÐlÑlÐlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlØ€Or!   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )Ú#TestAll140ShotsStartFrameResolutionzERigorous empirical probe of start frame resolution for all 140 shots.c                 óÆ  — g }g }g }t          |                     ¦   «         ¦  «        D ]º\  }}t          j        ||¦  «        \  }}|s|                     ||f¦  «         Œ7t          |¦  «        }	|	                     ¦   «         r|	                     ¦   «         s|                     ||f¦  «         Œ†|	                     ¦   «         j	        dk    r|                     ||f¦  «         Œ»t          |¦  «        }
d}|
|k    }|�s
t          j        d|fd|
|f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j        d|› �¦  «        dz   d	|iz  }t%          t          j        |¦  «        ¦  «        ‚d
x}
x}}t          |¦  «        }
d}|
|k    }|�s
t          j        d|fd|
|f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j        d|› �¦  «        dz   d	|iz  }t%          t          j        |¦  «        ¦  «        ‚d
x}
x}}t          |¦  «        }
d}|
|k    }|�s
t          j        d|fd|
|f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j        d|› �¦  «        dz   d	|iz  }t%          t          j        |¦  «        ¦  «        ‚d
x}
x}}d
S )z?Every shot must resolve to a physical file that exists on disk.r   r,   r.   r/   Ú
unresolvedr1   zUnresolved shots: r6   r7   NÚnon_existentzNon-existent files resolved: Ú	zero_bytezZero-byte files resolved: )Úsortedr;   r8   Úresolve_start_frame_v2Úappendr   ÚexistsÚis_fileÚstatÚst_sizer/   r<   r=   r>   r?   r@   rA   rB   rC   rD   )ÚselfrK   rO   rP   rQ   r'   r(   Úresolved_frameÚ	take_typeÚprF   rG   rH   rI   rJ   s                  r   Ú7test_probe_140_shots_resolve_to_existing_physical_filesz[TestAll140ShotsStartFrameResolution.test_probe_140_shots_resolve_to_existing_physical_files>   s•  € àˆ
ØˆØˆ	å  ×!5Ò!5Ñ!7Ô!7Ñ8Ô8ð 
	8ð 
	8‰JˆC�Ý(*Ô(AÀ#ÀuÑ(MÔ(MÑ%ˆN˜IØ!ð Ø×!Ò! 3¨	Ð"2Ñ3Ô3Ð3ØÝ�^Ñ$Ô$ˆAØ—8’8‘:”:ð  Q§Y¢Y¡[¤[ð Ø×#Ò# S¨.Ð$9Ñ:Ô:Ð:ØØ�vŠv‰xŒxÔ 1Ò$Ð$Ø× Ò  # ~Ð!6Ñ7Ô7Ð7øå�:‰ŒÐF !ÐFˆ !Ò#ÐFÐFÑFÕFÔFÐFÐFÐFÐFˆ !ÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF�sÑFÔFÐFÕFÔF�sÑFÔFÐFÐFÐFÕFÔFÑFÔFÐFÐFÕFÔF�:ÑFÔFÐFÕFÔF�:ÑFÔFÐFÐFÕFÔFˆÑFÔFÕFÔF !ÑFÔFÐFÐFÑFÐFÕFÔFÐ%F¸*Ð%FÐ%FÑFÔFÐFÑFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÝ�<Ñ Ô ÐU AÐUÐ  AÒ%ÐUÐUÑUÕUÔUÐUÐUÐUÐUÐ  AÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU�sÑUÔUÐUÕUÔU�sÑUÔUÐUÐUÐUÕUÔUÑUÔUÐUÐUÕUÔU�<ÑUÔUÐUÕUÔU�<ÑUÔUÐUÐUÕUÔUÐ ÑUÔUÕUÔU AÑUÔUÐUÐUÑUÐUÕUÔUÐ'UÀ|Ð'UÐ'UÑUÔUÐUÑUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÝ�9‰~Œ~ÐL ÐLˆ~ Ò"ÐLÐLÑLÕLÔLÐLÐLÐLÐLˆ~ ÐLÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔL�sÑLÔLÐLÕLÔL�sÑLÔLÐLÐLÐLÕLÔLÑLÔLÐLÐLÕLÔL�9ÑLÔLÐLÕLÔL�9ÑLÔLÐLÐLÕLÔLˆ~ÑLÔLÕLÔL ÑLÔLÐLÐLÑLÐLÕLÔLÐ$LÀÐ$LÐ$LÑLÔLÐLÑLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLr!   c           
      óh	  — i }|                      ¦   «         D �]b\  }}t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        dz   d	|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}||v�r†t          j        |¦  «        }
d}|
|u}|s¯t          j        d|fd|
|f¦  «        d
t          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nd
t          j        |¦  «        dœz  }t          j	        d|› �¦  «        dz   d	|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|
j        dd…         \  }}g }d}||k    }|}|r
d}||k    }|}|�swt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }	dd|	iz  }|                     |¦  «         |r‹t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }t          j	        d|› d|› d|› d�¦  «        dz   d |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}}||f||<   �Œdt#          |¦  «        }d!}||k    }|�st          j        d|fd"||f¦  «        d#t          j        ¦   «         v st          j        t"          ¦  «        rt          j        t"          ¦  «        nd#d$t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd$t          j        |¦  «        t          j        |¦  «        d%œz  }t          j	        d&t#          |¦  «        › �¦  «        d'z   d(|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}dS ))z;Every resolved file must be a valid readable image >= 720p.N©úis not©z%(py0)s is not %(py3)sÚrf©r2   r4   úShot ú returned Noneú
>assert %(py5)sÚpy5Úimgz&Image could not be decoded by OpenCV: é   i¼  i°  )ú>=)z%(py2)s >= %(py5)sÚh)Úpy2rg   z%(py7)sÚpy7)z%(py9)s >= %(py12)sÚw)Úpy9Úpy12z%(py14)sÚpy14r   zImage z  is smaller than 720p standard (Úxú)z
>assert %(py17)sÚpy17é   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sr/   Útested_filesr1   z5Expected at least 20 unique high-quality assets, got r6   r7   )r;   r8   Úresolve_start_framer<   r=   r>   r?   r@   rA   rB   rC   rD   Úcv2ÚimreadÚshaperT   Ú_format_boolopr/   )rY   rK   rv   r'   r(   rb   rF   Ú@py_assert1Ú@py_format4Ú@py_format6rh   rk   rn   rH   Ú@py_assert3Ú@py_assert0Ú@py_assert11Ú@py_assert10Ú@py_format8Ú@py_format13Ú@py_format15Ú@py_format16Ú@py_format18rG   rI   rJ   s                             r   Ú3test_probe_all_resolved_files_are_valid_720p_imageszWTestAll140ShotsStartFrameResolution.test_probe_all_resolved_files_are_valid_720p_imagesT   s…  € àˆØ(×.Ò.Ñ0Ô0ð 	*ñ 	*‰JˆC�ÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø˜Ð%Ñ%Ý”j ‘n”n�Ø"&ÐU�s $�ÐUÐUÐUÕUÔUÐUÐUÐUÐU�s $ÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU�sÑUÔUÐUÕUÔU�sÑUÔUÐUÐUÕUÔU $ÑUÔUÐUÐUÑUÐUÕUÔUÐ(UÐQSÐ(UÐ(UÑUÔUÐUÑUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUØ”y  ! ”}‘��1ØdÐd˜CÐd�q˜C’xÐdÐdÐdÐdÐd¨Ðd A¨¢IÐdÐdÐdÐdÑdÕdÔdÐdÐdÐdÐd�q˜CÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd�qÑdÔdÐdÕdÔd�qÑdÔdÐdÐdÕdÔd˜CÑdÔdÐdÐdÑdÐdÐdÐdÐdÐdÑdÐdÐd×dÒdÐdÑdÔdÐdÐdÐdÕdÔdÐdÐdÐdÐd A¨ÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd AÑdÔdÐdÕdÔd AÑdÔdÐdÐdÕdÔd¨ÑdÔdÐdÐdÑdÐdÐdÐdÐdÐdÑdÐdÐd×dÒdÐdÑdÔdÐdÕdÔdÐdÐdÑdÔdÐdÑdÐdÕdÔdÐ/d¸Ð/dÐ/dÐ\]Ð/dÐ/dÐ`aÐ/dÐ/dÐ/dÑdÔdÐdÑdÐdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdØ$% q 6�˜RÑ ùå�<Ñ Ô Ðs BÐsÐ  BÒ&ÐsÐsÑsÕsÔsÐsÐsÐsÐsÐ  BÐsÑsÔsÐsÕsÔsÑsÔsÐsÐsÕsÔs�sÑsÔsÐsÕsÔs�sÑsÔsÐsÐsÐsÕsÔsÑsÔsÐsÐsÕsÔs�<ÑsÔsÐsÕsÔs�<ÑsÔsÐsÐsÕsÔsÐ ÑsÔsÕsÔs BÑsÔsÐsÐsÑsÐsÕsÔsÐ(sÕ`cÐdpÑ`qÔ`qÐ(sÐ(sÑsÔsÐsÑsÐsÐsÐsÑsÐsÕsÕsÔsÐsÑsÔsÑsÔsÐsÐsÐsÐsÐsÐsÐsÐsÐsr!   c                 ó  — t          dd¦  «        D �]ò}d|d›d�}|                     |i ¦  «        }t          j        ||¦  «        \  }}d}||k    }|s³t	          j        d|fd||f¦  «        d	t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd	t	          j	        |¦  «        d
œz  }	t	          j
        d|› d|› d�¦  «        dz   d|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}}d}|j        } |¦   «         }||v}|sØt	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }t	          j
        d|› d|› �¦  «        dz   d|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}�ŒôdS )zSShot 01 of every scene (01-10) must be CINEMATIC_CUT and never link to a prev_tail.r"   r#   r   r   Ú_shot01ÚCINEMATIC_CUTr,   ©z%(py0)s == %(py3)sr[   rc   zScene opener z classified as z, expected CINEMATIC_CUTrf   rg   NÚclean_frame_239©únot in©zH%(py1)s not in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.lower
}()
}rb   ©r3   r4   rg   rm   z  improperly links to prev_tail: ú
>assert %(py9)sro   )r:   Úgetr8   rS   r<   r=   r>   r?   r@   rA   rB   rC   rD   Úlower)rY   rK   Úscr'   r(   rb   r[   rF   r|   r}   r~   r€   rH   Ú@py_assert6rƒ   Ú@py_format10s                   r   Ú2test_probe_scene_openers_are_always_cinematic_cutszVTestAll140ShotsStartFrameResolution.test_probe_scene_openers_are_always_cinematic_cutsc   sr  € å˜˜2‘,”,ð 	rñ 	rˆBØ.˜rÐ.Ð.Ð.Ð.ˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ5°c¸5ÑAÔA‰MˆB�	Ø /Ðx�9 Ò/ÐxÐxÐxÕxÔxÐxÐxÐxÐx�9 ÐxÑxÔxÐxÕxÔxÑxÔxÐxÐxÕxÔx�9ÑxÔxÐxÕxÔx�9ÑxÔxÐxÐxÕxÔx ÑxÔxÐxÐxÑxÐxÕxÔxÐ1xÀÐ1xÐ1xÐU^Ð1xÐ1xÐ1xÑxÔxÐxÑxÐxÐxÐxÑxÐxÕxÕxÔxÐxÑxÔxÑxÔxÐxÐxÐxÐxÐxØ$Ðq¨B¬HÐq¨H¨H©J¬JÐqÐ$¨JÐ6ÐqÐqÐqÕqÔqÐqÐqÐqÐqÐ$¨JÐqÑqÔqÕqÔqÐ$ÑqÔqÐqÕqÔqÑqÔqÐqÐqÕqÔq¨BÑqÔqÐqÕqÔq¨BÑqÔqÐqÐqÕqÔq¨HÑqÔqÕqÔq¨JÑqÔqÐqÐqÑqÐqÕqÔqÐ8qÈÐ8qÐ8qÐmoÐ8qÐ8qÑqÔqÐqÑqÐqÐqÐqÑqÐqÕqÕqÔqÐqÑqÔqÑqÔqÐqÐqÐqÐqÐqÐqÐqÐqÐqÑqð	rð 	rr!   c           	      ó¤  — g d¢}|D �]z}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|                     ¦   «         }
d}||
v}|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}||
v }|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}�Œ|g d¢}|D �]z}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|                     ¦   «         }
d}||
v}|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}||
v }|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}�Œ|g d¢}|D �]z}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|                     ¦   «         }
d}||
v}|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}||
v }|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d|› d |› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}�Œ|g d!¢}|D �]z}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|                     ¦   «         }
d}||
v}|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d"|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d#}||
v }|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d$|› d%|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}�Œ|g d&¢}|D �]z}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|                     ¦   «         }
d}||
v}|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d'|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d(}||
v }|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d)|› d*|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}�Œ|d+d,d-d.d/d0œ}|                     ¦   «         D �]§\  }}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}|                     ¦   «         }
d}||
v}|s²t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j	        d1|› d|› �¦  «        d	z   d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}||
v }|sàt          j        d|fd2||
f¦  «        d3t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd3dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndd4œz  }t          j	        d5|› d6|› d7|› �¦  «        d8z   d9|iz  }t          t          j        |¦  «        ¦  «        ‚d}�Œ©dS ):ue   Ensure canonical character shots resolve strictly to their own portraits and never leak ThÃºy Kiá»�u.)Úep01_scene07_shot01Úep01_scene07_shot03Úep01_scene07_shot04Úep01_scene07_shot05Úep01_scene07_shot06Úep01_scene07_shot08Úep01_scene08_shot04Úep01_scene08_shot05Úep01_scene08_shot07Úep01_scene09_shot01Úep01_scene09_shot04Úep01_scene10_shot04Úep01_scene10_shot05Úep01_scene10_shot13Nr_   ra   rb   rc   rd   re   rf   rg   Ú	thuy_kieurŽ   ©z%(py1)s not in %(py3)sÚrf_lower©r3   r4   u   LEAK: Kim Trá»�ng shot õ    leaked ThÃºy Kiá»�u: Ú	kim_trong©Úin©z%(py1)s in %(py3)su   Kim Trá»�ng shot u%    expected Kim Trá»�ng portrait, got: )Úep01_scene02_shot04Úep01_scene02_shot07Úep01_scene02_shot10Úep01_scene02_shot13u   LEAK: VÆ°Æ¡ng Ã”ng shot Ú	vuong_ongu   VÆ°Æ¡ng Ã”ng shot u&    expected VÆ°Æ¡ng Ã”ng portrait, got: )Úep01_scene02_shot08Úep01_scene02_shot09Úep01_scene02_shot12Úep01_scene02_shot15Úep01_scene05_shot12u   LEAK: VÆ°Æ¡ng Quan shot Ú
vuong_quanu   VÆ°Æ¡ng Quan shot u&    expected VÆ°Æ¡ng Quan portrait, got: )Úep01_scene03_shot02Úep01_scene03_shot04Úep01_scene04_shot09u   LEAK: ThÃºy VÃ¢n shot Úthuy_vanu   ThÃºy VÃ¢n shot õ$    expected ThÃºy VÃ¢n portrait, got: )Úep01_scene04_shot01Úep01_scene04_shot02Úep01_scene04_shot03Úep01_scene04_shot04Úep01_scene04_shot12zLEAK: Crowd shot Úcrowd_qingmingzCrowd shot z expected crowd asset, got: Úsuoi_ngoc_rang_lieuÚmo_dam_tienÚhoang_hon_rang_lieuÚduong_mon_hoang_honÚbuc_tuong_hoa)Úep01_scene05_shot07Úep01_scene05_shot10Úep01_scene06_shot01Úep01_scene06_shot02Úep01_scene08_shot01zLEAK: Scenery shot ©z%(py0)s in %(py2)sÚexpected_key©r2   rl   zScenery shot z
 expected z, got: ú
>assert %(py4)sÚpy4)r“   r8   rw   r<   r=   r>   r?   r@   rA   rB   rC   rD   r”   r;   )rY   rK   Úkim_trong_shotsr'   r(   rb   rF   r|   r}   r~   rª   r€   Úvuong_ong_shotsÚvuong_quan_shotsÚthuy_van_passing_shotsÚcrowd_shotsÚscenery_shotsrÒ   Ú@py_format3Ú@py_format5s                       r   Ú9test_probe_character_safeguards_canonical_character_shotsz]TestAll140ShotsStartFrameResolution.test_probe_character_safeguards_canonical_character_shotsl   sk  € ð
ð 
ð 
ˆð #ð 	oñ 	oˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐi�; hÐ.ÐiÐiÐiÕiÔiÐiÐiÐiÐi�; hÐiÑiÔiÕiÔi�;ÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi hÑiÔiÐiÕiÔi hÑiÔiÐiÐiÐiÐiÑiÐiÕiÔiÐ0iÈ#Ð0iÐ0iÐegÐ0iÐ0iÑiÔiÐiÑiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiØÐn�; (Ð*ÐnÐnÐnÕnÔnÐnÐnÐnÐn�; (ÐnÑnÔnÕnÔn�;ÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔn (ÑnÔnÐnÕnÔn (ÑnÔnÐnÐnÐnÐnÑnÐnÕnÔnÐ,nÀÐ,nÐ,nÐjlÐ,nÐ,nÑnÔnÐnÑnÐnÐnÐnÑnÐnÕnÕnÔnÐnÑnÔnÑnÔnÐnÐnÐnÐnÐnÑnð
ð 
ð 
ˆð #ð 	qñ 	qˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐj�; hÐ.ÐjÐjÐjÕjÔjÐjÐjÐjÐj�; hÐjÑjÔjÕjÔj�;ÑjÔjÐjÕjÔjÑjÔjÐjÐjÕjÔj hÑjÔjÐjÕjÔj hÑjÔjÐjÐjÐjÐjÑjÐjÕjÔjÐ0jÈ3Ð0jÐ0jÐfhÐ0jÐ0jÑjÔjÐjÑjÐjÐjÐjÑjÐjÕjÕjÔjÐjÑjÔjÑjÔjÐjÐjÐjÐjÐjØÐp�; (Ð*ÐpÐpÐpÕpÔpÐpÐpÐpÐp�; (ÐpÑpÔpÕpÔp�;ÑpÔpÐpÕpÔpÑpÔpÐpÐpÕpÔp (ÑpÔpÐpÕpÔp (ÑpÔpÐpÐpÐpÐpÑpÐpÕpÔpÐ,pÀÐ,pÐ,pÐlnÐ,pÐ,pÑpÔpÐpÑpÐpÐpÐpÑpÐpÕpÕpÔpÐpÑpÔpÑpÔpÐpÐpÐpÐpÐpÑpð
ð 
ð 
Ðð $ð 	rñ 	rˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐj�; hÐ.ÐjÐjÐjÕjÔjÐjÐjÐjÐj�; hÐjÑjÔjÕjÔj�;ÑjÔjÐjÕjÔjÑjÔjÐjÐjÕjÔj hÑjÔjÐjÕjÔj hÑjÔjÐjÐjÐjÐjÑjÐjÕjÔjÐ0jÈ3Ð0jÐ0jÐfhÐ0jÐ0jÑjÔjÐjÑjÐjÐjÐjÑjÐjÕjÕjÔjÐjÑjÔjÑjÔjÐjÐjÐjÐjÐjØÐq�< 8Ð+ÐqÐqÐqÕqÔqÐqÐqÐqÐq�< 8ÐqÑqÔqÕqÔq�<ÑqÔqÐqÕqÔqÑqÔqÐqÐqÕqÔq 8ÑqÔqÐqÕqÔq 8ÑqÔqÐqÐqÐqÐqÑqÐqÕqÔqÐ-qÀ#Ð-qÐ-qÐmoÐ-qÐ-qÑqÔqÐqÑqÐqÐqÐqÑqÐqÕqÕqÔqÐqÑqÔqÑqÔqÐqÐqÐqÐqÐqÑqð"
ð "
ð "
Ðð *ð 	lñ 	lˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐh�; hÐ.ÐhÐhÐhÕhÔhÐhÐhÐhÐh�; hÐhÑhÔhÕhÔh�;ÑhÔhÐhÕhÔhÑhÔhÐhÐhÕhÔh hÑhÔhÐhÕhÔh hÑhÔhÐhÐhÐhÐhÑhÐhÕhÔhÐ0hÈÐ0hÐ0hÐdfÐ0hÐ0hÑhÔhÐhÑhÐhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhØÐk�: Ð)ÐkÐkÐkÕkÔkÐkÐkÐkÐk�: ÐkÑkÔkÕkÔk�:ÑkÔkÐkÕkÔkÑkÔkÐkÐkÕkÔk ÑkÔkÐkÕkÔk ÑkÔkÐkÐkÐkÐkÑkÐkÕkÔkÐ+k¸cÐ+kÐ+kÐgiÐ+kÐ+kÑkÔkÐkÑkÐkÐkÐkÑkÐkÕkÕkÔkÐkÑkÔkÑkÔkÐkÐkÐkÐkÐkÑkð
ð 
ð 
ˆð ð 	eñ 	eˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐc�; hÐ.ÐcÐcÐcÕcÔcÐcÐcÐcÐc�; hÐcÑcÔcÕcÔc�;ÑcÔcÐcÕcÔcÑcÔcÐcÐcÕcÔc hÑcÔcÐcÕcÔc hÑcÔcÐcÐcÐcÐcÑcÐcÕcÔcÐ0cÀCÐ0cÐ0cÐ_aÐ0cÐ0cÑcÔcÐcÑcÐcÐcÐcÑcÐcÕcÕcÔcÐcÑcÔcÑcÔcÐcÐcÐcÐcÐcØ#ÐdÐ# xÐ/ÐdÐdÐdÕdÔdÐdÐdÐdÐdÐ# xÐdÑdÔdÕdÔdÐ#ÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd xÑdÔdÐdÕdÔd xÑdÔdÐdÐdÐdÐdÑdÐdÕdÔdÐ1d¸sÐ1dÐ1dÐ`bÐ1dÐ1dÑdÔdÐdÑdÐdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÑdð $9Ø#0Ø#8Ø#8Ø#2ð
ð 
ˆð "/×!4Ò!4Ñ!6Ô!6ð 	fñ 	fÑˆC�Ø"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐe�; hÐ.ÐeÐeÐeÕeÔeÐeÐeÐeÐe�; hÐeÑeÔeÕeÔe�;ÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔe hÑeÔeÐeÕeÔe hÑeÔeÐeÐeÐeÐeÑeÐeÕeÔeÐ0eÀcÐ0eÐ0eÐacÐ0eÐ0eÑeÔeÐeÑeÐeÐeÐeÑeÐeÕeÕeÔeÐeÑeÔeÑeÔeÐeÐeÐeÐeÐeØ 8Ð+ÐeÐeÐeÕeÔeÐeÐeÐeÐe�< 8ÐeÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔe�<ÑeÔeÐeÕeÔe�<ÑeÔeÐeÐeÐeÕeÔeÑeÔeÐeÐeÕeÔe 8ÑeÔeÐeÕeÔe 8ÑeÔeÐeÐeÐeÐeÑeÐeÕeÔeÐ-e¸SÐ-eÐ-eÈLÐ-eÐ-eÐacÐ-eÐ-eÑeÔeÐeÑeÐeÐeÐeÑeÐeÕeÕeÔeÐeÑeÔeÑeÔeÐeÐeÐeÑeð	fð 	fr!   c                 ó  — dD �]z}|                      |i ¦  «        }t          j        ||¦  «        }d}||u}|s°t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }t          j	        d|› d�¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}|                     ¦   «         }	d}
|
|	v}|s²t          j        d|fd|
|	f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
}d}
|
|	v }|s²t          j        d|fd|
|	f¦  «        t          j        |
¦  «        dt          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        nddœz  }t          j	        d|› d|› �¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
}�Œ|dS )u¦  
        EMPIRICAL BUG REPRODUCTION:
        In Scene 03 (Ná»˜I. KHUÃŠ PHÃ’NG THÃšY KIá»€U & THÃšY VÃ‚N):
        - Shot 03 (Ä�áº·c táº£ váº» Ä‘áº¹p ThÃºy VÃ¢n / Close-Up Portrait ThÃºy VÃ¢n) resolves to ThÃºy Kiá»�u.
        - Shot 05 (ThÃºy VÃ¢n Ä‘á»©ng dáº­y gá»�i chá»‹ / Medium Shot ThÃºy VÃ¢n) resolves to ThÃºy Kiá»�u.
        Both shots must resolve to ThÃºy VÃ¢n portrait (thuy_van_maiden_16yo_720p.png).
        )Úep01_scene03_shot03Úep01_scene03_shot05Nr_   ra   rb   rc   rd   re   rf   rg   r¨   rŽ   r©   rª   r«   zDEFECT CONFIRMED: Shot r¬   r¿   r®   r°   rÀ   )r“   r8   rw   r<   r=   r>   r?   r@   rA   rB   rC   rD   r”   )rY   rK   r'   r(   rb   rF   r|   r}   r~   rª   r€   s              r   Ú;test_empirical_defect_scene03_thuy_van_shots_leak_thuy_kieuz_TestAll140ShotsStartFrameResolution.test_empirical_defect_scene03_thuy_van_shots_leak_thuy_kieu¾   s  € ð Bð 	añ 	aˆCØ"×&Ò& s¨BÑ/Ô/ˆEÝÔ'¨¨UÑ3Ô3ˆBØ!Ð>�2˜T�>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>�2˜TÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�2Ñ>Ô>Ð>Õ>Ô>�2Ñ>Ô>Ð>Ð>Õ>Ô>˜TÑ>Ô>Ð>Ð>Ñ>Ð>Õ>Ô>Ð#>¨3Ð#>Ð#>Ð#>Ñ>Ô>Ð>Ñ>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ø—x’x‘z”zˆHØÐi�; hÐ.ÐiÐiÐiÕiÔiÐiÐiÐiÐi�; hÐiÑiÔiÕiÔi�;ÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi hÑiÔiÐiÕiÔi hÑiÔiÐiÐiÐiÐiÑiÐiÕiÔiÐ0iÈ#Ð0iÐ0iÐegÐ0iÐ0iÑiÔiÐiÑiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiØÐ`�: Ð)Ð`Ð`Ð`Õ`Ô`Ð`Ð`Ð`Ð`�: Ð`Ñ`Ô`Õ`Ô`�:Ñ`Ô`Ð`Õ`Ô`Ñ`Ô`Ð`Ð`Õ`Ô` Ñ`Ô`Ð`Õ`Ô` Ñ`Ô`Ð`Ð`Ð`Ð`Ñ`Ð`Õ`Ô`Ð+`°3Ð+`Ð+`Ð\^Ð+`Ð+`Ñ`Ô`Ð`Ñ`Ð`Ð`Ð`Ñ`Ð`Õ`Õ`Ô`Ð`Ñ`Ô`Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ñ`ð	að 	ar!   c           	      óV  — ddddœdfddddœdfddddœdfd	d
ddœd
fddddœdfg}|D �]\  }}}t          j        ||¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}| 
                    ¦   «         }
||
v }|sàt          j        d|fd||
f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }t          j        d|› d|› d|› �¦  «        dz   d|iz  }t          t          j	        |¦  «        ¦  «        ‚d}|dk    r¾d}||
v}|s²t          j        d|fd ||
f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndd!œz  }t          j        d"|› d#|› �¦  «        d$z   d|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}�Œ�dS )%u~   Adversarial test: even if prompt data contains corrupted character_asset_ref pointing to ThÃºy Kiá»�u, safeguard overrides it.rš   r­   úH04_Assets/characters/01_Main_Protagonists/thuy_kieu_maiden_16yo_720p.png)Úcharacter_anchorÚcharacter_asset_refr±   rµ   r¶   r»   rá   r¿   Úep01_scene02_shot01r¨   úA04_Assets/characters/01_Main_Protagonists/kim_trong_18yo_720p.pngNr_   ra   Úresolvedrc   úassert %(py5)srg   r®   rÑ   Úexpected_charÚr_lowerrÓ   z Adversarial override failed for z: expected z, got rÔ   rÕ   rŽ   r©   r«   u&   Adversarial leak of ThÃºy Kiá»�u into z: rf   )r8   rw   r<   r=   r>   r?   r@   rA   rC   rD   r”   rB   )rY   Úcorrupted_casesÚshot_idÚcorrupted_datarë   ré   rF   r|   r}   r~   rì   rÜ   rÝ   r€   s                 r   Ú4test_probe_adversarial_bilateral_safeguards_overridezXTestAll140ShotsStartFrameResolution.test_probe_adversarial_bilateral_safeguards_overrideÎ   sÇ  € ð #¸ð  ^hð  %ið  %ið  kvð  wØ"¸ð  ^hð  %ið  %ið  kvð  wØ"¸ð  _ið  %jð  %jð  lxð  yØ"¸ð  ]gð  %hð  %hð  jtð  uØ"¸ð  ^að  %bð  %bð  doð  pð
ˆð 7Fð 	rñ 	rÑ2ˆG�^ ]ÝÔ-¨g°~ÑFÔFˆHØ#'Ð'�8 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'�8 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�8Ñ'Ô'Ð'Õ'Ô'�8Ñ'Ô'Ð'Ð'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ø—n’nÑ&Ô&ˆGØ  GÐ+ð  Dð  Dð  Dõ  Dô  Dð  Dð  Dð  Dð  D�= Gð  Dñ  Dô  Dð  Dõ  Dô  Dñ  Dô  Dð  Dð  Dõ  Dô  D�=ñ  Dô  Dð  Dõ  Dô  D�=ñ  Dô  Dð  Dð  Dð  Dõ  Dô  Dñ  Dô  Dð  Dð  Dõ  Dô  D Gñ  Dô  Dð  Dõ  Dô  D Gñ  Dô  Dð  Dð  Dð  Dð  Dñ  Dð  Dõ  Dô  Dð  .DÐPWð  .Dð  .DÐdqð  .Dð  .Dð  zBð  .Dð  .Dñ  Dô  Dð  Dñ  Dð  Dð  Dð  Dñ  Dð  Dõ  Dõ  Dô  Dð  Dñ  Dô  Dñ  Dô  Dð  Dð  Dð  DØ Ò+Ð+Ø"Ðq�{¨'Ð1ÐqÐqÐqÕqÔqÐqÐqÐqÐq�{¨'ÐqÑqÔqÕqÔq�{ÑqÔqÐqÕqÔqÑqÔqÐqÐqÕqÔq¨'ÑqÔqÐqÕqÔq¨'ÑqÔqÐqÐqÐqÐqÑqÐqÕqÔqÐ3qÐ\cÐ3qÐ3qÐgoÐ3qÐ3qÑqÔqÐqÑqÐqÐqÐqÑqÐqÕqÕqÔqÐqÑqÔqÑqÔqÐqÐqÐqÐqÐqùð	rð 	rr!   c                 óè  ‡ — t           j        }d}|j        }d} ||¦  «        } |||¬¦  «        }d}||k    }	|	�sQt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœ	z  }
d	d
|
iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}	}t           j        }d} ||¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}}t           j        }d}|j        }d} ||¦  «        } |||¬¦  «        }d}||k    }	|	�sQt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœ	z  }
d	d
|
iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}	}t           j        }d} ||¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}}t           j        }d}|j        }d} ||¦  «        } |||¬¦  «        }d}||k    }	|	�sQt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœ	z  }
d	d
|
iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}	}t           j        }d} ||¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}}d„ t          dd¦  «        D ¦   «         }g }|D �]@Š t          ˆ fd„|D ¦   «         ¦  «        }t          dt          |¦  «        ¦  «        D �]}||dz
           ||         }}||                              dd¦  «        }||                              dd¦  «        }t          j        ||||         ¬¦  «        }|r–|r”t          j        |¦  «        j                             ¦   «         }t          j        |¦  «        j                             ¦   «         }dD ]}||v r|}||v r|}Œ||k    r'|dk    r!|                     |› d|› d|› d|› d�¦  «         �Œ�ŒBt          |¦  «        }d}||k    }|�s
t          j        d|fd||f¦  «        d t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd d!t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd!t          j        |¦  «        t          j        |¦  «        d"œz  }t          j        d#|› �¦  «        d$z   d%|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}dS )&u¬  
        EMPIRICAL PROBE:
        Actor switches between distinct characters must strictly be classified as CINEMATIC_CUT.
        - Scene 03 Shot 05 (ThÃºy VÃ¢n) -> Shot 06 (ThÃºy Kiá»�u)
        - Scene 02 Shot 10 (VÆ°Æ¡ng Ã”ng) -> Shot 11 (VÆ°Æ¡ng Quan)
        - Scene 08 Shot 07 (Kim Trá»�ng) -> Shot 08 (ThÃºy Kiá»�u)
        - 140 shots transition matrix audit across Scenes 01 to 10 (0 actor-switch mismatches).
        Úep01_scene03_shot06)Ú	shot_datar‹   r,   )z§%(py13)s
{%(py13)s = %(py2)s
{%(py2)s = %(py0)s.classify_shot_take
}(%(py4)s, shot_data=%(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s.get
}(%(py9)s)
})
} == %(py16)sr8   rK   )	r2   rl   rÕ   rg   rm   ro   Úpy11Úpy13Úpy16zassert %(py18)sÚpy18N)zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.classify_shot_take
}(%(py4)s)
} == %(py9)s©r2   rl   rÕ   r5   ro   zassert %(py11)srô   Úep01_scene02_shot11Úep01_scene08_shot08c                 ó   — g | ]}d |d›�‘Œ	S r   r   r   s     r   r    zqTestAll140ShotsStartFrameResolution.test_classify_shot_take_actor_switches_are_cinematic_cuts.<locals>.<listcomp>õ   s$   € Ð=Ð=Ð=¨1Ð&˜qÐ&Ð&Ð&Ð=Ð=Ð=r!   r"   r#   c                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯|‘ŒS )Ú_)Ú
startswith)r   Úsr•   s     €r   r    zqTestAll140ShotsStartFrameResolution.test_classify_shot_take_actor_switches_are_cinematic_cuts.<locals>.<listcomp>ø   s.   ø€ ÐSÐSÐS Q¸A¿LºLÈÈcÉÑ<RÔ<RÐS˜qÐSÐSÐSr!   ræ   Ú )Úprev_shot_idró   )r¿   r¨   r­   rµ   Úvuong_bar»   Údam_tienÚ	tieu_dongÚCONTINUOUS_TAKEz -> z (rs   r   r.   r/   Ú
mismatchesr1   zActor switch mismatches found: r6   r7   )r8   Úclassify_shot_taker“   r<   r=   r>   r?   r@   rA   rC   rD   r:   rR   r/   r   Ústemr”   rT   rB   )!rY   rK   r|   r   r–   Ú@py_assert8r‚   Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_format17Ú@py_format19rG   Ú@py_assert7r—   Ú@py_format12r)   r  Úsc_shotsr   Úp_idÚc_idÚp_refÚc_refÚttÚp_groupÚc_groupÚkrF   rH   rI   rJ   r•   s!                                   @r   Ú9test_classify_shot_take_actor_switches_are_cinematic_cutsz]TestAll140ShotsStartFrameResolution.test_classify_shot_take_actor_switches_are_cinematic_cutsß   s  ø€ õ Ô$ð  	DÐ%:ð  	DÀnÔFXð  	DÐYnð  	DÐFXÐFXÐYnÑFoÔFoð  	DÐ$Ð$Ð%:ÐFoÐpÑpÔpð  	Dð  uDð  	DÐpð  uDò  Dð  	Dð  	Dñ  	Dõ  	Dô  	Dð  	Dð  	Dð  	Dð  	DÐpð  uDð  	Dñ  	Dô  	Dð  	Dõ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	D�rñ  	Dô  	Dð  	Dõ  	Dô  	D�rñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÐ$ñ  	Dô  	Dõ  	Dô  	DÐ%:ñ  	Dô  	Dð  	Dõ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÀnñ  	Dô  	Dð  	Dõ  	Dô  	DÀnñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÐFXñ  	Dô  	Dõ  	Dô  	DÐYnñ  	Dô  	Dõ  	Dô  	DÐFoñ  	Dô  	Dõ  	Dô  	DÐpñ  	Dô  	Dõ  	Dô  	Dð  uDñ  	Dô  	Dð  	Dð  	Dñ  	Dð  	Dð  	Dð  	Dð  	Dð  	Dñ  	Dð  	Dõ  	Dõ  	Dô  	Dð  	Dñ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	DÝÔ$ÐNÐ%:ÐNÐ$Ð$Ð%:Ñ;Ô;ÐN¸ÐNÐ;¸ÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ;¸ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�rÑNÔNÐNÕNÔN�rÑNÔNÐNÐNÕNÔNÐ$ÑNÔNÕNÔNÐ%:ÑNÔNÕNÔNÐ;ÑNÔNÕNÔN¸ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNõ Ô$ð  	DÐ%:ð  	DÀnÔFXð  	DÐYnð  	DÐFXÐFXÐYnÑFoÔFoð  	DÐ$Ð$Ð%:ÐFoÐpÑpÔpð  	Dð  uDð  	DÐpð  uDò  Dð  	Dð  	Dñ  	Dõ  	Dô  	Dð  	Dð  	Dð  	Dð  	DÐpð  uDð  	Dñ  	Dô  	Dð  	Dõ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	D�rñ  	Dô  	Dð  	Dõ  	Dô  	D�rñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÐ$ñ  	Dô  	Dõ  	Dô  	DÐ%:ñ  	Dô  	Dð  	Dõ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÀnñ  	Dô  	Dð  	Dõ  	Dô  	DÀnñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÐFXñ  	Dô  	Dõ  	Dô  	DÐYnñ  	Dô  	Dõ  	Dô  	DÐFoñ  	Dô  	Dõ  	Dô  	DÐpñ  	Dô  	Dõ  	Dô  	Dð  uDñ  	Dô  	Dð  	Dð  	Dñ  	Dð  	Dð  	Dð  	Dð  	Dð  	Dñ  	Dð  	Dõ  	Dõ  	Dô  	Dð  	Dñ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	DÝÔ$ÐNÐ%:ÐNÐ$Ð$Ð%:Ñ;Ô;ÐN¸ÐNÐ;¸ÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ;¸ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�rÑNÔNÐNÕNÔN�rÑNÔNÐNÐNÕNÔNÐ$ÑNÔNÕNÔNÐ%:ÑNÔNÕNÔNÐ;ÑNÔNÕNÔN¸ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNõ Ô$ð  	DÐ%:ð  	DÀnÔFXð  	DÐYnð  	DÐFXÐFXÐYnÑFoÔFoð  	DÐ$Ð$Ð%:ÐFoÐpÑpÔpð  	Dð  uDð  	DÐpð  uDò  Dð  	Dð  	Dñ  	Dõ  	Dô  	Dð  	Dð  	Dð  	Dð  	DÐpð  uDð  	Dñ  	Dô  	Dð  	Dõ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	D�rñ  	Dô  	Dð  	Dõ  	Dô  	D�rñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÐ$ñ  	Dô  	Dõ  	Dô  	DÐ%:ñ  	Dô  	Dð  	Dõ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÀnñ  	Dô  	Dð  	Dõ  	Dô  	DÀnñ  	Dô  	Dð  	Dð  	Dõ  	Dô  	DÐFXñ  	Dô  	Dõ  	Dô  	DÐYnñ  	Dô  	Dõ  	Dô  	DÐFoñ  	Dô  	Dõ  	Dô  	DÐpñ  	Dô  	Dõ  	Dô  	Dð  uDñ  	Dô  	Dð  	Dð  	Dñ  	Dð  	Dð  	Dð  	Dð  	Dð  	Dñ  	Dð  	Dõ  	Dõ  	Dô  	Dð  	Dñ  	Dô  	Dñ  	Dô  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	DÝÔ$ÐNÐ%:ÐNÐ$Ð$Ð%:Ñ;Ô;ÐN¸ÐNÐ;¸ÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ;¸ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�rÑNÔNÐNÕNÔN�rÑNÔNÐNÐNÕNÔNÐ$ÑNÔNÕNÔNÐ%:ÑNÔNÕNÔNÐ;ÑNÔNÕNÔN¸ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNð >Ð=µ°a¸±´Ð=Ñ=Ô=ˆØˆ
Øð 	Xñ 	XˆBÝÐSÐSÐSÐS¨.ÐSÑSÔSÑTÔTˆHÝ˜1�c (™mœmÑ,Ô,ð Xñ X�Ø% a¨!¡eœ_¨h°q¬k�d�Ø& tÔ,×0Ò0Ð1FÈÑKÔK�Ø& tÔ,×0Ò0Ð1FÈÑKÔK�ÝÔ*¨4¸dÈnÐ]aÔNbÐcÑcÔc�Øð X˜Uð XÝ œg e™nœnÔ1×7Ò7Ñ9Ô9�GÝ œg e™nœnÔ1×7Ò7Ñ9Ô9�Gð Dð 5ð 5˜Ø ˜<˜<°1¨Ø ˜<˜<°1¨øØ 'Ò)Ð)¨bÐ4EÒ.EÐ.EØ"×)Ò)¨TÐ*VÐ*V°tÐ*VÐ*V¸wÐ*VÐ*VÈGÐ*VÐ*VÐ*VÑWÔWÐWùñXõ �:‰ŒÐS !ÐSˆ !Ò#ÐSÐSÑSÕSÔSÐSÐSÐSÐSˆ !ÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔS�sÑSÔSÐSÕSÔS�sÑSÔSÐSÐSÐSÕSÔSÑSÔSÐSÐSÕSÔS�:ÑSÔSÐSÕSÔS�:ÑSÔSÐSÐSÕSÔSˆÑSÔSÕSÔS !ÑSÔSÐSÐSÑSÐSÕSÔSÐ%SÀzÐ%SÐ%SÑSÔSÐSÑSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSr!   c                 óÔ	  — t           j        dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 t          j        d|d         ¦  «        \  }}d}||k    }|s¯t          j        d|fd	||f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        dœz  }t          j        d|› �¦  «        dz   d|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}||u}|s¬t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }t          j        d¦  «        dz   d|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}d}
|j        } |¦   «         }|
|v}|sÕt          j        d|fd|
|f¦  «        t          j
        |
¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}d}
|j        } |¦   «         }|
|v}|sÕt          j        d|fd|
|f¦  «        t          j
        |
¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}d}
|j        } |¦   «         }|
|v }|sÕt          j        d|fd|
|f¦  «        t          j
        |
¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          j        d |› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}x}}t          j        |d¬!¦  «         dS # t          j        |d¬!¦  «         w xY w)"uV  
        EMPIRICAL PROBE:
        Simulate a physical tail frame (clean_frame_239.jpg) on disk for ep01_scene03_shot05 (ThÃºy VÃ¢n).
        Verify that resolving ep01_scene03_shot06 (ThÃºy Kiá»�u) does NOT consume ThÃºy VÃ¢n's tail frame,
        classifies as CINEMATIC_CUT, and strictly resolves to ThÃºy Kiá»�u's master portrait.
        rá   T)ÚparentsÚexist_okúclean_frame_239.jpgs   dummy_thuy_van_tail_framerò   r‹   r,   rŒ   r[   rc   zExpected CINEMATIC_CUT, got rf   rg   Nr_   ra   Úrf_06zResolved start frame is Noner�   rŽ   r�   r‘   z(Face leak detected: consumed tail frame r’   ro   r¿   u.   Face leak detected: consumed ThÃºy VÃ¢n asset r¨   r®   )zD%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.lower
}()
}u$   Expected ThÃºy Kiá»�u portrait, got ©Úignore_errors)r8   ÚKEYFRAMES_DIRÚmkdirÚwrite_bytesrS   r<   r=   r>   r?   r@   rA   rB   rC   rD   r”   ÚshutilÚrmtree)rY   rK   Úkf5Útail5r  r[   rF   r|   r}   r~   r€   rH   r–   rƒ   r—   s                  r   Ú9test_simulated_tail_frame_actor_switch_prevents_face_leakz]TestAll140ShotsStartFrameResolution.test_simulated_tail_frame_actor_switch_prevents_face_leak	  s›  € õ ÔÐ!6Ñ6ˆØ�	Š	˜$¨ˆ	Ñ.Ô.Ð.ØÐ+Ñ+ˆØ×ÒÐ6Ñ7Ô7Ð7ð	3Ý!Ô8Ð9NÐP^Ð_tÔPuÑvÔvÑˆE�9Ø /Ð[�9 Ò/Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[�9 Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�9Ñ[Ô[Ð[Õ[Ô[�9Ñ[Ô[Ð[Ð[Õ[Ô[ Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Ô[Ð1[ÐPYÐ1[Ð1[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ø $ÐD�5 Ð$ÐDÐDÐDÕDÔDÐDÐDÐDÐD�5 ÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD�5ÑDÔDÐDÕDÔD�5ÑDÔDÐDÐDÕDÔD ÑDÔDÐDÐDÑDÐDÕDÔDÐ&DÑDÔDÐDÑDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDØ$Ðm¨E¬KÐm¨K¨K©M¬MÐmÐ$¨MÐ9ÐmÐmÐmÕmÔmÐmÐmÐmÐmÐ$¨MÐmÑmÔmÕmÔmÐ$ÑmÔmÐmÕmÔmÑmÔmÐmÐmÕmÔm¨EÑmÔmÐmÕmÔm¨EÑmÔmÐmÐmÕmÔm¨KÑmÔmÕmÔm¨MÑmÔmÐmÐmÑmÐmÕmÔmÐ;mÐfkÐ;mÐ;mÑmÔmÐmÑmÐmÐmÐmÑmÐmÕmÕmÔmÐmÑmÔmÑmÔmÐmÐmÐmÐmÐmÐmÐmÐmÐmØÐl U¤[Ðl [ [¡]¤]Ðl�: ]Ð2ÐlÐlÐlÕlÔlÐlÐlÐlÐl�: ]ÐlÑlÔlÕlÔl�:ÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔl UÑlÔlÐlÕlÔl UÑlÔlÐlÐlÕlÔl [ÑlÔlÕlÔl ]ÑlÔlÐlÐlÑlÐlÕlÔlÐ4lÐejÐ4lÐ4lÑlÔlÐlÑlÐlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlÐlÐlØÐ_ %¤+Ð_ + +¡-¤-Ð_�; -Ð/Ð_Ð_Ð_Õ_Ô_Ð_Ð_Ð_Ð_�; -Ð_Ñ_Ô_Õ_Ô_�;Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_ %Ñ_Ô_Ð_Õ_Ô_ %Ñ_Ô_Ð_Ð_Õ_Ô_ +Ñ_Ô_Õ_Ô_ -Ñ_Ô_Ð_Ð_Ñ_Ð_Õ_Ô_Ð1_ÐX]Ð1_Ð1_Ñ_Ô_Ð_Ñ_Ð_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_åŒM˜#¨TÐ2Ñ2Ô2Ð2Ð2Ð2ø�FŒM˜#¨TÐ2Ñ2Ô2Ð2Ð2øøøs   ÁQ5S ÓS'N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r]   rˆ   r˜   rÞ   râ   rð   r  r)  r   r!   r   rM   rM   ;   s¬   € € € € € ØOÐOðMð Mð Mð,tð tð tðrð rð rðPfð Pfð Pfðdað að að rð rð rð"(Tð (Tð (TðT3ð 3ð 3ð 3ð 3r!   rM   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )Ú,TestEmpiricalShotGateRetakeLoopStressHarnessz�
    Stress-test the Shot Gate retake loop using actual video generation (dry_run=True)
    and empirical verification of versioned video files on disk.
    c           
      óx  ‡‡‡‡— d}	 t                                |› d�¦  «        D ]}|                     d¬¦  «         Œt          |z  }|                     ¦   «         rt          j        |d¬¦  «         t          ddt          ddgd¬	¦  «        d
d¬¦  «        Št          ddt          ddgd¬	¦  «        d
d¬¦  «        Št          ddt          dg d¬	¦  «        dd¬¦  «        Šg Šˆˆˆˆfd„}|dddddœi}t          d|¬¦  «        5  t          d|¬¦  «        5 }t          j        |ddd¬¦  «        }d}||u }	|	s¬t          j        d |	fd!||f¦  «        d"t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd"t          j        |¦  «        d#œz  }
t          j        d$¦  «        d%z   d&|
iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	}|j        }	d(}|	|k    }|sÇt          j        d)|fd*|	|f¦  «        d+t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd+t          j        |	¦  «        t          j        |¦  «        d,œz  }t          j        d-|j        › �¦  «        d.z   d/|iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	x}}t           |› d0�z  }t           |› d1�z  }t           |› d2�z  }|j        }	 |	¦   «         }|s¤t          j        d3|› d4�¦  «        d5z   d6t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd6t          j        |	¦  «        t          j        |¦  «        d7œz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	}|j        }	 |	¦   «         }|s¤t          j        d3|› d4�¦  «        d5z   d8t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd8t          j        |	¦  «        t          j        |¦  «        d7œz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	}|j        }	 |	¦   «         }|s¤t          j        d3|› d4�¦  «        d5z   d9t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd9t          j        |	¦  «        t          j        |¦  «        d7œz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	}|j        }	 |	¦   «         }|j        }d:}||k    }|såt          j        d;|fd<||f¦  «        d6t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd6t          j        |	¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d=œz  }t          j        d>¦  «        d?z   d@|iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	x}x}x}}|j        }	 |	¦   «         }|j        }d:}||k    }|såt          j        d;|fd<||f¦  «        d8t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd8t          j        |	¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d=œz  }t          j        dA¦  «        d?z   d@|iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	x}x}x}}|j        }	 |	¦   «         }|j        }d:}||k    }|såt          j        d;|fd<||f¦  «        d9t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd9t          j        |	¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d=œz  }t          j        dB¦  «        d?z   d@|iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	x}x}x}}dC}‰dD         }||v }|slt          j        dE|fdF||f¦  «        t          j        |¦  «        t          j        |¦  «        dGœz  }dHdI|iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}x}}dJ}‰d         }||v }|slt          j        dE|fdF||f¦  «        t          j        |¦  «        t          j        |¦  «        dGœz  }dHdI|iz  }t'          t          j        |¦  «        ¦  «        ‚d'x}x}}|dKz  }|j        }	 |	¦   «         }|s¤t          j        d3|› dL�¦  «        d5z   dMt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndMt          j        |	¦  «        t          j        |¦  «        d7œz  }t'          t          j        |¦  «        ¦  «        ‚d'x}	}d'd'd'¦  «         n# 1 swxY w Y   d'd'd'¦  «         n# 1 swxY w Y   t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t0          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         d'S d'S # t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t0          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         w w xY w)Na/  
        Scenario:
        - Attempt 1: Critic gives score 0.60 (RETAKE_SHOT) -> generates _v1.mp4.
        - Attempt 2: Critic gives score 0.72 (RETAKE_SHOT) -> generates _v2.mp4 with updated critique prompt.
        - Attempt 3: Critic gives score 0.88 (APPROVE) -> generates _v3.mp4 and succeeds.
        Empirical check:
        - render_single_shot returns True.
        - _v1.mp4, _v2.mp4, and _v3.mp4 physically exist in VIDEOS_DIR.
        - clean_frame_239.jpg physically exists in KEYFRAMES_DIR.
        - Critic was called exactly 3 times.
        Útest_retake_eventual_passÚ*T©Ú
missing_okr   g333333ã?FÚblur©Úcharacter_matchÚvisual_defectsÚscoreÚRETAKE_SHOTu0   Cáº§n tÄƒng Ä‘á»™ nÃ©t khuÃ´n máº·t nhÃ¢n váº­t.©Úoverall_scoreÚapprovedÚ	shot_evalÚsuggested_actionÚcritique_notesg
×£p=
ç?Újitteru8   Chuyá»ƒn Ä‘á»™ng cÃ²n hÆ¡i giáº­t á»Ÿ biÃªn khung hÃ¬nh.g)\�Âõ(ì?gÍÌÌÌÌÌì?ÚAPPROVEu   Ä�áº¡t chuáº©n Ä‘iá»‡n áº£nh.c                 ó†   •— ‰                      |¦  «         t          ‰¦  «        dk    r‰S t          ‰¦  «        dk    r‰S ‰S )Nr"   ri   )rT   r/   )rî   Ú
video_pathÚexpected_characterÚpromptÚprompts_receivedÚ	verdict_1Ú	verdict_2Ú	verdict_3s       €€€€r   Ú	mock_gatez|TestEmpiricalShotGateRetakeLoopStressHarness.test_retake_loop_eventual_approval_with_incremented_versions.<locals>.mock_gateV  sQ   ø€ Ø ×'Ò'¨Ñ/Ô/Ð/ÝÐ'Ñ(Ô(¨AÒ-Ð-Ø$Ð$ÝÐ)Ñ*Ô*¨aÒ/Ð/Ø$Ð$à$Ð$r!   zTest Retake Sceneu#   Kiá»�u Ä‘á»©ng dÆ°á»›i bÃ³ng liá»…ur¨   rä   ©Úscene_titleÚmotion_promptrå   ræ   ú%production_orchestrator.get_all_shots©Úreturn_valueú*production_orchestrator.evaluate_shot_gate©Úside_effectri   ©rî   Údry_runÚenable_criticÚmax_retakes©Úis©z%(py0)s is %(py3)sÚsuccessrc   z5render_single_shot should have succeeded on attempt 3rf   rg   Né   r,   ©z2%(py2)s
{%(py2)s = %(py0)s.call_count
} == %(py5)sÚ	mock_eval©r2   rl   rg   úExpected 3 gate calls, got ú
>assert %(py7)srm   ú_10s_v1.mp4ú_10s_v2.mp4ú_10s_v3.mp4z	Expected z to exist on diskzC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úv1©r2   rl   rÕ   Úv2Úv3iè  )ú>)z_%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.stat
}()
}.st_size
} > %(py9)srø   z v1 video file corrupted or emptyz
>assert %(py11)srô   z v2 video file corrupted or emptyz v3 video file corrupted or emptyu@   [Critique Fix: Cáº§n tÄƒng Ä‘á»™ nÃ©t khuÃ´n máº·t nhÃ¢n váº­t.]r"   r®   )z%(py1)s in %(py4)s)r3   rÕ   zassert %(py6)sr5   uH   [Critique Fix: Chuyá»ƒn Ä‘á»™ng cÃ²n hÆ¡i giáº­t á»Ÿ biÃªn khung hÃ¬nh.]r  z to exist after approvalÚ
tail_frame)Ú
VIDEOS_DIRÚglobÚunlinkr"  rU   r%  r&  r   r   r   r8   Úrender_single_shotr<   r=   r>   r?   r@   rA   rB   rC   rD   Ú
call_countrW   rX   Ú	Exception)rY   Útest_shot_idÚfÚkf_dirrK  Ú
mock_shotsr_  r\  rF   r|   r}   r~   rH   r   rƒ   rf  rh  ri  rÝ   rG   r	  r  r—   r  r€   rI   rk  rG  rH  rI  rJ  s                              @@@@r   Ú<test_retake_loop_eventual_approval_with_incremented_versionsziTestEmpiricalShotGateRetakeLoopStressHarness.test_retake_loop_eventual_approval_with_incremented_versions)  s©  øøøø€ ð 3ˆð[	:å—_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð *ð *�Ø—’ D�Ñ)Ô)Ð)Ð)Ý" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9å*Ø"ØÝ(¸ÐPVÈxÐ_cÐdÑdÔdØ!.ØQðñ ô ˆIõ +Ø"ØÝ(¸ÈxÈjÐ`dÐeÑeÔeØ!.ØYðñ ô ˆIõ +Ø"ØÝ(¸ÈbÐX\Ð]Ñ]Ô]Ø!*Ø>ðñ ô ˆIð  "Ðð%ð %ð %ð %ð %ð %ð %ð %ð Ø#6Ø%JØ(3Ø+uð	ð ðˆJõ Ð>ÈZÐXÑXÔXð ]ð ]ÝÐCÐQZÐ[Ñ[Ô[ð]Ø_håÔ/Ø(Ø Ø"&Ø !ð	ñ ô �ð #'Ð_�w $�Ð_Ð_Ð_Õ_Ô_Ð_Ð_Ð_Ð_�w $Ð_Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_�wÑ_Ô_Ð_Õ_Ô_�wÑ_Ô_Ð_Ð_Õ_Ô_ $Ñ_Ô_Ð_Ð_Ñ_Ð_Õ_Ô_Ð(_Ñ_Ô_Ð_Ñ_Ð_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ø Ô+Ðf¨qÐfÐ+¨qÒ0ÐfÐfÐfÕfÔfÐfÐfÐfÐfÐ+¨qÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf�yÑfÔfÐfÕfÔf�yÑfÔfÐfÐfÕfÔfÐ+ÑfÔfÕfÔf¨qÑfÔfÐfÐfÑfÐfÕfÔfÐ2fÐPYÔPdÐ2fÐ2fÑfÔfÐfÑfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfõ   \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�à”yÐE�y�y‘{”{ÐE�{ÐEÕEÔEÐ$E°Ð$EÐ$EÐ$EÑEÔEÐEÑEÐEÕEÔEÑEÔEÐEÐEÕEÔE�rÑEÔEÐEÕEÔE�rÑEÔEÐEÐEÕEÔE�yÑEÔEÕEÔE�{ÑEÔEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEØ”yÐE�y�y‘{”{ÐE�{ÐEÕEÔEÐ$E°Ð$EÐ$EÐ$EÑEÔEÐEÑEÐEÕEÔEÑEÔEÐEÐEÕEÔE�rÑEÔEÐEÕEÔE�rÑEÔEÐEÐEÕEÔE�yÑEÔEÕEÔE�{ÑEÔEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEØ”yÐE�y�y‘{”{ÐE�{ÐEÕEÔEÐ$E°Ð$EÐ$EÐ$EÑEÔEÐEÑEÐEÕEÔEÑEÔEÐEÐEÕEÔE�rÑEÔEÐEÕEÔE�rÑEÔEÐEÐEÕEÔE�yÑEÔEÕEÔE�{ÑEÔEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEØ”wÐS�w�w‘y”yÐS�yÔ(ÐS¨4ÐSÐ(¨4Ò/ÐSÐSÐSÕSÔSÐSÐSÐSÐSÐ(¨4ÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔS�rÑSÔSÐSÕSÔS�rÑSÔSÐSÐSÕSÔS�wÑSÔSÕSÔS�yÑSÔSÕSÔSÐ(ÑSÔSÕSÔS¨4ÑSÔSÐSÐSÑSÐSÕSÔSÐ1SÑSÔSÐSÑSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSØ”wÐS�w�w‘y”yÐS�yÔ(ÐS¨4ÐSÐ(¨4Ò/ÐSÐSÐSÕSÔSÐSÐSÐSÐSÐ(¨4ÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔS�rÑSÔSÐSÕSÔS�rÑSÔSÐSÐSÕSÔS�wÑSÔSÕSÔS�yÑSÔSÕSÔSÐ(ÑSÔSÕSÔS¨4ÑSÔSÐSÐSÑSÐSÕSÔSÐ1SÑSÔSÐSÑSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSØ”wÐS�w�w‘y”yÐS�yÔ(ÐS¨4ÐSÐ(¨4Ò/ÐSÐSÐSÕSÔSÐSÐSÐSÐSÐ(¨4ÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔS�rÑSÔSÐSÕSÔS�rÑSÔSÐSÐSÕSÔS�wÑSÔSÕSÔS�yÑSÔSÕSÔSÐ(ÑSÔSÕSÔS¨4ÑSÔSÐSÐSÑSÐSÕSÔSÐ1SÑSÔSÐSÑSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSð ZÐpÐ]mÐnoÔ]pÐpÐYÐ]pÐpÐpÐpÐpÕpÔpÐpÐpÐpÐpÐYÐ]pÐpÑpÔpÕpÔpÐYÑpÔpÕpÔpÐ]pÑpÔpÐpÐpÑpÐpÐpÐpÐpÐpÑpÐpÕpÕpÔpÐpÑpÔpÑpÔpÐpÐpÐpÐpÐpÐpÐpØaÐxÐeuÐvwÔexÐxÐaÐexÐxÐxÐxÐxÕxÔxÐxÐxÐxÐxÐaÐexÐxÑxÔxÕxÔxÐaÑxÔxÕxÔxÐexÑxÔxÐxÐxÑxÐxÐxÐxÐxÐxÑxÐxÕxÕxÔxÐxÑxÔxÑxÔxÐxÐxÐxÐxÐxÐxÐxð $Ð&;Ñ;�
Ø!Ô(Ð\Ð(Ð(Ñ*Ô*Ð\Ð*Ð\Õ\Ô\Ð,\¸
Ð,\Ð,\Ð,\Ñ\Ô\Ð\Ñ\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\�zÑ\Ô\Ð\Õ\Ô\�zÑ\Ô\Ð\Ð\Õ\Ô\Ð(Ñ\Ô\Õ\Ô\Ð*Ñ\Ô\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\ð?]ð ]ð ]ñ ]ô ]ð ]ð ]ð ]ð ]ð ]ð ]øøøð ]ð ]ð ]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð ]ð ]ð ]ð ]ð ]øøøð ]ð ]ð ]ð ]õF  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9Ð9ð:ð :øõ	  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9ð:øøøs‹   ˆC<j> Äh7Äc>h èh7è h$	è$h7è'h$	è(h7è+j> è7h;è;j> è>h;è?j> é!i6é6
jêjê> l9ëk3ë2l9ë3
l 	ë=l9ë?l 	ì 9l9c           	      óØ  — d}	 t                                |› d�¦  «        D ]}|                     d¬¦  «         Œt          |z  }|                     ¦   «         rt          j        |d¬¦  «         t          ddt          ddgd	¬
¦  «        dd¬¦  «        }|dddddœi}t          d|¬¦  «        5  t          d|¬¦  «        5 }t          j        |ddd¬¦  «        }d}||u }	|	s¬t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
t          j        d¦  «        dz   d|
iz  }t'          t          j        |¦  «        ¦  «        ‚dx}	}|j        }	d }|	|k    }|sÇt          j        d!|fd"|	|f¦  «        d#t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd#t          j        |	¦  «        t          j        |¦  «        d$œz  }t          j        d%|j        › �¦  «        d&z   d'|iz  }t'          t          j        |¦  «        ¦  «        ‚dx}	x}}t           |› d(�z  }t           |› d)�z  }t           |› d*�z  }t           |› d+�z  }|j        }	 |	¦   «         }|s‹d,d-t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd-t          j        |	¦  «        t          j        |¦  «        d.œz  }t'          t          j        |¦  «        ¦  «        ‚dx}	}|j        }	 |	¦   «         }|s‹d,d/t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/t          j        |	¦  «        t          j        |¦  «        d.œz  }t'          t          j        |¦  «        ¦  «        ‚dx}	}|j        }	 |	¦   «         }|s‹d,d0t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd0t          j        |	¦  «        t          j        |¦  «        d.œz  }t'          t          j        |¦  «        ¦  «        ‚dx}	}|j        }	 |	¦   «         }| }|s t          j        d1¦  «        d2z   d3t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd3t          j        |	¦  «        t          j        |¦  «        d.œz  }t'          t          j        |¦  «        ¦  «        ‚dx}	x}}ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t,          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         dS dS # t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t,          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         w w xY w)4aW  
        Scenario:
        - Critic persistently rejects with score 0.55 (< 0.8).
        - max_retakes = 2.
        Empirical check:
        - render_single_shot terminates and returns False.
        - Critic was called exactly 3 times (1 initial + 2 retakes).
        - Exactly 3 video versions (_v1, _v2, _v3) were created on disk.
        Útest_retake_persistent_failr2  Tr3  r   gš™™™™™á?FÚsevere_morphingg      à?r6  r:  u%   NhÃ¢n váº­t bá»‹ biáº¿n dáº¡ng máº·t.r;  zTest Fail Sceneu#   Kiá»�u buá»“n ráº§u ngáº¯m hoa rÆ¡ir¨   rä   rL  rO  rP  rR  ri   rU  rY  r[  r\  rc   z@render_single_shot should return False when max_retakes exceededrf   rg   Nr]  r,   r^  r_  r`  ra  rb  rm   rc  rd  re  z_10s_v4.mp4úAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}rf  rg  rh  ri  zBv4 should NOT exist since max_retakes=2 limits to 3 total attemptsúG
>assert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úv4)rl  rm  rn  r"  rU   r%  r&  r   r   r   r8   ro  r<   r=   r>   r?   r@   rA   rB   rC   rD   rp  rq  )rY   rr  rs  rt  Úfailing_verdictru  r_  r\  rF   r|   r}   r~   rH   r   rƒ   rf  rh  ri  r|  rÝ   rG   s                        r   Ú=test_retake_loop_persistent_failure_terminates_on_max_retakeszjTestEmpiricalShotGateRetakeLoopStressHarness.test_retake_loop_persistent_failure_terminates_on_max_retakes“  sÊ  € ð 5ˆð5	:Ý—_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð *ð *�Ø—’ D�Ñ)Ô)Ð)Ð)Ý" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9å0Ø"ØÝ(¸ÐPaÐObÐjnÐoÑoÔoØ!.ØFðñ ô ˆOð Ø#4Ø%JØ(3Ø+uð	ð ðˆJõ Ð>ÈZÐXÑXÔXð mð mÝÐCÐRaÐbÑbÔbðmØfoåÔ/Ø(Ø Ø"&Ø !ð	ñ ô �ð #(Ðk�w %Ð'ÐkÐkÐkÕkÔkÐkÐkÐkÐk�w %ÐkÑkÔkÐkÕkÔkÑkÔkÐkÐkÕkÔk�wÑkÔkÐkÕkÔk�wÑkÔkÐkÐkÕkÔk %ÑkÔkÐkÐkÑkÐkÕkÔkÐ)kÑkÔkÐkÑkÐkÐkÐkÑkÐkÕkÕkÔkÐkÑkÔkÑkÔkÐkÐkÐkÐkÐkØ Ô+Ðf¨qÐfÐ+¨qÒ0ÐfÐfÐfÕfÔfÐfÐfÐfÐfÐ+¨qÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf�yÑfÔfÐfÕfÔf�yÑfÔfÐfÐfÕfÔfÐ+ÑfÔfÕfÔf¨qÑfÔfÐfÐfÑfÐfÕfÔfÐ2fÐPYÔPdÐ2fÐ2fÑfÔfÐfÑfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfå \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�à”yÐ"�y�y‘{”{Ð"�{Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�rÑ"Ô"Ð"Õ"Ô"�rÑ"Ô"Ð"Ð"Õ"Ô"�yÑ"Ô"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ø”yÐ"�y�y‘{”{Ð"�{Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�rÑ"Ô"Ð"Õ"Ô"�rÑ"Ô"Ð"Ð"Õ"Ô"�yÑ"Ô"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ø”yÐ"�y�y‘{”{Ð"�{Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�rÑ"Ô"Ð"Õ"Ô"�rÑ"Ô"Ð"Ð"Õ"Ô"�yÑ"Ô"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Øœ9Ðl˜9˜9™;œ;Ðl˜;�Ðl�ÐlÕlÔlÐ(lÑlÔlÐlÑlÐlÕlÔlÑlÔlÐlÐlÕlÔl˜2ÑlÔlÐlÕlÔl˜2ÑlÔlÐlÐlÕlÔl˜9ÑlÔlÕlÔl˜;ÑlÔlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlð+mð mð mñ mô mð mð mð mð mð mð møøøð mð mð mð mð mð mð mñ mô mð mð mð mð mð mð møøøð mð mð mð mõ0  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9Ð9ð:ð :øõ	  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9ð:øøøs‹   „B)W. Â-U'Â?RUÕU'ÕU	ÕU'ÕU	ÕU'ÕW. Õ'U+Õ+W. Õ.U+Õ/W. ÖV&Ö&
V3Ö2V3×. Y)ØX#Ø"Y)Ø#
X0	Ø-Y)Ø/X0	Ø09Y)c           	      ó¶	  — d}	 t                                |› d�¦  «        D ]}|                     d¬¦  «         Œt          |z  }|                     ¦   «         rt          j        |d¬¦  «         t          ddt          dg d¬¦  «        d	d
¬¦  «        }|dddddœi}t          d|¬¦  «        5  t          d|¬¦  «        5 }t          j        |ddd¬¦  «        }d}||u }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t%          t          j        |¦  «        ¦  «        ‚dx}	}|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        d t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |	¦  «        t          j        |¦  «        d!œz  }d"d#|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}	x}}t           |› d$�z  }t           |› d%�z  }|j        }	 |	¦   «         }|s‹d&d't          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd't          j        |	¦  «        t          j        |¦  «        d(œz  }t%          t          j        |¦  «        ¦  «        ‚dx}	}|j        }	 |	¦   «         }| }|s t          j        d)¦  «        d*z   d+t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd+t          j        |	¦  «        t          j        |¦  «        d(œz  }t%          t          j        |¦  «        ¦  «        ‚dx}	x}}ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t,          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         dS dS # t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t,          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         w w xY w),zì
        Scenario:
        - Attempt 1 returns score 0.92 (APPROVE).
        Empirical check:
        - render_single_shot returns True immediately.
        - Critic called exactly 1 time.
        - Only _v1.mp4 exists on disk.
        Útest_retake_immediate_passr2  Tr3  r   çq=
×£pí?gffffffî?r6  rB  u   Tuyá»‡t Ä‘á»‘i Ä‘áº¡t chuáº©n.r;  zTest Pass Sceneu$   Kim Trá»�ng nhÃ¬n sang vÆ°á»�n ThÃºyr­   rè   rL  rO  rP  rR  ri   rU  rY  r[  r\  rc   rê   rg   Nr"   r,   r^  r_  r`  zassert %(py7)srm   rc  rd  rz  rf  rg  z5v2 should NOT exist when shot passes on first attemptr{  rh  ©rl  rm  rn  r"  rU   r%  r&  r   r   r   r8   ro  r<   r=   r>   r?   r@   rA   rC   rD   rp  rB   rq  )rY   rr  rs  rt  Úpass_verdictru  r_  r\  rF   r|   r}   r~   rH   r   rƒ   rf  rh  rÝ   rG   s                      r   Ú/test_retake_loop_immediate_pass_does_not_retakez\TestEmpiricalShotGateRetakeLoopStressHarness.test_retake_loop_immediate_pass_does_not_retakeÕ  s'  € ð 4ˆð1	:Ý—_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð *ð *�Ø—’ D�Ñ)Ô)Ð)Ð)Ý" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9å-Ø"ØÝ(¸ÈbÐX\Ð]Ñ]Ô]Ø!*Ø?ðñ ô ˆLð Ø#4Ø%KØ(3Ø+nð	ð ðˆJõ Ð>ÈZÐXÑXÔXð `ð `ÝÐCÐR^Ð_Ñ_Ô_ð`ØclåÔ/Ø(Ø Ø"&Ø !ð	ñ ô �ð #'Ð&�w $�Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�w $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�wÑ&Ô&Ð&Õ&Ô&�wÑ&Ô&Ð&Ð&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ø Ô+Ð0¨qÐ0Ð+¨qÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð+¨qÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�yÑ0Ô0Ð0Õ0Ô0�yÑ0Ô0Ð0Ð0Õ0Ô0Ð+Ñ0Ô0Õ0Ô0¨qÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0å \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�à”yÐ"�y�y‘{”{Ð"�{Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�rÑ"Ô"Ð"Õ"Ô"�rÑ"Ô"Ð"Ð"Õ"Ô"�yÑ"Ô"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Øœ9Ð_˜9˜9™;œ;Ð_˜;�Ð_�Ð_Õ_Ô_Ð(_Ñ_Ô_Ð_Ñ_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_˜2Ñ_Ô_Ð_Õ_Ô_˜2Ñ_Ô_Ð_Ð_Õ_Ô_˜9Ñ_Ô_Õ_Ô_˜;Ñ_Ô_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_ð#`ð `ð `ñ `ô `ð `ð `ð `ð `ð `ð `øøøð `ð `ð `ð `ð `ð `ð `ñ `ô `ð `ð `ð `ð `ð `ð `øøøð `ð `ð `ð `õ(  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9Ð9ð:ð :øõ	  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9ð:øøøs‹   „B(Q Â,OÂ>K5N?Î3OÎ?O	ÏOÏO	ÏOÏ
Q ÏOÏQ ÏOÏQ Ð PÐ
P"Ð!P"Ñ SÑ=RÒSÒ
R	ÒSÒR	Ò9Sc           	      ób  — d}	 t                                |› d�¦  «        D ]}|                     d¬¦  «         Œt          |z  }|                     ¦   «         rt          j        |d¬¦  «         t          ddt          ddgd¬	¦  «        d
d¬¦  «        }t          ddt          dg d¬	¦  «        dd¬¦  «        }|dddddœi}t          d|¬¦  «        5  t          d||g¬¦  «        5 }t          j        |ddd¬¦  «        }d}	||	u }
|
s—t          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }d d!|iz  }t%          t          j        |¦  «        ¦  «        ‚d"x}
}	|j        }
d}|
|k    }|s¿t          j        d#|fd$|
|f¦  «        d%t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd%t          j        |
¦  «        t          j        |¦  «        d&œz  }t          j        d'¦  «        d(z   d)|iz  }t%          t          j        |¦  «        ¦  «        ‚d"x}
x}}t           |› d*�z  }t           |› d+�z  }t           |› d,�z  }|j        }
 |
¦   «         }|s‹d-d.t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd.t          j        |
¦  «        t          j        |¦  «        d/œz  }t%          t          j        |¦  «        ¦  «        ‚d"x}
}|j        }
 |
¦   «         }|s‹d-d0t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd0t          j        |
¦  «        t          j        |¦  «        d/œz  }t%          t          j        |¦  «        ¦  «        ‚d"x}
}|j        }
 |
¦   «         }| }|s‹d1d2t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd2t          j        |
¦  «        t          j        |¦  «        d/œz  }t%          t          j        |¦  «        ¦  «        ‚d"x}
x}}d"d"d"¦  «         n# 1 swxY w Y   d"d"d"¦  «         n# 1 swxY w Y   t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t,          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         d"S d"S # t                                |› d�¦  «        D ]&}|                     ¦   «          Œ# t,          $ r Y Œ#w xY wt          |z  }|                     ¦   «         rt          j        |d¬¦  «         w w xY w)3a’  
        Scenario:
        - Attempt 1: score = 0.82 (>= 0.8) BUT suggested_action == "RETAKE_SHOT" (e.g. subtle flaw).
        - Attempt 2: score = 0.90 and suggested_action == "APPROVE".
        Empirical check:
        - The loop MUST retake on attempt 1 because suggested_action == "RETAKE_SHOT".
        - Successfully passes on attempt 2.
        - Exactly 2 versions (_v1, _v2) created.
        Útest_retake_action_overrider2  Tr3  r   g=
×£p=ê?FÚmicro_glitchr6  r:  uI   Ä�iá»ƒm khÃ¡ nhÆ°ng Ä‘áº¡o diá»…n yÃªu cáº§u retake do gÃ³c sÃ¡ng lá»‡ch.r;  g…ëQ¸í?r�  rB  u   HoÃ n háº£o.zTest Override Sceneu   VÆ°Æ¡ng Quan bÆ°á»›c ra cá»­ar»   zF04_Assets/characters/02_Vuong_Family_And_Fate/vuong_quan_16yo_720p.pngrL  rO  rP  rR  rS  ri   rU  rY  r[  r\  rc   rê   rg   Nr,   r^  r_  r`  zQShould have retaken despite score >= 0.8 due to suggested_action == 'RETAKE_SHOT'rb  rm   rc  rd  re  rz  rf  rg  rh  zEassert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}ri  r‚  )rY   rr  rs  rt  Úverdict_overrideÚverdict_approvedru  r_  r\  rF   r|   r}   r~   rH   r   rƒ   rf  rh  ri  rÝ   rG   s                        r   Ú8test_retake_loop_action_retake_shot_overrides_high_scorezeTestEmpiricalShotGateRetakeLoopStressHarness.test_retake_loop_action_retake_shot_overrides_high_score  sÖ  € ð 5ˆð:	:Ý—_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð *ð *�Ø—’ D�Ñ)Ô)Ð)Ð)Ý" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9å1Ø"ØÝ(¸È~ÐN^ÐfjÐkÑkÔkØ!.Øjð ñ  ô  Ðõ  2Ø"ØÝ(¸ÈbÐX\Ð]Ñ]Ô]Ø!*Ø-ð ñ  ô  Ðð Ø#8Ø%DØ(4Ø+sð	ð ðˆJõ Ð>ÈZÐXÑXÔXð 'ð 'ÝÐCÐRbÐdtÐQuÐvÑvÔvð'ð {DåÔ/Ø(Ø Ø"&Ø !ð	ñ ô �ð #'Ð&�w $�Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�w $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�wÑ&Ô&Ð&Õ&Ô&�wÑ&Ô&Ð&Ð&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ø Ô+ð  F¨qð  FÐ+¨qÒ0ð  Fð  Fð  Fõ  Fô  Fð  Fð  Fð  Fð  FÐ+¨qð  Fñ  Fô  Fð  Fõ  Fô  Fñ  Fô  Fð  Fð  Fõ  Fô  F�yñ  Fô  Fð  Fõ  Fô  F�yñ  Fô  Fð  Fð  Fõ  Fô  FÐ+ñ  Fô  Fõ  Fô  F¨qñ  Fô  Fð  Fð  Fñ  Fð  Fõ  Fô  Fð  3Fñ  Fô  Fð  Fñ  Fð  Fð  Fð  Fñ  Fð  Fõ  Fõ  Fô  Fð  Fñ  Fô  Fñ  Fô  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Få \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�Ý \Ð">Ð">Ð">Ñ>�à”yÐ"�y�y‘{”{Ð"�{Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�rÑ"Ô"Ð"Õ"Ô"�rÑ"Ô"Ð"Ð"Õ"Ô"�yÑ"Ô"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ø”yÐ"�y�y‘{”{Ð"�{Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�rÑ"Ô"Ð"Õ"Ô"�rÑ"Ô"Ð"Ð"Õ"Ô"�yÑ"Ô"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Øœ9Ð&˜9˜9™;œ;Ð&˜;�Ð&�Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜2Ñ&Ô&Ð&Õ&Ô&˜2Ñ&Ô&Ð&Ð&Õ&Ô&˜9Ñ&Ô&Õ&Ô&˜;Ñ&Ô&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð''ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ,  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9Ð9ð:ð :øõ	  —_’_¨Ð%7Ð%7Ð%7Ñ8Ô8ð 'ð '�Ø—X’X‘Z”Z�Z�ZøÝ Ð&Ð&Ð& $ $Ð&øøøÝ" \Ñ1ˆFØ�}Š}‰Œð :Ý”˜f°DÐ9Ñ9Ô9Ð9Ð9ð:øøøs‹   „CT3 ÃR,Ã%N$RÒ	R,ÒR	ÒR,ÒR	ÒR,Ò T3 Ò,R0Ò0T3 Ò3R0Ò4T3 ÓS+Ó+
S8Ó7S8Ô3 V.ÕU(Õ'V.Õ(
U5	Õ2V.Õ4U5	Õ59V.N)r*  r+  r,  r-  rv  r~  r„  rŠ  r   r!   r   r/  r/  #  sh   € € € € € ðð ð
h:ð h:ð h:ðT@:ð @:ð @:ðD;:ð ;:ð ;:ðzE:ð E:ð E:ð E:ð E:r!   r/  ),r-  Úbuiltinsr>   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter<   ÚosÚsysÚjsonr%  rx   Úpathlibr   Úunittest.mockr   r   ÚpytestÚ__file__ÚresolveÚparentÚPROJECT_ROOTÚPIPELINE_DIRrl  r"  ÚCHARACTERS_DIRÚEP01_PROMPTS_FILEÚstrÚpathÚinsertÚproduction_orchestratorr8   Úrun_shotr   r   r   Úantigravity_critic_gater   r   r   ÚfixturerK   rM   r/  r   r!   r   ú<module>r£     s  ððð ð* € € € € € € € € € € € € €	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø €€€àˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.Ô5€ØÐ6Ñ6€Ø˜KÑ'¨(Ñ2€
Ø˜{Ñ*¨[Ñ8€Ø Ñ+¨lÑ:€Ø  :Ñ-°Ñ6¸ÑBÐEXÑXÐ à€3€|ÑÔ˜CœHÐ$Ð$Ø„H‡O‚O�A�s�s˜<Ñ(Ô(Ñ)Ô)Ð)à $Ð $Ð $Ð $Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wð €„�hÐÑÔðð ñ  Ôððb3ð b3ð b3ð b3ð b3ñ b3ô b3ð b3ðPt:ð t:ð t:ð t:ð t:ñ t:ô t:ð t:ð t:ð t:r!   