
     j                    4   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 ee      ej                  vr"ej                  j                  d ee             ddlmZmZmZ d
dZdddZed	k(  r e e             y)u*  scripts/run_pre_authorized_action_gate.py — PRE_AUTHORIZED gate CLI runner (task-2553+4).

PR open executor 앞단에서 호출되는 필수 gate runner.

  python3 scripts/run_pre_authorized_action_gate.py       --input <go-ready-packet.json | pre_authorized_action_contract.json>       [--out memory/events/<task_id>.pre-authorized-decision.json]

동작:
  - 입력(GO-ready packet 또는 contract) 로드 → anu_v3.pre_authorized_action_gate.evaluate
  - decision JSON 을 --out 경로(미지정 시 memory/events/<task_id>.pre-authorized-decision.json)에 기록
  - stdout 에 decision 한 줄 요약 출력
  - exit code: 0 = ALLOW / 2 = HOLD_FOR_CHAIR / 3 = 입력/IO 오류

운영 원칙 (회장 verbatim):
  - 이 게이트는 직접 GitHub write 를 수행하지 않는다. decision JSON 만 생성한다.
  - executor 는 decision == ALLOW_PRE_AUTHORIZED_CLEAN_REPLACEMENT_PR_OPEN 일 때만
    clean replacement PR open 을 진행한다. HOLD 면 회장 보고.

본 runner 가 쓰는 유일한 파일 = decision JSON. GitHub/credential/network 0.
    )annotationsN)Path   )DECISION_ALLOWDECISION_HOLDevaluatec                2    | r| nd}t         dz  dz  | dz  S )Nzunknown-taskmemoryeventsz.pre-authorized-decision.json)
_WORKSPACE)task_idsafes     =/home/jay/workspace/scripts/run_pre_authorized_action_gate.py_default_outr   +   s(    7>D 8+6S.TTT    c                   t        j                  d      }|j                  ddd       |j                  dd d	       |j                  |       }t	        |j
                        }	 t        j                  |j                  d
            }t        |      }|j                  rt	        |j                        nt!        |j#                  dd            }	 |j$                  j'                  dd       |j)                  t        j*                  |dd      dz   d
       |d   }t        d|j#                  d      d|j#                  d      d| d|j#                  d       d| 
       |t,        k(  ry|t.        k(  ryy# t        t        f$ r(}t        d| t        j                         Y d }~yd }~ww xY w# t        $ r(}t        d| t        j                         Y d }~yd }~ww xY w) Nz4PRE_AUTHORIZED_CLEAN_REPLACEMENT_PR_OPEN gate runner)descriptionz--inputTuA   GO-ready packet 또는 pre_authorized_action_contract.json 경로)requiredhelpz--outu`   decision JSON 출력 경로 (미지정 시 memory/events/<task_id>.pre-authorized-decision.json))defaultr   zutf-8)encodingz[gate] INPUT_ERROR: )file   r    )parentsexist_okF   )ensure_asciiindent
z[gate] OUT_WRITE_ERROR: decisionz[gate] task=z action=action_typez
 decision=z	 reasons=reasonsz -> r   )argparseArgumentParseradd_argument
parse_argsr   inputjsonloads	read_textOSError
ValueErrorprintsysstderrr   outr   getparentmkdir
write_textdumpsr   r   )	argvapnsin_pathrawer!   out_pathverdicts	            r   mainr?   0   s   		 	 J
B OOP  
 OOo  
 
t	B288nGjj**G*<=
 }H!vvtBFF|<YPR8S+THdT:JJxeA>E 	 	
 z"G	
x||I.1 2,,}-0 19 <<	*+ ,Z		 . -= Z  $QC(szz:  (,3::>s1   &%E= A	F7 =F4F//F47	G( G##G(__main__)r   strreturnr   )N)r7   zlist[str] | NonerB   int)__doc__
__future__r   r$   r)   r/   pathlibr   __file__resolver   r   rA   pathinsert!anu_v3.pre_authorized_action_gater   r   r   r   r?   __name__
SystemExit r   r   <module>rO      s   , #   
  (^##%--a0
z?#(("HHOOAs:' U
1h z
TV
 r   