§
    ±uÈj¼  ã                   óþ   — d Z ddlZddlmZ ddlZ ee¦  «                             ¦   «         j        j        Zej	         
                    d eedz  ¦  «        ¦  «         ddlZ G d„ d¦  «        Z G d„ d¦  «        ZdS )	aR  
Deep Adversarial Verification Probe by Challenger 2
Empirically tests:
1. Scene 10, Scene 06, Scene 05 shot resolutions under live data
2. Adversarial metadata injection with corrupted character_asset_ref across all characters
3. Anchor-title conflict resolution
4. Extreme edge cases: None, empty dict, missing files, corrupted strings
é    N)ÚPathÚ05_Production_Pipelinec                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú TestDeepEmpiricalLiveSceneProbeszJEmpirical verification of live scenes requested in challenge instructions.c                 ó
  — t          t          j        d¦  «        ¦  «        }t          |¦  «        dk    s
J d¦   «         ‚dD ]Ÿ}||         }t          j        ||¦  «        \  }}|€J |› d�¦   «         ‚dt          |¦  «        j                             ¦   «         v sJ |› d|› �¦   «         ‚d	t          |¦  «        j                             ¦   «         vsJ |› d
|› �¦   «         ‚Œ dD ]Ÿ}||         }t          j        ||¦  «        \  }}|€J |› d�¦   «         ‚d	t          |¦  «        j                             ¦   «         v sJ |› d|› �¦   «         ‚dt          |¦  «        j                             ¦   «         vsJ |› d|› �¦   «         ‚Œ dS )u¥   
        Confirm ep01_scene10_shot11 & shot12 strictly resolve to ThÃºy Kiá»�u.
        Confirm ep01_scene10_shot04, 05, 13 strictly resolve to Kim Trá»�ng.
        Úep01_scene10r   zScene 10 has no shots!)Úep01_scene10_shot11Úep01_scene10_shot12Nú resolved to NoneÚ	thuy_kieuu"    did not resolve to ThÃºy Kiá»�u: Ú	kim_trongu    leaked Kim Trá»�ng: )Úep01_scene10_shot04Úep01_scene10_shot05Úep01_scene10_shot13õ!    did not resolve to Kim Trá»�ng: õ    leaked ThÃºy Kiá»�u: ©ÚdictÚpoÚget_shots_for_sceneÚlenÚresolve_start_frame_v2r   ÚnameÚlower)ÚselfÚshotsÚsidÚsdataÚresolvedÚtakes         ú:C:\Projects\KieuStory\tests\test_adversarial_deep_probe.pyÚtest_scene10_explicit_shotsz<TestDeepEmpiricalLiveSceneProbes.test_scene10_explicit_shots   sÜ  € õ
 •RÔ+¨NÑ;Ô;Ñ<Ô<ˆÝ�5‰zŒz˜AŠ~ˆ~ˆ~Ð7‰~Œ~ˆ~ð Bð 	kð 	kˆCØ˜#”JˆEÝÔ6°s¸EÑBÔB‰NˆH�dØÐ'Ð'¨CÐ)BÐ)BÐ)BÑ'Ô'Ð'Ø¥$ x¡.¤.Ô"5×";Ò";Ñ"=Ô"=Ð=Ð=Ð=À#Ð?sÐ?sÐiqÐ?sÐ?sÑ=Ô=Ð=Ø¥d¨8¡n¤nÔ&9×&?Ò&?Ñ&AÔ&AÐAÐAÐAÀcÐCjÐCjÐ`hÐCjÐCjÑAÔAÐAÐAð Yð 	lð 	lˆCØ˜#”JˆEÝÔ6°s¸EÑBÔB‰NˆH�dØÐ'Ð'¨CÐ)BÐ)BÐ)BÑ'Ô'Ð'Ø¥$ x¡.¤.Ô"5×";Ò";Ñ"=Ô"=Ð=Ð=Ð=À#Ð?rÐ?rÐhpÐ?rÐ?rÑ=Ô=Ð=Ø¥d¨8¡n¤nÔ&9×&?Ò&?Ñ&AÔ&AÐAÐAÐAÀcÐCkÐCkÐaiÐCkÐCkÑAÔAÐAÐAð	lð 	ló    c                 óÎ  — t          t          j        d¦  «        ¦  «        }t          |¦  «        dk    s
