
    @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lmZmZmZ ddZdd	Zed
k(  r e        yy)u  scripts/run_goal_activation_controller.py — GOAL_DRIVEN_ACTIVATION_CONTROLLER CLI (task-2553+7).

회장 §명시: chair 가 goal_execution_contract JSON 만 제공하면 controller 가
deriver→gate→activation 루프를 자동 구성 + 기계 결정.

Usage:
  python3 scripts/run_goal_activation_controller.py \
      --goal-contract memory/fixtures/task-2553+1.f1solo.goal-contract.json \
      --repo /home/jay/workspace \
      [--evidence-bundle <path>] \
      [--codex-audit <path>] \
      [--regression-result <path>] \
      [--controller-task-id task-2553+7] \
      [--decision-out <path>] \
      [--result-out <path>] \
      [--hold-out <path>] \
      [--dry-run]

Exit codes:
  0 = ACTIVATED or DRY_RUN_VERIFIED
  2 = HOLD_FOR_CHAIR
  3 = error (parse fail, missing arg, etc.)

9-R.4 정적 부재: merge / PR-merge / auto-merge / same_branch_push — 이 파일에 없음.
    )annotationsN)Path   )CONTROLLER_MODULECONTROLLER_VERSIONrun_goal_activation)STATUS_DRY_RUN_VERIFIEDSTATUS_HOLDSTATUS_ACTIVATED_PR_OPENc                   	 t        j                  t        |       j                  d            S # t        t         j
                  f$ r@}t        d|  d| t        j                         t        j                  d       Y d }~y d }~ww xY w)Nzutf-8)encodingu   [ERROR] JSON 로드 실패: z: )file   )
jsonloadsr   	read_textFileNotFoundErrorJSONDecodeErrorprintsysstderrexit)pathes     )scripts/run_goal_activation_controller.py
_load_jsonr   3   sl    zz$t*...@AAt334 ,TF"QC8szzJs   -0 B		6BB	c                    t        j                  t         dt         d      } | j	                  ddd       | j	                  dt        t              d	t         d
       | j	                  dd d       | j	                  dd d       | j	                  dd d       | j	                  ddd       | j	                  dd d       | j	                  dd d       | j	                  dd d       | j	                  dddd       | j                         }t        |j                        }|j                  rt        |j                        nd }|j                  rt        |j                        nd }|j                  rt        |j                        nd }t        ||j                  ||||j                  |j                   |j"                  |j$                  |j&                   
      }|j)                  d!d"      }|j)                  d#d      }t+        t-        j.                  |d$d%             |t0        t2        fv r|st5        j6                  d&       y |s	|t8        k(  rt5        j6                  d$       y t5        j6                  d'       y )(Nz vu-    — GOAL_DRIVEN_ACTIVATION_CONTROLLER_V0 CLI)descriptionz--goal-contractTu#   goal_execution_contract JSON 경로)requiredhelpz--repou"   workspace root 경로 (기본값: ))defaultr    z--evidence-bundleuD   사전 구성 evidence bundle JSON 경로 (생략 시 자동 빌드)z--codex-auditui   Codex post-result audit JSON 경로 (선택). unresolved_high_or_critical>0 이면 HOLD_FOR_CHAIR 강제.z--regression-resultu   pytest regression 결과 JSON 경로 (선택). JSON: {passed: N, failed: M, total: T, ts_utc: '...', command: '...'}. 제공 시 field 11 = 실 결과. 없으면 NOT_PROVIDED.z--controller-task-idztask-2553+7u`   이 controller 실행의 task ID (기본값: task-2553+7). 출력 파일명과 일치해야 함.z--decision-outu&   activation decision JSON 저장 경로z--result-outu$   final goal result JSON 저장 경로z
--hold-outu   HOLD packet JSON 저장 경로z	--dry-run
store_trueFu   6 조건 전부 충족해도 activate=False 강제 (안전 오버라이드). 기본 동작은 기계적 결정 (--dry-run 없으면 조건 충족 시 실 activation).)actionr"   r    )
goal_contract	repo_pathevidence_bundlecodex_auditregression_resultcontroller_task_iddecision_out_pathresult_out_pathhold_out_path_force_dry_runstatusUNKNOWNhold_for_chair   )indentensure_asciir   r   )argparseArgumentParserr   r   add_argumentstr
_WORKSPACE
parse_argsr   r%   r'   r(   r)   r   repor*   decision_out
result_outhold_outdry_rungetr   r   dumpsr   r	   r   r   r
   )	parserargsr%   r'   r(   r)   resultr/   holds	            r   mainrF   ;   s   $$ !$6#7 87 7F 2  
 J1*Q?  
 S  
 K   H	   o  
 5  
 3  
 -  
 h   Dt112M:>:N:Nj!5!56TXO262B2B*T--.K.2.D.D
4))*$  !#))'+22++mm||F ZZ),F::&.D	$**VAE
:;*,CDDT	;&    __main__)r   r8   returndict)rI   None)__doc__
__future__r   r5   r   r   pathlibr   __file__resolveparentsr9   r8   r   insert!anu_v3.goal_activation_controllerr   r   r   'anu_v3.pre_authorized_activation_runnerr	   r
   r   r   rF   __name__ rG   r   <module>rW      s   2 #   
  (^##%--a0
z?#(("HHOOAs:' 
 bJ zF rG   