§
    ò†¬jÎ7  ã                  ó"  — d Z ddlm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mZmZ ddlZddlmZmZmZmZ ej        d„ ¦   «         Z G d„ d¦  «        Z G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )us  AutoPOE2 - Unit & Integration Tests cho Zero-Day Invariant Gate & Recovery Plan.
===================================================================================
[MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME] (Rule 5 Compliance)

Domain: QA & Governance Sentinel (SÆ° Ä‘oÃ n 4)
Kiá»ƒm thá»­ toÃ n diá»‡n 4 chá»‘t cháº·n kiá»ƒm toÃ¡n vÃ  quy trÃ¬nh phá»¥c há»“i sau báº£o trÃ¬:
- Gate 1: Client Process Health & Log Integrity (Client.txt load clean, 0 crash/fatal).
- Gate 2: Memory Drift Audit (INV-MEM-DYNAMIC-XYZ, PlayerFinder quÃ©t 16MB tÃ¬m XYZ sá»‘ng, tá»« chá»‘i static offset drift).
- Gate 3: UI Perception Invariants (INV-MAPDEVICE-VERIFY-UI, TRAVERSE OCR, Stash UI verification).
- Gate 4: Hot Path DOD Reflexes (INV-ZERO-HEAP-HOTPATH, 1086 C++ tests PASS).
- Káº¿ hoáº¡ch phá»¥c há»“i tá»± Ä‘á»™ng khi game client má»Ÿ láº¡i (INV-CLIENT-CRASH-RECOVER).
é    )ÚannotationsN)Ú	MagicMockÚpatch)ÚGateCheckResultÚ
GateStatusÚZeroDayAuditReportÚZeroDayInvariantGatec               #  ó˜  K  — t          j        d¬¦  «        } t          j                             | d¦  «        }t          j                             | d¦  «        }t          |dd¬¦  «        5 }|                     d¦  «         |                     d	¦  «         d
d
d
¦  «         n# 1 swxY w Y   | ||dœV — t          j        | d¬¦  «         d
S )u@   Táº¡o mÃ´i trÆ°á»�ng kiá»ƒm thá»­ cÃ´ láº­p cho Cá»•ng Zero-Day.Úzero_day_gate_test_)Úprefixz
Client.txtÚ	incidentsÚwúutf-8©ÚencodingzF2026/09/18 05:00:00 12345678 [INFO Client 22632] Connected to server.
zR2026/09/18 05:00:05 12345679 [INFO Client 22632] Entering area Shoreline Hideout.
N)Útemp_dirÚlog_fileÚincidents_dirT)Úignore_errors)	ÚtempfileÚmkdtempÚosÚpathÚjoinÚopenÚwriteÚshutilÚrmtree)r   r   r   Úfs       ú:C:\Projects\AutoPOE2\tests\test_zero_day_invariant_gate.pyÚtemp_gate_envr!       s$  è è € õ ÔÐ'<Ð=Ñ=Ô=€HÝŒw�|Š|˜H lÑ3Ô3€HÝ”G—L’L ¨;Ñ7Ô7€Må	ˆh˜ gÐ	.Ñ	.Ô	.ð g°!Ø	�ŠÐYÑZÔZÐZØ	�ŠÐeÑfÔfÐfðgð gð gñ gô gð gð gð gð gð gð gøøøð gð gð gð gð
 ØØ&ðð ð ð ð õ „M�(¨$Ð/Ñ/Ô/Ð/Ð/Ð/s   Á*+B!Â!B%Â(B%c                  ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestZeroDayGate1ClientHealthuI   Kiá»ƒm thá»­ Chá»‘t cháº·n Gate 1: Client Process Health & Log Integrity.c                óæ  — t          |d         |d         ¬¦  «        }t          dd¬¦  «        5  |                     d¬¦  «        }|j        }t          j        }||k    }|sòt          j        d	|fd
||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}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}}	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        |	¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}	ddd¦  «         dS # 1 swxY w Y   dS )u«   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Client process sá»‘ng vÃ  log Client.txt hoÃ n toÃ n sáº¡ch 0 fatal crash -> Gate 1 PASSED.
        r   r   ©Úclient_log_pathr   úGsrc.assistant_tool.client_launcher.Poe2ClientLauncher.is_client_runningT©Úreturn_valueéhX  ©Ú