J d¦   «         ‚g d¢}|D ]Ÿ}||         }t          j        ||¦  «        \  }}|€J |› d�¦   «         ‚dt          |¦  «        j                             ¦   «         v sJ |› d|› �¦   «         ‚d	t          |¦  «        j                             ¦   «         vsJ |› d
|› �¦   «         ‚Œ dS )ub   
        Confirm ep01_scene06_shot03, 04, 06, 10, 12, 14 strictly resolve to Kim Trá»�ng.
        Úep01_scene06r   zScene 06 has no shots!)Úep01_scene06_shot03Úep01_scene06_shot04Úep01_scene06_shot06Úep01_scene06_shot10Úep01_scene06_shot12Úep01_scene06_shot14Nr   r   r   r   r   r   ©r   r   Útarget_shotsr   r   r   r    s          r!   Útest_scene06_explicit_shotsz<TestDeepEmpiricalLiveSceneProbes.test_scene06_explicit_shots/   s  € õ •RÔ+¨NÑ;Ô;Ñ<Ô<ˆÝ�5‰zŒz˜AŠ~ˆ~ˆ~Ð7‰~Œ~ˆ~ð
ð 
ð 
ˆð  ð 	lð 	lˆCØ˜#”JˆEÝÔ6°s¸EÑBÔB‰NˆH�dØÐ'Ð'¨CÐ)BÐ)BÐ)BÑ'Ô'Ð'Ø¥$ x¡.¤.Ô"5×";Ò";Ñ"=Ô"=Ð=Ð=Ð=À#Ð?rÐ?rÐhpÐ?rÐ?rÑ=Ô=Ð=Ø¥d¨8¡n¤nÔ&9×&?Ò&?Ñ&AÔ&AÐAÐAÐAÀcÐCkÐCkÐaiÐCkÐCkÑAÔAÐAÐAð	lð 	lr#   c                 óÎ  — t          t          j        d¦  «        ¦  «        }t          |¦  «        dk    s
J d¦   «         ‚g d¢}|D ]Ÿ}||         }t          j        ||¦  «        \  }}|€J |› d�¦   «         ‚dt          |¦  «        j                             ¦   «         v sJ |› d|› �¦   «         ‚d	t          |¦  «        j                             ¦   «         vsJ |› d
|› �¦   «         ‚Œ dS )uW   
        Confirm ep01_scene05_shot13, 16, 24 strictly resolve to VÆ°Æ¡ng Quan.
        Úep01_scene05r   zScene 05 has no shots!)Úep01_scene05_shot13Úep01_scene05_shot16Úep01_scene05_shot24Nr   Ú
