
     jd                        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  ee      j#                         j$                  d   Zd
dZ edd      Zd	 Zy)u7  tests/lifecycle_guards/test_self_application.py — Group 8 (1건, §8.A-14).

task-2472 regression: drink-your-own-champagne 메타 테스트.
task-2473에서 task-2471+1 hardening이 raw shell bypass에 우회된 사실 박제
+ 동일 우회 차단 확인.

24. test_drink_your_own_champagne_meta_regression
    )annotationsN)Path   c                p   t         |z  }t        j                  j                  | t	        |            }g }d }||u}|}|r|j
                  }d }	||	u}
|
}|st        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  }|j                  |       |rt        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  }|j                  |       t        j                  |d      i z  }t        j                  d|       dz   d|iz  }t        t        j                   |            d x}x}x}x}x}x}
}	t        j                  j#                  |      }|t$        j&                  | <   |j
                  j)                  |       |S )N)is not)z%(py2)s is not %(py5)sspec)py2py5%(py7)spy7)z5%(py11)s
{%(py11)s = %(py9)s.loader
} is not %(py14)s)py9py11py14z%(py16)spy16r   u   spec load 실패: z
>assert %(py19)spy19)WORKTREE	importlibutilspec_from_file_locationstrloader
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprappend_format_boolop_format_assertmsgAssertionError_format_explanationmodule_from_specsysmodulesexec_module)mod_namerelpathr   @py_assert1@py_assert4@py_assert3@py_assert0@py_assert10@py_assert13@py_assert12@py_format6@py_format8@py_format15@py_format17@py_format18@py_format20mods                     C/home/jay/workspace/tests/lifecycle_guards/test_self_application.py_loadr9      sM   c>D>>11(CIFDTtT4tTT4T4 7TTTT4tTTTTTT4TTT4TTTtTTTTTTT4TTTTTTTTTTTTTTT4TTTTTTTTTT;MdV9TTTTTTTTT
..
)
)$
/CCKKKKC J    escalation_marker_g8zscripts/escalation_marker.pyc                   |j                  t        d| dz         |j                  t        d| dz         |j                  t        d| dz  dz         | dz  j                  dd       | dz  j                  dd       t        j                  d	d
dddd      }|d   }d}||u }|st	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|       dz   d|iz  }t        t	        j                  |            dx}x}}| dz  dz  }|j                  }	 |	       }|st	        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}	}t        j                  |j!                               }
dD ]  }||
v }	|	st	        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%z   d&|iz  }t        t	        j                  |            d}	 |j"                  }	 |	       }|j$                  }d'}||kD  }|st	        j
                  d(|fd)||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        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}}t        j                  d.d
d/d0d/d/      }|d   }d1}||u }|st	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d2      dz   d|iz  }t        t	        j                  |            dx}x}}| dz  d3z  }|j                  }	 |	       }| }|st	        j                  d4      d5z   d6t        j                         v st	        j                  |      rt	        j                  |      nd6t	        j                  |	      t	        j                  |      dz  }t        t	        j                  |            dx}	x}}t&        d7z  d8z  }|j                  }	 |	       }|st	        j                  d9      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}	}|j)                  d;<      }d=}||v }|st	        j
                  d|fd>||f      t	        j                  |      d?t        j                         v st	        j                  |      rt	        j                  |      nd?d@z  }t	        j                  dA      dBz   dC|iz  }t        t	        j                  |            dx}}t+        j,                  dDt*        j.                        }|j1                  |      }t3        |      }d'}||k(  }|st	        j
                  dE|fdF||f      dGt        j                         v st	        j                  t2              rt	        j                  t2              ndGdHt        j                         v st	        j                  |      rt	        j                  |      ndHt	        j                  |      t	        j                  |      dIz  }t	        j                  dJt3        |       dK      dLz   dM|iz  }t        t	        j                  |            dx}x}}t&        d7z  dNz  }|j                  }	 |	       }|st	        j                  dO      dz   dPt        j                         v st	        j                  |      rt	        j                  |      ndPt	        j                  |	      t	        j                  |      dz  }t        t	        j                  |            dx}	}|j)                  d;<      }|j1                  |      }t3        |      }d'}||k(  }|st	        j
                  dE|fdF||f      dGt        j                         v st	        j                  t2              rt	        j                  t2              ndGdQt        j                         v st	        j                  |      rt	        j                  |      ndQt	        j                  |      t	        j                  |      dIz  }t	        j                  dRt3        |       dS      dLz   dM|iz  }t        t	        j                  |            dx}x}}g }	d=}||v }|}|sdT}||v } | }|snt	        j
                  d|fdU||f      t	        j                  |      dVt        j                         v st	        j                  |      rt	        j                  |      ndVdWz  }dXdY|iz  }!|	j5                  |!       |st	        j
                  d fdZ|f      t	        j                  |      dVt        j                         v st	        j                  |      rt	        j                  |      ndVd[z  }"d\d]|"iz  }#|	j5                  |#       t	        j6                  |	d^      i z  }$t	        j                  d_      d`z   da|$iz  }%t        t	        j                  |%            dx}x}	x}x}x}} y)bu5  task-2472 hardening이 자기 자신에게 적용되는지 검증.

    시나리오:
    1. raw `: > /tmp/task-X.done.escalated` 시도 → escalation_marker.py가 거부
    2. finish-task.sh에 escalation_marker.py 호출이 있는지 grep 검증
    3. done-watcher.sh에 raw `: >` 패턴 0건 검증
    