client_pid©ú==©zJ%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.PASSED
}Úresr   ©Úpy0Úpy2Úpy4Úpy6úassert %(py8)sÚpy8NzGATE-1)z/%(py2)s
{%(py2)s = %(py0)s.gate_id
} == %(py5)s©r2   r3   Úpy5úassert %(py7)sÚpy7z0 fatal crash©Úin©z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.message
}©Úpy1Úpy3r9   )r	   r   Úcheck_gate1_client_healthÚstatusr   ÚPASSEDÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚgate_idÚmessage)Úselfr!   Úgater0   Ú@py_assert1Ú@py_assert5Ú@py_assert3Ú@py_format7Ú@py_format9Ú@py_assert4Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert2s                 r    Útest_gate1_passes_on_clean_logz;TestZeroDayGate1ClientHealth.test_gate1_passes_on_clean_log7   s�  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ
 Ð\ÐkoÐpÑpÔpð 	2ð 	2Ø×0Ò0¸EÐ0ÑBÔBˆCØ”:Ð2¥Ô!2Ð2�:Ð!2Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2�:Ð!2Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2�3Ñ2Ô2Ð2Õ2Ô2�3Ñ2Ô2Ð2Ð2Õ2Ô2�:Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¥Ñ2Ô2Ð2Õ2Ô2¥Ñ2Ô2Ð2Ð2Õ2Ô2Ð!2Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø”;Ð* (Ð*�; (Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*�; (Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�3Ñ*Ô*Ð*Õ*Ô*�3Ñ*Ô*Ð*Ð*Õ*Ô*�;Ñ*Ô*Õ*Ô* (Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø"Ð1 c¤kÐ1�? kÐ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1�? kÐ1Ñ1Ô1Õ1Ô1�?Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1 cÑ1Ô1Ð1Õ1Ô1 cÑ1Ô1Ð1Ð1Õ1Ô1 kÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ð		2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s   ¯J*K&Ë&K*Ë-K*c                ó   — t          |d         |d         ¬¦  «        }t          |d         dd¬¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   t          d	d
¬¦  «        5  |                     d¬¦  «        }|j        }t          j        }||k    }|sòt          j	        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d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        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|j        }|j        }d}g } |||¦  «        }t'          |¦  «        }d}||k    }|�sQt          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        |¦  «        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}}ddd¦  «         dS # 1 swxY w Y   dS )#u±   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Khi Client.txt chá»©a ngoáº¡i lá»‡ nghiÃªm trá»�ng (Fatal crash, DX12 removed) -> Gate 1 BLOCKED.
        r   r   r%   Úar   r   zS2026/09/18 05:01:00 12345680 [CRIT Client 22632] Fatal Error: DX12 device removed!