vuong_quanu"    did not resolve to VÆ°Æ¡ng Quan: r   r   r   r,   s          r!   Útest_scene05_explicit_shotsz<TestDeepEmpiricalLiveSceneProbes.test_scene05_explicit_shotsA   s  € õ •RÔ+¨NÑ;Ô;Ñ<Ô<ˆÝ�5‰zŒz˜AŠ~ˆ~ˆ~Ð7‰~Œ~ˆ~à\Ð\Ð\ˆØð 	lð 	lˆCØ˜#”JˆEÝÔ6°s¸EÑBÔB‰NˆH�dØÐ'Ð'¨CÐ)BÐ)BÐ)BÑ'Ô'Ð'Ø¥4¨¡>¤>Ô#6×#<Ò#<Ñ#>Ô#>Ð>Ð>Ð>À3Ð@tÐ@tÐjrÐ@tÐ@tÑ>Ô>Ð>Ø¥d¨8¡n¤nÔ&9×&?Ò&?Ñ&AÔ&AÐAÐAÐAÀcÐCkÐCkÐaiÐCkÐCkÑAÔAÐAÐAð	lð 	lr#   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   r.   r5   © r#   r!   r   r      sR   € € € € € ØTÐTðlð lð lð0lð lð lð$lð lð lð lð lr#   r   c                   ó°   — e Zd ZdZej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Z	d	S )
Ú TestAdversarialMetadataInjectionzRStress testing: Inject corrupted character_asset_ref opposite to character anchor.z5anchor,corrupted_ref,expected_target,forbidden_target))r   úH04_Assets/characters/01_Main_Protagonists/thuy_kieu_maiden_16yo_720p.pngr   r   )Úthuy_kieu_maidenzA04_Assets/characters/01_Main_Protagonists/kim_trong_18yo_720p.pngr   r   )r4   r=   r4   r   )Ú	vuong_ongr=   r?   r   )Úthuy_vanr=   r@   r   c                 ó<  — d}||d|› d�dœ}t          j        ||¦  «        \  }}|€J ‚|t          |¦  «        j                             ¦   «         vsJ d|› d|› d|› �¦   «         ‚|t          |¦  «        j                             ¦   «         v sJ d|› d	|› �¦   «         ‚d S )
NÚep01_scene99_shot01zTest z scene©Úcharacter_anchorÚcharacter_asset_refÚscene_titlezAdversarial leak! Anchor=z with corrupted ref=z
 returned z%Bilateral safeguard failed! Expected z, got ©r   r   r   r   r   )	r   ÚanchorÚcorrupted_refÚexpected_targetÚforbidden_targetÚshot_idÚ	shot_datar   r    s	            r!   Ú%test_corrupted_ref_opposite_to_anchorzFTestAdversarialMetadataInjection.test_corrupted_ref_opposite_to_anchorT   sá   € ð (ˆà &Ø#0Ø1 6Ð1Ð1Ð1ð
ð 
ˆ	õ
 Ô2°7¸IÑFÔF‰ˆ�$ØÐ#Ð#Ð#Ø¥t¨H¡~¤~Ô':×'@Ò'@Ñ'BÔ'BÐBÐBÐBØg¨ÐgÐgÀMÐgÐgÐ]eÐgÐgñ CÔBÐBð ¥$ x¡.¤.Ô"5×";Ò";Ñ"=Ô"=Ð=Ð=Ð=ØU°OÐUÐUÈ8ÐUÐUñ >Ô=Ð=Ð=Ð=r#   z"anchor,garbage_ref,expected_target))r   z'non_existent_directory/garbage_file.pngr   )r>   zinvalid_path/dummy.jpgr   )r4   zfoo/bar/baz.pngr4   )r?   znot_real.pngr?   c                 ó    — d}||dœ}t          j        ||¦  «        \  }}|€J ‚|t          |¦  «        j                             ¦   «         v sJ ‚d S )NrB   )rD   rE   rG   )r   rH   Úgarbage_refrJ   rL   rM   r   r    s           r!   Ú<test_nonexistent_corrupted_ref_falls_back_to_anchor_portraitz]TestAdversarialMetadataInjection.test_nonexistent_corrupted_ref_falls_back_to_anchor_portraitk   sk   € ð (ˆà &Ø#.ð
ð 
ˆ	õ Ô2°7¸IÑFÔF‰ˆ�$ØÐ#Ð#Ð#Ø¥$ x¡.¤.Ô"5×";Ò";Ñ"=Ô"=Ð=Ð=Ð=Ð=Ð=Ð=r#   c                 ó¶  — t          j        di ¦  «        \  }}|€J ‚dt          |¦  «        j                             ¦   «         v sJ ‚t          j        dd¦  «        \  }}|€J ‚dt          |¦  «        j                             ¦   «         v sJ ‚ddddœ}t          j        d|¦  «        \  }}|€J ‚dt          |¦  «        j                             ¦   «         v sJ ‚dS )z>Testing with empty dict, None, and shot_data with None values.r   Nr   u   Kim Trá»�ng há»™i ngá»™rC   rG   )r   r   r    Ú	malformeds       r!   Ú(test_empty_and_none_shot_data_robustnesszITestAdversarialMetadataInjection.test_empty_and_none_shot_data_robustness{   sù   € õ Ô2Ð3HÈ"ÑMÔM‰ˆ�$ØÐ#Ð#Ð#Ø�d 8™nœnÔ1×7Ò7Ñ9Ô9Ð9Ð9Ð9Ð9õ Ô2Ð3HÈ$ÑOÔO‰ˆ�$ØÐ#Ð#Ð#Ø�d 8™nœnÔ1×7Ò7Ñ9Ô9Ð9Ð9Ð9Ð9ð *.ÀdÐ[tÐuÐuˆ	ÝÔ2Ð3HÈ)ÑTÔT‰ˆ�$ØÐ#Ð#Ð#Ø�d 8™nœnÔ1×7Ò7Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9r#   N)
r6   r7   r8   r9   ÚpytestÚmarkÚparametrizerN   rQ   rT   r:   r#   r!   r<   r<   Q   s±   € € € € € Ø\Ð\à„[×ÒÐTð Wð Wð Wñ ô ð
ð 
ñô ð
ð  „[×ÒÐAð Dð Dð Dñ ô ð>ð >ñô ð>ð:ð :ð :ð :ð :r#   r<   )r9   ÚsysÚpathlibr   rU   Ú__file__ÚresolveÚparentÚPROJECT_ROOTÚpathÚinsertÚstrÚproduction_orchestratorr   r   r<   r:   r#   r!   ú<module>rb      sé   ððð ð €
€
€
Ø Ð Ð Ð Ð Ð Ø €€€àˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.Ô5€Ø „‡‚��3�3�|Ð&>Ñ>Ñ?Ô?Ñ @Ô @Ð @à $Ð $Ð $Ð $ð:lð :lð :lð :lð :lñ :lô :lð :lðz::ð ::ð ::ð ::ð ::ñ ::ô ::ð ::ð ::ð ::r#   