
    "j<                    <   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Zddd	Zed
k(  r e e             y)u  scripts/run_pre_authorized_executor_binding.py — gate decision → binding dry-run CLI (task-2553+5).

gate decision(ALLOW) + provenance-stamped contract + 실 evidence 번들 →
dry-run executor plan / HOLD_FOR_CHAIR packet.

  python3 scripts/run_pre_authorized_executor_binding.py       --decision memory/events/<task>.pre-authorized-decision.json       --contract memory/events/<task>.auto-derived-contract.json       --evidence memory/fixtures/<task>.auto-derived-evidence-bundle.json       [--out memory/events/<task>.binding-dry-run.json]

동작 (9-R.1 하드배리어 — 실 PR open 물리 불가):
  - decision != ALLOW / provenance 미충족 / sha 불일치 → HOLD_FOR_CHAIR packet
  - 전 precondition 충족 → dry-run executor plan **만** (실 branch/commit/push/PR 0)
  - --contract 입력이 derivation result(`status`/`contract`)면 내부 contract 추출
  - exit code: 0 = DRY_RUN_PLAN_ONLY / 2 = HOLD_FOR_CHAIR / 3 = 입력/IO 오류

부작용 = result JSON 1개 쓰기만. GitHub/gh/requests/urllib/httpx/token/
network/subprocess 0 (binding 모듈 import set 정적 0건 — regression 정적 증명).
실 PR open executor 호출 = task-2553+6 별도 task + 별도 회장 GO 전 금지.
    )annotationsN)Path   )STATUS_DRY_RUN_PLANSTATUS_HOLDbindc                2    | r| nd}t         dz  dz  | dz  S )Nzunknown-taskmemoryeventsz.binding-dry-run.json)
_WORKSPACE)task_idsafes     B/home/jay/workspace/scripts/run_pre_authorized_executor_binding.py_default_outr   *   s(    7>D 8+6K.LLL    c                ^    t        j                  t        |       j                  d            S )Nutf-8encoding)jsonloadsr   	read_text)paths    r   _loadr   /   s#    ::d4j**G*<==r   c           
        t        j                  d      }|j                  ddd       |j                  ddd       |j                  d	dd
       |j                  dd d       |j                  ddd       |j                  |       }	 t	        |j
                        }t	        |j                        }t	        |j                        }|}t        |t              rd|v r|j                  d      }t!        ||||j"                         }|j$                  rt'        |j$                        n#t)        t+        |j                  dd                  }		 |	j,                  j/                  dd       |	j1                  t3        j4                  |dd      dz   d       |d!   }
t        d"|j                  d      d#|
 d$|j                  d%       d&|	        |
t6        k(  ry'|
t8        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)(NuB   PRE_AUTHORIZED executor binding (decision → dry-run plan / HOLD))descriptionz
--decisionTu   gate decision JSON 경로)requiredhelpz
--contractu@   provenance-stamped contract 또는 derivation result JSON 경로z
--evidenceu9   실 evidence 번들 JSON 경로 (sha256 재해시 대상)z--outu!   binding result JSON 출력 경로)defaultr   z--no-dry-run
store_trueuZ   (의도적 negative) dry-run 해제 시 binding 거부됨을 입증하기 위한 플래그)actionr   z[binding] INPUT_ERROR: )file   contract)decisionr$   evidence_bundledry_runr    )parentsexist_okF   )ensure_asciiindent
r   r   z[binding] OUT_WRITE_ERROR: statusz[binding] task=z status=z hold_reasons=hold_reasonsz -> r   )argparseArgumentParseradd_argument
parse_argsr   r%   r$   evidenceOSError
ValueErrorprintsysstderr
isinstancedictgetr   
no_dry_runoutr   r   strparentmkdir
write_textr   dumpsr   r   )argvapnsr%   contract_inr&   er$   resultout_pathr/   s              r   mainrL   3   sJ   		 	 X
B OOL46QOROOO  
 OOH  
 OOGT0SOTOOi  
 
t	B%BKK(, H+t${)B??:.'MM!	F RVVLVZZ	25N1O$P dT:JJvE!<tC 	 	
 HF	
&**Y/2(6( C

>234z	C
 $$O Z  's+#**=2  +A3/cjjAs1   ?G+ A	H% +H":HH"%	I.II__main__)r   r@   returnr   )r   r@   rN   object)N)rE   zlist[str] | NonerN   int)__doc__
__future__r   r1   r   r9   pathlibr   __file__resolver)   r   r@   r   insert&anu_v3.pre_authorized_executor_bindingr   r   r   r   r   rL   __name__
SystemExit r   r   <module>r[      s   , #   
 (^##%--a0
z?#(("HHOOAs:' M
>BJ z
TV
 r   