Nr'   Tr(   r*   r+   r-   ©zK%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.BLOCKED
}r0   r   r1   r6   r7   u   PhÃ¡t hiá»‡nr<   r>   r?   r:   r;   Úfatal_matchesr   ©ú>©z‘%(py13)s
{%(py13)s = %(py0)s(%(py11)s
{%(py11)s = %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.details
}.get
}(%(py7)s, %(py9)s)
})
} > %(py16)sÚlen©	r2   r@   rA   r9   r;   Úpy9Úpy11Úpy13Úpy16úassert %(py18)sÚpy18)r	   r   r   r   rB   rC   r   ÚBLOCKEDrE   rF   rG   rH   rI   rJ   rK   rL   rN   ÚdetailsÚgetrc   )rO   r!   rP   r   r0   rQ   rR   rS   rT   rU   rY   rV   rZ   rW   rX   Ú@py_assert6Ú@py_assert8Ú@py_assert10Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_format17Ú@py_format19s                          r    Ú*test_gate1_blocks_on_fatal_crash_signaturezGTestZeroDayGate1ClientHealth.test_gate1_blocks_on_fatal_crash_signatureF   s  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ �- 
Ô+¨S¸7ÐCÑCÔCð 	lÀqØ�GŠGÐjÑkÔkÐkð	lð 	lð 	lñ 	lô 	lð 	lð 	lð 	lð 	lð 	lð 	løøøð 	lð 	lð 	lð 	lõ Ð\ÐkoÐpÑpÔpð 	Að 	AØ×0Ò0¸EÐ0ÑBÔBˆCØ”:Ð3¥Ô!3Ð3�:Ð!3Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3�:Ð!3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�3Ñ3Ô3Ð3Õ3Ô3�3Ñ3Ô3Ð3Ð3Õ3Ô3�:Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥Ñ3Ô3Ð3Õ3Ô3¥Ñ3Ô3Ð3Ð3Õ3Ô3Ð!3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø!Ð0 S¤[Ð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 SÑ0Ô0Ð0Õ0Ô0 SÑ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Ð0Ð0Ð0Ð0Ð0Ð0Ø”{Ð@�{”Ð@ Ð@¸Ð@�� ¸Ñ;Ô;Ð@•3Ð;Ñ<Ô<Ð@¸qÐ@Ð<¸qÒ@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð<¸qÐ@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@•3Ñ@Ô@Ð@Õ@Ô@•3Ñ@Ô@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�sÑ@Ô@Ð@Õ@Ô@�sÑ@Ô@Ð@Ð@Õ@Ô@�{Ñ@Ô@Õ@Ô@�Ñ@Ô@Õ@Ô@ Ñ@Ô@Õ@Ô@¸Ñ@Ô@Õ@Ô@Ð;Ñ@Ô@Õ@Ô@Ð<Ñ@Ô@Õ@Ô@¸qÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð		Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	As$   ¶AÁAÁAÁ4NPÐPÐ
PN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r[   rv   © ó    r    r#   r#   4   s=   € € € € € ØSÐSð2ð 2ð 2ðAð Að Að Að Ar|   r#   c                  ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚTestZeroDayGate2MemoryDriftuL   Kiá»ƒm thá»­ Chá»‘t cháº·n Gate 2: Memory Drift Audit (INV-MEM-DYNAMIC-XYZ).c                óþ  — t          ¦   «         }|                     ddddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        d
t          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nd
t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}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}}dS )u¢   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Tá»�a Ä‘á»™ XYZ há»£p lá»‡ Ä‘Æ°á»£c quÃ©t tá»« PlayerFinder 16MB -> Gate 2 PASSED.
        ç     Ðb@ç33333ƒq@ç        FT©Úpos_xÚpos_yÚpos_zÚstatic_offset_detectedÚplayer_finder_16mb_activer-   r/   r0   r   r1   r6   r7   NzINV-MEM-DYNAMIC-XYZ©z6%(py2)s
{%(py2)s = %(py0)s.invariant_code
} == %(py5)sr8   r:   r;   )r	   Úcheck_gate2_memory_driftrC   r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   Úinvariant_code©rO   rP   r0   rQ   rR   rS   rT   rU   rV   rW   rX   s              r    Ú&test_gate2_passes_on_valid_dynamic_xyzzBTestZeroDayGate2MemoryDrift.test_gate2_passes_on_valid_dynamic_xyz]   sB  € õ $Ñ%Ô%ˆØ×+Ò+ØØØØ#(Ø&*ð ,ñ 
ô 
ˆð ŒzÐ.�ZÔ.Ð.ˆzÐ.Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆzÐ.Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆsÑ.Ô.Ð.Õ.Ô.ˆsÑ.Ô.Ð.Ð.Õ.Ô.ˆzÑ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�ZÑ.Ô.Ð.Õ.Ô.�ZÑ.Ô.Ð.Ð.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ!Ð:Ð%:Ð:Ð!Ð%:Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð!Ð%:Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆsÑ:Ô:Ð:Õ:Ô:ˆsÑ:Ô:Ð:Ð:Õ:Ô:Ð!Ñ:Ô:Õ:Ô:Ð%:Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r|   c                óú  — t          ¦   «         }|                     ddddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        d	t          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nd	t          j
        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d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
        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	dS )u°   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Khi phÃ¡t hiá»‡n cá»‘ tÃ¬nh dÃ¹ng static offset cÅ© (0x290/0x540) bá»‹ lá»‡ch -> Gate 2 BLOCKED.
        r€   r�   r‚   Trƒ   r-   r^   r0   r   r1   r6   r7   NzStatic Offset Driftr<   r>   r?   r:   r;   )r	   rŠ   rC   r   rk   rE   rF   rG   rH   rI   rJ   rK   rL   rN   ©rO   rP   r0   rQ   rR   rS   rT   rU   rY   rV   rZ   rW   rX   s                r    Ú(test_gate2_blocks_on_static_offset_driftzDTestZeroDayGate2MemoryDrift.test_gate2_blocks_on_static_offset_driftl   s=  € õ $Ñ%Ô%ˆØ×+Ò+ØØØØ#'Ø&*ð ,ñ 
ô 
ˆð ŒzÐ/�ZÔ/Ð/ˆzÐ/Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆzÐ/Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Ð/Õ/Ô/ˆzÑ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�ZÑ/Ô/Ð/Õ/Ô/�ZÑ/Ô/Ð/Ð/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø$Ð3¨¬Ð3Ð$¨Ð3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð$¨Ð3Ñ3Ô3Õ3Ô3Ð$Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨Ñ3Ô3Ð3Õ3Ô3¨Ñ3Ô3Ð3Ð3Õ3Ô3¨Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3r|   c                óÐ  — t          ¦   «         }|                     ddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|                     dddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}dS )u¹   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Báº¯t lá»—i tá»�a Ä‘á»™ vÆ°á»£t biÃªn hoáº·c káº¹t gá»‘c (0,0,0) khi Ä‘ang di chuyá»ƒn -> Gate 2 BLOCKED.
        g    ðiø@ç      Y@r‚   )r„   r…   r†   r-   r^   Úres_oobr   r1   r6   r7   NT)r„   r…   r†   Ú	is_movingÚ
