
     jq                        d Z ddlm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 ed	d
      Zd Zd Zd Zd Zy)uD  tests/regression/test_escalation_marker.py — Group 6 (4건, §2.A 18-21).

task-2472 regression: escalation marker 발행 차단 검증.

19. test_shell_raw_emit_blocked_in_finish_task_sh
20. test_emit_without_payload_rejected
21. test_zero_byte_escalation_marker_rejected
22. test_state_file_missing_blocks_done_or_merge
    )annotationsN)Path   c                4   t         |z  }t        j                  j                  | t	        |            }||j
                  
J d|        t        j                  j                  |      }|t        j                  | <   |j
                  j                  |       |S )Nu   spec load 실패: )
WORKTREE	importlibutilspec_from_file_locationstrloadermodule_from_specsysmodulesexec_module)mod_namerelpathspecmods        >/home/jay/workspace/tests/regression/test_escalation_marker.py_loadr      s    c>D>>11(CIFD 7T;MdV9TT7
..
)
)$
/CCKKKKC J    escalation_marker_g6zscripts/escalation_marker.pysilent_corruption_guard_g6z utils/silent_corruption_guard.pyc                    t         dz  dz  } | j                         s
J d|         | j                  d      }t        j                  dt        j
                        }|j                  |      }t        |      dk(  s<J dt        |       d	d
j                  d |j                  |      D              z          d|v sJ d       y)uT   finish-task.sh에 raw shell emit `: > *.done.escalated` 패턴이 0건이어야 함.scriptszfinish-task.shu   finish-task.sh 없음: zutf-8)encodingz)^\s*:\s*>\s*.*\.done\.(escalated|blocked)r   u-   finish-task.sh에 raw escalation emit 패턴 u!   건 발견 — task-2472 위반:

c              3      K   | ]  }|  y w)N ).0ms     r   	<genexpr>z@test_shell_raw_emit_blocked_in_finish_task_sh.<locals>.<genexpr>4   s     <!A<s   zescalation_marker.pyuS   finish-task.sh에 escalation_marker.py 호출이 없음 — task-2472 구현 누락N)	r   exists	read_textrecompile	MULTILINEfindalllenjoin)script_pathcontentraw_patternmatchess       r   -test_shell_raw_emit_blocked_in_finish_task_shr0   &   s    Y&)99KH#:;-!HH##W#5G**4
K !!'*Gw<1 
7G~Egh
))<{227;<
<	= "W, ],r   c                j   |j                  t        d| dz         |j                  t        d| dz         |j                  t        d| dz  dz         t        j                  ddd	d
dd      }|d   du sJ d       d|d   v s	d|d   v sJ t        j                  dddd
d	d      }|d   du sJ d       y)uM   emit_escalation() 호출 시 필수 필드 누락 → ok=False (fail-closed).
EVENTS_DIRevents	AUDIT_DIRauditESCALATION_AUDIT_PATHzstate-recovery.jsonlztask-2472-test	escalated testz
test-blockz	/dev/null)task_idkindreasonsourceblocking_conditionevidence_pathokFu+   reason 빈 문자열 → emit 거부 필수u   누락r<   u   실패ztask-2472-test2zvalid reasonu7   blocking_condition 빈 문자열 → emit 거부 필수N)setattrememit_escalation)tmp_pathmonkeypatchresultresult2s       r   "test_emit_without_payload_rejectedrH   A   s     L(X*=>KG);<3X5GJ`5`a  '!   F $<5 O"OO vh''8vh7G+GGG   !! ! G 4=E!\#\\!r   c                    | dz  }|j                  d       t        j                  |      }|d   du sJ d       d|d   v s	d|d   v sJ |d	   d
   dk(  sJ y)uQ   강제로 0-byte .done.escalated 생성 후 check_escalated_payload → ok=False.z"task-zero-byte-test.done.escalatedr   r@   Fu.   0-byte escalated 파일 → fail-closed 필수z0-byter<   0detailsizer   N)write_bytesscgcheck_escalated_payload)rD   escalated_pathrF   s      r   )test_zero_byte_escalation_marker_rejectedrQ   e   sz     DDNs#((8F$<5 R"RR vh''3&2B+BBB(F#q(((r   c                    d}t         j                  ||       }|d   du sJ d       d|d   v s	d|d   v sJ |d	   d
   du sJ y)uM   .tasks/state/{task_id}.json 없을 때 check_state_file_present → ok=False.ztask-no-state-22)	workspacer@   Fu/   state 파일 없으면 done/merge 차단 필수u   없음r<   zfail-closedrK   r$   N)rN   check_state_file_present)rD   r:   rF   s      r   ,test_state_file_missing_blocks_done_or_mergerU   u   sm     G ))'X)FF$<5 S"SS vh''=F8<L+LLL(H%...r   )r   r   r   r   )__doc__
__future__r   importlib.utilr   r&   r   pathlibr   __file__resolveparentsr   r   rB   rN   r0   rH   rQ   rU   r    r   r   <module>r]      sq    #  	 
 >!!#++A. !#AB(*LM6]H	) 	/r   