EVENTS_DIRevents	AUDIT_DIRauditESCALATION_AUDIT_PATHzstate-recovery.jsonlT)parentsexist_okztask-2472-heimdall-meta	escalatedzL1 meta regression smoketestmeta_test_validationz	/dev/null)task_idkindreasonsourceblocking_conditionevidence_pathok)is)z%(py1)s is %(py4)s)py1py4u   정상 emit 실패: z
>assert %(py6)spy6Nz&task-2472-heimdall-meta.done.escalatedu'   정상 emit 후 마커 파일이 없음zC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}marker_path)py0r	   rP   )rI   tsrG   rJ   rK   rL   )in)z%(py0)s in %(py2)sfieldcontent)rS   r	   u    마커 파일에 필수 필드 'u   ' 없음z
>assert %(py4)srP   r   )>)z_%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.stat
}()
}.st_size
} > %(py9)s)rS   r	   rP   rQ   r   u)   마커 파일이 0-byte (raw emit 의심)z
>assert %(py11)sr   ztask-2472-raw-bypass-attempt shell_bypassFuL   raw bypass 시도 (빈 payload) → escalation_marker.py가 거부해야 함z+task-2472-raw-bypass-attempt.done.escalatedu;   raw bypass 거부 후 마커 파일이 생성되면 안 됨zG
>assert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}bypass_markerscriptszfinish-task.shu   finish-task.sh 없음finish_task_shzutf-8)encodingzescalation_marker.py)z%(py1)s in %(py3)s
ft_content)rO   py3uP   finish-task.sh에 escalation_marker.py 호출 없음 — task-2472 구현 누락z
>assert %(py5)sr
   z)^\s*:\s*>\s*.*\.done\.(escalated|blocked))==)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenraw_matches)rS   rO   r`   rQ   u"   finish-task.sh에 raw emit 패턴 uM   건 잔존 — task-2473에서 발생한 동일 우회가 차단되지 않음z
>assert %(py8)spy8zdone-watcher.shu   done-watcher.sh 없음done_watcher_shdw_raw_matchesu#   done-watcher.sh에 raw emit 패턴 u   건 잔존 — task-2472 위반z	task-2472)z%(py3)s in %(py5)s
dw_content)r`   r
   r   r   )z%(py10)s in %(py12)s)py10py12z%(py14)sr      uq   done-watcher.sh에 task-2472 hardening 적용 흔적 없음 (escalation_marker.py 또는 task-2472 주석 없음)z
>assert %(py17)spy17)setattremmkdiremit_escalationr   r   r   r    r!   r"   existsr   r   r   jsonloads
read_bytesstatst_sizer   	read_textrecompile	MULTILINEfindallrb   r   r   )&tmp_pathmonkeypatch	result_okr-   r,   @py_assert2@py_format5@py_format7rR   r*   rW   rV   @py_format3@py_assert5@py_assert8@py_assert7@py_format10@py_format12result_raw_bypassr[   r1   r]   r_   @py_format4raw_emit_patternrc   r+   @py_format9re   rg   rf   @py_assert9@py_assert11r2   @py_format13r3   @py_format16r5   s&                                         r8   -test_drink_your_own_champagne_meta_regressionr   %   sj	    L(X*=>KG);<3X5GJ`5`at<td; ""))1! # I T?FdF?d"FFF?dFFF?FFFdFFF&:9+$FFFFFFFF X%(PPKJJJJ!JJJJJJJ;JJJ;JJJJJJJJJJJJjj//12G] TSSSuSSSSSSuSSSuSSSSSSSSSSSSS#CE7(!SSSSSSSTVV%%VV%)VVV%VVVVVV;VVV;VVVVVVVVV%VVVVVV+VVVVVVVV **. +  T" e "e+  "e    #    ',    	W     x'*WWM##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  ; ";";;$;;;;;;;>;;;>;;; ;;;";;;;;;))7);J " !Z/  !Z    "      &0    &0    	[    
 zz4
 #**:6K{ q q    q                             !    -S-=,> ?I 	I     *->>O!!=!#=#==%=======?===?===!===#====== **G*<J &--j9N~ ! !#   !                            #$    .c..A-BBab    
! !Z/ ; ;*3L   !Z    "      &0    &0     ;*    4?      CM    CM       	@     r:   )r'   r   r(   r   )__doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   importlib.utilr   rq   rw   r$   pathlibr   __file__resolverB   r   r9   rm   r    r:   r8   <module>r      s[    #      	 
 >!!#++A. !#ABXr:   