res_frozen)r	   rŠ   rC   r   rk   rE   rF   rG   rH   rI   rJ   rK   rL   )	rO   rP   r“   rQ   rR   rS   rT   rU   r•   s	            r    Ú-test_gate2_blocks_on_out_of_bounds_and_frozenzITestZeroDayGate2MemoryDrift.test_gate2_blocks_on_out_of_bounds_and_frozen{   s—  € õ $Ñ%Ô%ˆð ×/Ò/°gÀUÐRUÐ/ÑVÔVˆØŒ~Ð3¥Ô!3Ð3ˆ~Ð!3Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3ˆ~Ð!3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆwÑ3Ô3Ð3Õ3Ô3ˆwÑ3Ô3Ð3Ð3Õ3Ô3ˆ~Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥Ñ3Ô3Ð3Õ3Ô3¥Ñ3Ô3Ð3Ð3Õ3Ô3Ð!3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð ×2Ò2Ø˜S¨°tð 3ñ 
ô 
ˆ
ð Ô Ð6¥JÔ$6Ð6Ð Ð$6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð Ð$6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆzÑ6Ô6Ð6Õ6Ô6ˆzÑ6Ô6Ð6Ð6Õ6Ô6Ð Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¥JÑ6Ô6Ð6Õ6Ô6¥JÑ6Ô6Ð6Ð6Õ6Ô6Ð$6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6r|   N)rw   rx   ry   rz   r�   r�   r–   r{   r|   r    r~   r~   Z   sG   € € € € € ØVÐVð;ð ;ð ;ð4ð 4ð 4ð7ð 7ð 7ð 7ð 7r|   r~   c                  ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestZeroDayGate3UIPerceptionuV   Kiá»ƒm thá»­ Chá»‘t cháº·n Gate 3: UI Perception Invariants (INV-MAPDEVICE-VERIFY-UI).c                óú  — t          ¦   «         }|                     ddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}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}}d
S )u¥   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Giao diá»‡n Map Device cÃ³ tÃ­n hiá»‡u TRAVERSE OCR / khay Waystone -> Gate 3 PASSED.
        T)Úhas_traverse_buttonÚhas_waystone_slotÚhas_verified_ui_signalr-   r/   r0   r   r1   r6   r7   NzINV-MAPDEVICE-VERIFY-UIr‰   r8   r:   r;   )r	   Úcheck_gate3_ui_perceptionrC   r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r‹   rŒ   s              r    Ú(test_gate3_passes_on_verified_optical_uizETestZeroDayGate3UIPerception.test_gate3_passes_on_verified_optical_ui�   s<  € õ $Ñ%Ô%ˆØ×,Ò,Ø $Ø"Ø#'ð -ñ 
ô 
ˆð
 ŒzÐ.�ZÔ.Ð.ˆzÐ.Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆzÐ.Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆsÑ.Ô.Ð.Õ.Ô.ˆsÑ.Ô.Ð.Ð.Õ.Ô.ˆzÑ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�ZÑ.Ô.Ð.Õ.Ô.�ZÑ.Ô.Ð.Ð.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ!Ð>Ð%>Ð>Ð!Ð%>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð!Ð%>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆsÑ>Ô>Ð>Õ>Ô>ˆsÑ>Ô>Ð>Ð>Õ>Ô>Ð!Ñ>Ô>Õ>Ô>Ð%>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r|   c                óø  — t          ¦   «         }|                     dddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
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
        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}
}	d
S )u¨   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        KhÃ´ng cÃ³ tÃ­n hiá»‡u quang há»�c UI nÃ o -> Gate 3 BLOCKED (Fail-closed kÃ­ch hoáº¡t).
        F)rš   r›   rœ   Ústash_openedr-   r^   r0   r   r1   r6   r7   NzFail-closedr<   r>   r?   r:   r;   )r	   r�   rC   r   rk   rE   rF   rG   rH   rI   rJ   rK   rL   rN   r�   s                r    Ú-test_gate3_blocks_fail_closed_when_ui_missingzJTestZeroDayGate3UIPerception.test_gate3_blocks_fail_closed_when_ui_missingœ   s7  € õ $Ñ%Ô%ˆØ×,Ò,Ø %Ø#Ø#(Øð	 -ñ 
ô 
ˆð ŒzÐ/�ZÔ/Ð/ˆzÐ/Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆzÐ/Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Ð/Õ/Ô/ˆzÑ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�ZÑ/Ô/Ð/Õ/Ô/�ZÑ/Ô/Ð/Ð/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ+ ¤Ð+ˆ} Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ} Ð+Ñ+Ô+Õ+Ô+ˆ}Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ Ñ+Ô+Ð+Õ+Ô+ Ñ+Ô+Ð+Ð+Õ+Ô+ Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r|   N)rw   rx   ry   rz   rž   r¡   r{   r|   r    r˜   r˜   Œ   s8   € € € € € Ø`Ð`ð?ð ?ð ?ð,ð ,ð ,ð ,ð ,r|   r˜   c                  ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestZeroDayGate4HotPathDODub   Kiá»ƒm thá»­ Chá»‘t cháº·n Gate 4: Hot Path DOD Reflexes (INV-ZERO-HEAP-HOTPATH & 1086 C++ tests).c                óö  — t          ¦   «         }|                     ddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d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
        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	dS )už   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Ä�á»§ 1086/1086 C++ tests PASS vÃ  tuÃ¢n thá»§ Zero Heap DOD -> Gate 4 PASSED.
        i>  Tg     €2@)Úcpp_passed_countÚzero_heap_compliantÚactuator_latency_usr-   r/   r0   r   r1   r6   r7   Nz1086/1086 C++ tests PASSr<   r>   r?   r:   r;   )r	   Úcheck_gate4_hot_path_dodrC   r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rN   r�   s                r    Ú3test_gate4_passes_with_1086_cpp_tests_and_zero_heapzNTestZeroDayGate4HotPathDOD.test_gate4_passes_with_1086_cpp_tests_and_zero_heap®   s7  € õ $Ñ%Ô%ˆØ×+Ò+Ø!Ø $Ø $ð ,ñ 
ô 
ˆð
 ŒzÐ.�ZÔ.Ð.ˆzÐ.Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆzÐ.Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆsÑ.Ô.Ð.Õ.Ô.ˆsÑ.Ô.Ð.Ð.Õ.Ô.ˆzÑ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�ZÑ.Ô.Ð.Õ.Ô.�ZÑ.Ô.Ð.Ð.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø)Ð8¨S¬[Ð8Ð)¨[Ð8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð)¨[Ð8Ñ8Ô8Õ8Ô8Ð)Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8¨SÑ8Ô8Ð8Õ8Ô8¨SÑ8Ô8Ð8Ð8Õ8Ô8¨[Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r|   c                óò  — t          ¦   «         }|                     d¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
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
        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}x}
}	d
S )u’   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Náº¿u C++ tests khÃ´ng Ä‘áº¡t Ä‘á»§ 1086 checks -> Gate 4 BLOCKED.
        i8  )r¥   r-   r^   r0   r   r1   r6   r7   Nu   chá»‰ Ä‘áº¡t 1080/1086r<   r>   r?   r:   r;   )r	   r¨   rC   r   rk   rE   rF   rG   rH   rI   rJ   rK   rL   rN   r�   s                r    Ú(test_gate4_blocks_if_cpp_tests_regressedzCTestZeroDayGate4HotPathDOD.test_gate4_blocks_if_cpp_tests_regressed»   s(  € õ $Ñ%Ô%ˆØ×+Ò+¸TÐ+ÑBÔBˆØŒzÐ/�ZÔ/Ð/ˆzÐ/Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆzÐ/Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Ð/Õ/Ô/ˆzÑ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�ZÑ/Ô/Ð/Õ/Ô/�ZÑ/Ô/Ð/Ð/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø'Ð6¨3¬;Ð6Ð'¨;Ð6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð'¨;Ð6Ñ6Ô6Õ6Ô6Ð'Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¨3Ñ6Ô6Ð6Õ6Ô6¨3Ñ6Ô6Ð6Ð6Õ6Ô6¨;Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6r|   N)rw   rx   ry   rz   r©   r«   r{   r|   r    r£   r£   «   s8   € € € € € ØlÐlð9ð 9ð 9ð7ð 7ð 7ð 7ð 7r|   r£   c                  ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	Ú#TestZeroDayFullAuditAndRecoveryPlanuW   Kiá»ƒm thá»­ Tá»•ng há»£p Cá»•ng Zero-Day vÃ  Káº¿ hoáº¡ch Phá»¥c há»“i Sau Báº£o TrÃ¬.c                óB  — t          |d         |d         ¬¦  «        }t          dd¬¦  «        5  |                     d¬¦  «        }|j        }d}||u }|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}}|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}}|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}}|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}}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	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	x}
}ddd¦  «         dS # 1 swxY w Y   dS )uÃ   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        XÃ¡c nháº­n toÃ n bá»™ 4 Gates Ä‘á»�u PASSED -> Ä�á»§ Ä‘iá»�u kiá»‡n tá»± hÃ nh (is_cleared_for_autonomous = True).
        r   r   r%   r'   Tr(   r*   r+   ©Úis©zA%(py2)s
{%(py2)s = %(py0)s.is_cleared_for_autonomous
} is %(py5)sÚreportr8   r:   r;   Né   r-   )z;%(py2)s
{%(py2)s = %(py0)s.total_gates_checked
} == %(py5)s)z4%(py2)s
{%(py2)s = %(py0)s.gates_passed
} == %(py5)sr   )z5%(py2)s
{%(py2)s = %(py0)s.gates_blocked
} == %(py5)srD   r<   ©z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.summary
}r?   )r	   r   Úexecute_full_zero_day_auditÚis_cleared_for_autonomousrE   rF   rG   rH   rI   rJ   rK   rL   Útotal_gates_checkedÚgates_passedÚgates_blockedÚsummary©rO   r!   rP   r²   rQ   rV   rS   rW   rX   rY   rZ   s              r    Ú*test_full_zero_day_audit_all_gates_clearedzNTestZeroDayFullAuditAndRecoveryPlan.test_full_zero_day_audit_all_gates_clearedÈ   s  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ
 Ð\ÐkoÐpÑpÔpð 	.ð 	.Ø×5Ò5ÀÐ5ÑGÔGˆFØÔ3Ð;°tÐ;Ð3°tÐ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð3°tÐ;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;�6Ñ;Ô;Ð;Õ;Ô;�6Ñ;Ô;Ð;Ð;Õ;Ô;Ð3Ñ;Ô;Õ;Ô;°tÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÔ-Ð2°Ð2Ð-°Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð-°Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2�6Ñ2Ô2Ð2Õ2Ô2�6Ñ2Ô2Ð2Ð2Õ2Ô2Ð-Ñ2Ô2Õ2Ô2°Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�6Ñ+Ô+Ð+Õ+Ô+�6Ñ+Ô+Ð+Ð+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�6Ñ,Ô,Ð,Õ,Ô,�6Ñ,Ô,Ð,Ð,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÐ-˜vœ~Ð-�8˜~Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-�8˜~Ð-Ñ-Ô-Õ-Ô-�8Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-˜vÑ-Ô-Ð-Õ-Ô-˜vÑ-Ô-Ð-Ð-Õ-Ô-˜~Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   ¯OPÐPÐPc                ó@  — t          |d         |d         ¬¦  «        }t          dd¬¦  «        5  |                     dd¬¦  «        }|j        }d	}||u }|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}}|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}}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	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	x}
}ddd¦  «         dS # 1 swxY w Y   dS )u    [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Chá»‰ cáº§n 1 Gate tháº¥t báº¡i -> ToÃ n bá»™ Cá»•ng bá»‹ BLOCKED (Fail-closed).
        r   r   r%   r'   Tr(   r*   ©r,   r‡   Fr¯   r±   r²   r8   r:   r;   Né   )ú>=)z5%(py2)s
{%(py2)s = %(py0)s.gates_blocked
} >= %(py5)srk   r<   r´   r?   )r	   r   rµ   r¶   rE   rF   rG   rH   rI   rJ   rK   rL   r¹   rº   r»   s              r    Ú3test_full_zero_day_audit_blocks_when_any_gate_failszWTestZeroDayFullAuditAndRecoveryPlan.test_full_zero_day_audit_blocks_when_any_gate_failsÙ   sd  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ
 Ð\ÐkoÐpÑpÔpð 	/ð 	/à×5Ò5Ø Ø'+ð 6ñ ô ˆFð Ô3Ð<°uÐ<Ð3°uÐ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð3°uÐ<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<�6Ñ<Ô<Ð<Õ<Ô<�6Ñ<Ô<Ð<Ð<Õ<Ô<Ð3Ñ<Ô<Õ<Ô<°uÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�6Ñ,Ô,Ð,Õ,Ô,�6Ñ,Ô,Ð,Ð,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÐ. ¤Ð.�9 Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.�9 Ð.Ñ.Ô.Õ.Ô.�9Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. Ñ.Ô.Ð.Õ.Ô. Ñ.Ô.Ð.Ð.Õ.Ô. Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   ¯IJÊJÊJc                ó  — t          |d         |d         ¬¦  «        }t          d¬¦  «        }t          d¬¦  «        }|                     ||d¬¦  «        }|d         }d	}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|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t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}g d¢}|d         }||k    }|s—t          j        d
|fd||f¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}t          j        }|j        }|d         } ||¦  «        }|s»ddt          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d œz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}|d!         }|j        }d}||u }|st          j        d"|fd#||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d$œz  }
d%d&|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}dS )'uÄ   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Kiá»ƒm chá»©ng quy trÃ¬nh 5 bÆ°á»›c phá»¥c há»“i tá»± Ä‘á»™ng khi game client má»Ÿ láº¡i (INV-CLIENT-CRASH-RECOVER).
        r   r   r%   Tr(   zShoreline Hideout)Úlauncher_funcÚzone_verifier_funcÚis_simulatedrC   ÚSUCCESSr-   )z%(py1)s == %(py4)s)r@   r4   zassert %(py6)sr5   NÚsteps_completedé   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)src   )r2   r3   r4   r;   zassert %(py9)sre   )ÚSTEP1_WATCHDOG_DETECTÚSTEP2_INCIDENT_DOSSIER_PACKAGEDÚSTEP3_CLIENT_LAUNCHEDÚSTEP4_HIDEOUT_SAFE_VERIFIEDÚSTEP5_ZERO_DAY_GATES_CLEARED)z%(py1)s == %(py3)sÚexpected_steps)r@   rA   zassert %(py5)sr9   Úincident_dirzaassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.isdir
}(%(py6)s)
}r   )r2   r3   r4   r5   r7   Úaudit_reportr¯   )zA%(py3)s
{%(py3)s = %(py1)s.is_cleared_for_autonomous
} is %(py6)s)r@   rA   r5   r6   r7   )r	   r   Ú&execute_post_maintenance_recovery_planrE   rF   rJ   rK   rL   rc   rG   rH   rI   r   r   Úisdirr¶   )rO   r!   rP   Úmock_launcherÚ	mock_zoneÚplanrY   rS   rZ   Ú@py_format5rT   rQ   rn   rR   rX   Ú@py_format10rÎ   Ú@py_format4rW   Ú@py_assert7rU   rV   s                         r    Ú5test_post_maintenance_recovery_plan_5_steps_executionzYTestZeroDayFullAuditAndRecoveryPlan.test_post_maintenance_recovery_plan_5_steps_executionì   s¬  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ
 "¨tÐ4Ñ4Ô4ˆÝÐ+>Ð?Ñ?Ô?ˆ	à×:Ò:Ø'Ø(Øð ;ñ 
ô 
ˆð �HŒ~Ð* Ð*ˆ~ Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ~ Ð*Ñ*Ô*Õ*Ô*ˆ~Ñ*Ô*Õ*Ô* Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ)Ô*Ð0�sÐ*Ñ+Ô+Ð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�sÑ0Ô0Ð0Õ0Ô0�sÑ0Ô0Ð0Ð0Õ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Ð0Ð0ð
ð 
ð 
ˆð Ð%Ô&Ð8Ð&¨.Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð&¨.Ð8Ñ8Ô8Õ8Ô8Ð&Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8¨.Ñ8Ô8Ð8Õ8Ô8¨.Ñ8Ô8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8ÝŒwÐ2ˆwŒ}Ð2˜T .Ô1Ð2ˆ}ˆ}Ð1Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2�rÑ2Ô2Ð2Õ2Ô2�rÑ2Ô2Ð2Ð2Õ2Ô2ˆwÑ2Ô2Õ2Ô2ˆ}Ñ2Ô2Õ2Ô2Ð1Ñ2Ô2Õ2Ô2Ð2Ñ2Ô2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø�NÔ#Ð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Ñ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ÐEr|   c                ó¢  — t          |d         |d         ¬¦  «        }t          |d         dd¬¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   t          d	d
¬¦  «        5  |                     d¬¦  «        }|j        }t          j        }||k    }|sòt          j	        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }
|
j        }d}g } |||¦  «        }t%          |¦  «        }d}||k    }|�sQt          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        |¦  «        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}}ddd¦  «         dS # 1 swxY w Y   dS )u¯   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        QuÃ©t chÃ­nh xÃ¡c cÃ¡c lá»—i Fatal D3D12, PSO creation failure sau báº£n vÃ¡ -> Gate 1 BLOCKED.
        r   r   r%   r]   r   r   z_2026/09/18 07:15:00 [CRIT Client 22632] PSO creation failed: CreateGraphicsPipelineState error
Nr'   Tr(   r*   r+   r-   r^   r0   r   r1   r6   r7   r_   r   r`   rb   rc   rd   ri   rj   )r	   r   r   r   rB   rC   r   rk   rE   rF   rG   rH   rI   rJ   rK   rL   rl   rm   rc   )rO   r!   rP   r   r0   rQ   rR   rS   rT   rU   rZ   rV   rn   ro   rp   rq   rr   rs   rt   ru   s                       r    Ú$test_gate1_blocks_on_d3d12_pso_crashzHTestZeroDayFullAuditAndRecoveryPlan.test_gate1_blocks_on_d3d12_pso_crash  s*  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ �- 
Ô+¨S¸7ÐCÑCÔCð 	xÀqØ�GŠGÐvÑwÔwÐwð	xð 	xð 	xñ 	xô 	xð 	xð 	xð 	xð 	xð 	xð 	xøøøð 	xð 	xð 	xð 	xõ Ð\ÐkoÐpÑpÔpð 	Að 	AØ×0Ò0¸EÐ0ÑBÔBˆCØ”:Ð3¥Ô!3Ð3�:Ð!3Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3�:Ð!3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�3Ñ3Ô3Ð3Õ3Ô3�3Ñ3Ô3Ð3Ð3Õ3Ô3�:Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥Ñ3Ô3Ð3Õ3Ô3¥Ñ3Ô3Ð3Ð3Õ3Ô3Ð!3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø”{Ð@�{”Ð@ Ð@¸Ð@�� ¸Ñ;Ô;Ð@•3Ð;Ñ<Ô<Ð@¸qÐ@Ð<¸qÒ@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð<¸qÐ@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@•3Ñ@Ô@Ð@Õ@Ô@•3Ñ@Ô@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�sÑ@Ô@Ð@Õ@Ô@�sÑ@Ô@Ð@Ð@Õ@Ô@�{Ñ@Ô@Õ@Ô@�Ñ@Ô@Õ@Ô@ Ñ@Ô@Õ@Ô@¸Ñ@Ô@Õ@Ô@Ð;Ñ@Ô@Õ@Ô@Ð<Ñ@Ô@Õ@Ô@¸qÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	As$   ¶AÁAÁAÁ4KMÍMÍMc                óÚ  — t          ¦   «         }|                     dddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}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}}|                     dddddd¬¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}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}}dS )u¸   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Báº¯t lá»—i con trá»� nhÃ¢n váº­t 0x0 (Rule 5) vÃ  vi pháº¡m INV-CI-01 (HP khÃ¡c 1/1) -> Gate 2 BLOCKED.
        r’   r‚   Ú0x0)r„   r…   r†   Úplayer_addrr-   r^   Úres_null_ptrr   r1   r6   r7   Nz!INV-RECONNECT-NO-HARDCODED-VITALSr‰   r8   r:   r;   iÜ  T)r„   r…   r†   ÚhpÚmax_hpÚis_ci_buildÚ
res_non_ciz	INV-CI-01)r	   rŠ   rC   r   rk   rE   rF   rG   rH   rI   rJ   rK   rL   r‹   )rO   rP   rà   rQ   rR   rS   rT   rU   rV   rW   rX   rä   s               r    Ú?test_gate2_blocks_on_unattached_player_address_or_non_ci_vitalszcTestZeroDayFullAuditAndRecoveryPlan.test_gate2_blocks_on_unattached_player_address_or_non_ci_vitals  sp  € õ $Ñ%Ô%ˆð ×4Ò4Ø˜u¨C¸Uð 5ñ 
ô 
ˆð Ô"Ð8¥jÔ&8Ð8Ð"Ð&8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð"Ð&8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ|Ñ8Ô8Ð8Õ8Ô8ˆ|Ñ8Ô8Ð8Ð8Õ8Ô8Ð"Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8¥jÑ8Ô8Ð8Õ8Ô8¥jÑ8Ô8Ð8Ð8Õ8Ô8Ð&8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÔ*Ð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Õ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ð ×2Ò2Ø˜u¨C°DÀÐSWð 3ñ 
ô 
ˆ
ð Ô Ð6¥JÔ$6Ð6Ð Ð$6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð Ð$6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆzÑ6Ô6Ð6Õ6Ô6ˆzÑ6Ô6Ð6Ð6Õ6Ô6Ð Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¥JÑ6Ô6Ð6Õ6Ô6¥JÑ6Ô6Ð6Ð6Õ6Ô6Ð$6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØÔ(Ð7¨KÐ7Ð(¨KÒ7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð(¨KÐ7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆzÑ7Ô7Ð7Õ7Ô7ˆzÑ7Ô7Ð7Ð7Õ7Ô7Ð(Ñ7Ô7Õ7Ô7¨KÑ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r|   c                óp  — t          |d         |d         ¬¦  «        }t          dd¬¦  «        5  |                     d¬¦  «        }|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}}|                     dd¬¦  «        }	|	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}}|	j        }d}||u }|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}}ddd¦  «         dS # 1 swxY w Y   dS )uª   [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME]
        Kiá»ƒm toÃ¡n cÃ´ng thá»©c ARS: 100% khi 4 Gates PASS; 0% (Fail-closed) khi 1 Gate BLOCKED.
        r   r   r%   r'   Tr(   r*   r+   r’   r-   )z@%(py2)s
{%(py2)s = %(py0)s.autonomy_readiness_score
} == %(py5)sÚclean_reportr8   r:   r;   Nr¾   r‚   Úblocked_reportFr¯   r±   )r	   r   rµ   Úautonomy_readiness_scorerE   rF   rG   rH   rI   rJ   rK   rL   r¶   )
rO   r!   rP   rç   rQ   rV   rS   rW   rX   rè   s
             r    Ú,test_autonomy_readiness_score_quantificationzPTestZeroDayFullAuditAndRecoveryPlan.test_autonomy_readiness_score_quantification/  s”  € õ $Ø)¨*Ô5Ø'¨Ô8ð
ñ 
ô 
ˆõ
 Ð\ÐkoÐpÑpÔpð 	Eð 	Eà×;Ò;ÀuÐ;ÑMÔMˆLØÔ8ÐA¸EÐAÐ8¸EÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ8¸EÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔA�<ÑAÔAÐAÕAÔA�<ÑAÔAÐAÐAÕAÔAÐ8ÑAÔAÕAÔA¸EÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAð "×=Ò=Ø Ø'+ð >ñ ô ˆNð "Ô:ÐA¸cÐAÐ:¸cÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ:¸cÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔA�>ÑAÔAÐAÕAÔA�>ÑAÔAÐAÐAÕAÔAÐ:ÑAÔAÕAÔA¸cÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAØ!Ô;ÐD¸uÐDÐ;¸uÐDÐDÐDÐDÕDÔDÐ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¸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ð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Es   ¯I/J+Ê+J/Ê2J/N)
rw   rx   ry   rz   r¼   rÁ   rÚ   rÜ   rå   rê   r{   r|   r    r­   r­   Å   s   € € € € € ØaÐað.ð .ð .ð"/ð /ð /ð&Fð Fð Fð>Að Að Að 8ð 8ð 8ð(Eð Eð Eð Eð Er|   r­   )rz   Ú
__future__r   ÚbuiltinsrG   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterE   r   r   r   ÚtimeÚunittest.mockr   r   ÚpytestÚ src.assistant_tool.zero_day_gater   r   r   r	   Úfixturer!   r#   r~   r˜   r£   r­   r{   r|   r    ú<module>rõ      sË  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €	€	€	€	Ø €€€Ø €€€Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à €€€ðð ð ð ð ð ð ð ð ð ð ð ð „ð0ð 0ñ „ð0ð&#Að #Að #Að #Að #Añ #Aô #Að #AðL/7ð /7ð /7ð /7ð /7ñ /7ô /7ð /7ðd,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð>7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ð4~Eð ~Eð ~Eð ~Eð ~Eñ ~Eô ~Eð ~Eð ~Eð ~Er|   