
    4j                       d Z ddlmZ ddlZddlZddlZddlZddlZddl	m
Z
 ddlmZmZmZmZ  e
e      j#                         j$                  d   Z ee      ej*                  vr"ej*                  j-                  d ee             dZdZd	Zd
ZdZdZdZdZdZde de Z dZ!dZ"dZ#dZ$dZ%dZ&dZ' G d de(      Z)d/dZ*dZ+e+D ]  \  Z,Z-e,ej\                  vs e*e,e-        d0dZ/d1dZ0d2dZ1d3d Z2d3d!Z3d1d"Z4d1d#Z5d4d$Z6	 	 	 	 	 	 d5d%Z7d1d&Z8d6d'Z9d7d(Z:d8d)Z;d1d*Z<d9d+Z=d:d,Z>d;d<d-Z?e@d.k(  r eA e?             y)=u  task-2553+60 — LIVE READ-ONLY OPERATIONAL PILOT (9-stage 자동 결선).

회장 §1 verbatim: 짧은 read-only goal 하나만으로 ANU 가

  profile selection → dispatch planning → executor → ANU-key normal
  callback → independent collector → durable registry → runtime event
  loop → bounded enactor → consolidated result

까지 **자동 수행**하는지 검증한다. 회장이 gate/HOLD/allowed/forbidden 을
풀어쓰지 않아도 ANU 가 policy_profile_engine + runtime guard 로 자동
산출·검증·통합한다.

핵심 = 본 스크립트가 각 단계의 **실 entrypoint 를 직접 호출**(mock-only
FAIL · 문서-only 금지)해 9-stage 자동 진행을 입증한다. 입력은 +57 의
짧은 read-only goal(`pilot_goal.json` goal_request, goal_type =
``runtime_structure_smoke_pilot``) 이며, +58 fallback acceptance
criterion/non_blocking schema 를 read-only 로 소비한다.

실 entrypoint (direct call, no mock — stage ↔ module):

  1. ``anu_v3.default_profile_resolver.run_default_profile_resolution`` /
     ``run_selected_profile_evidence`` — policy_profile_engine 정본
     ``parse_goal_request -> resolve_policy`` 를 READ-ONLY 소비해 profile
     /gate/HOLD/allowed/forbidden 자동 산출 (engine byte-0).
  2. ``anu_v3.callback_owner_validator.validate_callback_owner_runtime`` +
     ``assert_registration_permitted`` — dispatch planning 의 ANU-key
     callback contract 강제 (self-key → CallbackRegistrationBlocked).
  3. executor read-only goal 실행 — RESOLVED 일관 + 미매핑 fail-closed +
     callback owner/key registry 일관 (``dispatch.callback_owner_enforcer``
     ``DEFAULT_ANU_KEYS``/``is_anu_key`` READ-ONLY).
  4. ``anu_v3.self_collector_guard.guard_self_collector_session`` —
     normal completion callback owner 는 독립 ANU key 만; executor self
     key collector 는 ``SELF_COLLECTOR_FORBIDDEN``.
  5. ``anu_v3.authoritative_verdict_selector.select_authoritative_verdict``
     — independent-ANU verdict 만 authoritative, self-chain QUARANTINED.
     ``scripts.validate_fallback_acceptance_2553plus58.evaluate_fallback_
     acceptance`` — +58 기준(b) NON_BLOCKING schema-valid·semantic binding.
  6. ``anu_v3.batch_settle_writeback.evaluate_durable_success_writeback`` +
     ``apply_durable_success_writeback`` — +44 ledger 에 durable-success
     additive append-only (idempotent; +53 소관).
  7. ``anu_v3.runtime_event_loop.RuntimeEventLoop.run`` — durable-registry
     append 를 progress 이벤트로 즉시 감지 (registry_completed_event 만;
     dead-man/fixed-time/fallback 진행 트리거 → 하드 FAIL 음성 입증).
  8. ``anu_v3.runtime_event_enactor.RuntimeEventEnactor.enact`` — proposal
     -only · additive · merge/PR/write 0 (artifact_writer=None → dry).
  9. consolidated result 산출 (+58 verdict·subagent usage ledger 포함).

Layer A / NO-CRON / READ-ONLY: ZERO cron register/remove, ZERO 실
dispatch, ZERO merge, ZERO PR, ZERO branch/commit/push, ZERO credential,
ZERO subprocess/cokacdir exec, ZERO 기존 산출물 변조. 본 스크립트의
유일한 durable write 는 (i) §6 allowlist 의 task-2553+60 신규 산출물
(``--emit`` 시에만) 과 (ii) +53 소관 ``apply_durable_success_writeback``
가 +44 ledger 에 수행하는 durable-success additive append(append-only,
idempotent) 뿐이다. enactor 는 artifact_writer=None 으로 완전 dry.

executor(dev7 이참나, key a999e2ea4c06d2fb) self-collector /
self-adjudication / self-Codex / self-dispatch / self-delegation 0.
authoritative verdict·회수·검증·Codex·adjudication·batch 통합은 독립
ANU collector(callback ANU key c119085addb0f8b7)가 담당하며 본
self-chain 산출은 영구 비권위임을 *증명* 한다.
    )annotationsN)Path)AnyDictListOptional   ztask-2553+60runtime_structure_smoke_pilotztask-2553+60-operational-pilotOPERATIONAL_PILOTc119085addb0f8b7a999e2ea4c06d2fb
6937032012z2026-05-18 22:40 KSTz2026-05-19 01:05 KSTzANU-fallback-safety-net::zmemory/events/pilot_goal.jsonz'memory/events/pilot_execution_plan.jsonz#memory/events/success_criteria.jsonz/memory/events/fallback_acceptance_criteria.jsonz)schemas/non_blocking_fallback_schema.json))memory/events/task-2553+60.pilot-run.json0memory/events/task-2553+60.selected-profile.json2memory/events/task-2553+60.gate-hold-decision.json0memory/events/task-2553+60.execution-result.json<memory/events/task-2553+60.independent-collector-result.json9memory/events/task-2553+60.runtime-event-loop-result.json.memory/events/task-2553+60.enactor-result.json3memory/events/task-2553+60.consolidated-result.jsonz+scripts/run_operational_pilot_2553plus60.pyz5tests/regression/test_operational_pilot_2553plus60.py(memory/events/task-2553+60.decision.json&memory/events/task-2553+60.result.jsonzmemory/reports/task-2553+60.md)memory/events/callback_4tuple_index.jsonl
r   r   r   r   r   r   r   r   r   r   c                      e Zd ZdZy)MockOnlyErroruK   실 entrypoint 미사용(mock-only) 시 즉시 FAIL — 문서-only 금지.N)__name__
__module____qualname____doc__     ?/home/jay/workspace/scripts/run_operational_pilot_2553plus60.pyr   r      s    Ur#   r   c                &   t         j                  j                  | t        |z        }||j                  t        d|       t         j                  j                  |      }|t        j                  | <   |j                  j                  |       |S )u   정본 모듈을 파일 경로로 로딩 (mock 0). repo 에 dispatch.py 와
    dispatch/ 가 공존해 일반 import 가 컨텍스트에 따라 엇갈리므로 sibling
    +51/+57 pilot 과 동일하게 명시 경로 로딩.zreal module not found: )
	importlibutilspec_from_file_locationROOTloaderModuleNotFoundErrormodule_from_specsysmodulesexec_module)modnamerelpathspecmods       r$   
_load_realr4      sx     >>11'4'>JD|t{{*!$;G9"EFF
..
)
)$
/CCKKKKC Jr#   )) dispatch.callback_owner_enforcer#dispatch/callback_owner_enforcer.py)anu_v3.callback_4tuple_registry"anu_v3/callback_4tuple_registry.py)%anu_v3.authoritative_verdict_selector(anu_v3/authoritative_verdict_selector.pyc                Z    t        j                  t        | z  j                  d            S )Nutf-8encoding)jsonloadsr)   	read_text)rels    r$   
_read_jsonrC      s#    ::tcz,,g,>??r#   c                     t        t              } | d   d   }|| d   d   t        t              d   t        t              d   D cg c]  }|d   	 c}t        t              d   t        t
              d   dS c c}w )	uB   +57 짧은 read-only goal + +58 fallback 기준 read-only consume.
pilot_goalgoal_requesttitleschemapilot_success_criteriaidz$id)pilot_goal_requestpilot_goal_titleexec_plan_schemasuccess_criteria_idsfallback_criteria_schemanb_schema_id)rC   PLUS57_PILOT_GOALPLUS57_EXEC_PLANPLUS57_SUCCESSPLUS58_FALLBACK_CRITPLUS58_NB_SCHEMA)pgrF   cs      r$   _consume_inputsrX      s    	%	&Bl#N3L*|,W5&'78B'78PQ!
AdG!
 %//C$DX$N"#34U;	 	!
s   A8
c           	         t        dd      }|j                  |       }|j                  |       }|j                  dg d      }d|||d|j                  d      |j                  d      d	S )
u   STAGE 1 — ANU profile selection. policy_profile_engine 정본
    read-only resolve. 회장 미지정 gate/HOLD/allowed/forbidden 자동 산출.zanu_v3.default_profile_resolverz"anu_v3/default_profile_resolver.py __no_such_goal_type_2553plus60__)	goal_typeboundaryzanu_v3.default_profile_resolver.run_default_profile_resolution -> policy_profile_engine.parse_goal_request -> resolve_policy (READ-ONLY, engine byte-0)Tstatusprofile_bound)real_entrypointresolvedselected_profile_evidenceunknown_goal_type_resolutionauto_derivedr]   r^   )r4   run_default_profile_resolutionrun_selected_profile_evidenceget)rF   resr`   evidenceunknowns        r$   _stage1_profile_selectionrj      s     )+OC 11,?H00>H008bIGJ %-(/,,x(!o6
 
r#   c                   t        dd      }t        t        t        ddt         t
        dt         t        t        g      } |j                  dt        t        d|} |j                  dt        t        d|}d}d	}	 |j                  |       d|j                  |j                  |j                  ||j                  |t        t        dd| d   j                  d      d	S # |j                  $ r}d
}t        |      }Y d}~sd}~ww xY w)u   STAGE 2 — dispatch planning. ANU-key callback contract 강제.
    self key collector → CallbackRegistrationBlocked (구조적 차단).zanu_v3.callback_owner_validatorz"anu_v3/callback_owner_validator.pyANUANU-normal-callback:	dispatch:)task_idexecutor_keycollector_rolenormal_collector_cron_idfallback_callback_cron_iddispatch_cron_idchat_idanu_keys)collector_keycollector_owner_keyF TNz_anu_v3.callback_owner_validator.validate_callback_owner_runtime + assert_registration_permittedz%normal-callback durable-success event)$normal_completion_callback_owner_key$executor_self_key_forbidden_as_ownernext_action_basisr`   resolved_profile_name)	r_   anu_key_registration_allowed anu_key_owner_is_independent_anuself_key_registration_allowed2self_key_assert_raised_CallbackRegistrationBlockedself_key_block_classificationblock_exceptioncallback_contractprofile_selectedr"   )r4   dictTASK_IDEXECUTOR_SELF_KEYANU_CALLBACK_KEYFALLBACK_CRON_IDCHAT_IDvalidate_callback_owner_runtimeassert_registration_permittedCallbackRegistrationBlockedstrregistration_allowedowner_is_independent_anuclassificationsrf   )s1cvcommonanu_okself_blockedblocked_raised	block_exces           r$   _stage2_dispatch_planningr      s?    
)+O
B &#78H7I!J"2$WI."#	F 0R// &, F
 6255 '- L NI
((6
J(.(C(C,2,K,K)5)J)J>L)5)E)E$4D4E!H

 zN../FG  )) F	s   C% %D4DDc           	        t        dd      }t        |j                        }| d   }| d   }|t        t        |j                  t        |      |j                  t        |      d}|j                  d      dk(  xr |j                  d      d	u |j                  d      dk7  |j                  d      |d
   d	u xr |d   du d}dd||dt        dddS )u   STAGE 3 — executor 실행 (짧은 read-only goal). RESOLVED 일관 +
    미매핑 fail-closed + callback owner/key registry 일관.r5   r6   r`   rb   )registered_anu_keysmandated_callback_keyexecutor_self_keymandated_is_anu_keyexecutor_self_is_anu_keyr]   RESOLVEDr^   Tr   r   F)resolved_consistentunknown_fail_closedunknown_statuscallback_owner_key_consistentzcdispatch.callback_owner_enforcer.{DEFAULT_ANU_KEYS,is_anu_key} (READ-ONLY) + stage-1 engine resolvezYpolicy profile engine read-only resolve consistency dry-run (+57 pilot_goal.goal_request)   dev7-team 이참나%DEFERRED_TO_INDEPENDENT_ANU_COLLECTOR)r_   read_only_goalowner_key_consistencygoal_outcomesexecutorrp   self_chain_authoritativeauthoritative_selection)r4   sortedDEFAULT_ANU_KEYSr   r   
is_anu_keyrf   )r   enfrv   rg   unkconsistencyr   s          r$   _stage3_executorr     s     *,QC c**+H
Z.C
+
,C'!1."~~.>I$'NN3Dh$OK  #wwx0J>  -GGO$,"wwx0J>''(+-.$6 A675@	MM<!,&))$)#J r#   c            	     L   t        dd      } | j                  t        t        t        dd      }| j                  t        t        t        dd      }d|j                  |j
                  |j                  dk(  xr |j
                  d	k(  |j                  |j                  t        d
dS )u   STAGE 4 — ANU-key normal completion callback. executor self
    collector = SELF_COLLECTOR_FORBIDDEN (구조적). ANU collector = PASS.zanu_v3.self_collector_guardzanu_v3/self_collector_guard.pyrl   T)rp   rw   	actor_keyrq   is_executor_self_sessionFz8anu_v3.self_collector_guard.guard_self_collector_sessionFAILSELF_COLLECTOR_FORBIDDENua   ANU key c119085addb0f8b7 (executor self key a999e2ea4c06d2fb 절대 금지 — +49 코드 정본))r_   executor_self_collector_verdict&executor_self_collector_classification!executor_self_collector_forbidden!independent_anu_collector_verdictindependent_anu_collector_okrz   callback_fired_with)r4   guard_self_collector_sessionr   r   verdictclassificationok)g
self_guard	anu_guards      r$   _stage4_anu_key_callbackr   4  s     	%'G	A //&'#!% 0 J ..&&"!& / I'+5+=+=2<2K2K&( H))-GG-6->->(10@ D r#   c                 `    dt         t        t        t        t              ddt
        ddddddddS )	u   +58 기준 (b) — registry NON_BLOCKING 명시 마크 (schema-valid·
    semantic binding). normal durable-success 이후 잔존 bound ANU
    safety-net fallback 의 비차단 명시. cancel_on_success_applied=false.z*task-2553+58.non_blocking_fallback_mark_v1TNON_BLOCKINGrl   u  task-2553+60 durable-success registry line (+53 apply_durable_success_writeback) — 정상 수렴 후 ANU safety-net fallback 은 비차단 NO-ACTION. cancel-on-success live adoption 전까지 기준 (b) 명시 마크가 최소 운영 품질 요건 (+58 remediation_north_star).DUPLICATE_CALLBACK_IGNOREDF)rH   ro   fallback_cron_id	owner_keyru   "bound_after_normal_durable_successr   marked_at_kstmarked_by_collector_rolebasisnormal_success_unchangedexpected_on_fireprogress_triggercancel_on_success_eligiblecancel_on_success_applied)r   r   r   intr   TS_KSTr"   r#   r$   _build_non_blocking_markr   Y  sC    
 ?,%w<.2($)#
 %)8!&*%*' r#   c                `   t        dd      }t        g}|j                  ddt        t        t        ddd      }|j                  ddt        t        t        dd	d
d	      }|j                  ||gt        |      }t               }t        dd      }|j                  |      \  }}	t        t        d	d	d	ddd|d	}
|j                  |
      }i dddt        dddt        ddddd|j                  d|j                  d|j                  dk(  xr |j                  d	u d|j                  d|j                  d|j                  d |j                  d!k\  d"t         d#t        d$t         d%t         t        t        dt        t"        d&d'd(|||	||d   |
d   k(  xr |d)   |
d)   k(  d*d+| d,   S )-u   STAGE 5 — independent ANU collector. authoritative verdict 는
    독립 ANU 만; self-chain QUARANTINED. +58 fallback acceptance 판정.r9   r:   collector_resultPASSrl   FuA   independent ANU collector — 회수·검증·Codex·adjudication)kindr   ro   rp   rw   rq   session_is_executor_selfdetailTindependentu8   executor self-chain — 영구 비권위 (claim ignored))	r   r   ro   rp   rw   rq   r   claimed_originr   )ro   rv   z/scripts.validate_fallback_acceptance_2553plus58z2scripts/validate_fallback_acceptance_2553plus58.pyN)	ro   r   fallback_boundnormal_callback_durable_successr   r   fallback_firedfallback_handlingregistry_non_blocking_markr_   zanu_v3.authoritative_verdict_selector.select_authoritative_verdict + scripts.validate_fallback_acceptance_2553plus58.evaluate_fallback_acceptancero   rq   rw   executor_self_collectorr   authoritative_verdictauthoritative_classificationauthoritative_passAUTHORITATIVE_PASSauthoritative_source_kindquarantined_countindependent_anu_countself_chain_quarantinedr	   ts_kstfour_tuple_recordrn   rm   )ro   rt   rr   rs   rw   rq   rp   ru   fallback_acceptance'(b) REGISTRY_NON_BLOCKING_EXPLICIT_MARKr   )	criterionnon_blocking_marknon_blocking_mark_schema_validnon_blocking_mark_errorsr   semantic_binding_okexecutor_goal_outcomesr   )r4   r   VerdictRecordr   r   select_authoritative_verdictr   validate_non_blocking_markr   evaluate_fallback_acceptancer   r   r   r   r   r   r   r   )s3avsrv   r   
self_chainselnb_markfbnb_ok	nb_errorsobservation
fb_verdicts               r$   _stage5_independent_collectorr  t  s    /2C !!H##&&!&R $ 	K ""&'!%$I # 
J 
*
*	[!7X + C
 '(G	9<
B 44W=E9,+/$(%*!&-
K 00=J, O, 	7	,
 	%, 	), 	"5, 	#E, 	 , 	'(:(:, 	"66I366T>, 	$S%B%B, 	S22,  	 !:!:!," 	!#"7"71"<#,$ 	&%,& 	"+G9 5&'7&89)9-#-
',> 	B!(.3(1!	"k)&<< 3./123 
?,V 	!"_"5W, ,r#   c               @   t        dd      }t        dz  }t        j                  dddd      5 }t	        j
                  | |d	       |j                  }d
d
d
       |j                  t        t        t        |      }d
}|r|j                  ||      }t        |      j                  d       |xs |}dd|j                  |j                  t!        t#        |dd            |j                  dv t%        |j&                        dd
 t!        |      dS # 1 sw Y   xY w)u{   STAGE 6 — durable registry write-back (+53 소관). +44 ledger 에
    durable-success additive append-only (idempotent).zanu_v3.batch_settle_writebackz anu_v3/batch_settle_writeback.pyr   wz.jsonFr<   )suffixdeleter>   )ensure_asciiN)batch_idtrack_idrp   ledger_path)r  T)
missing_oku   anu_v3.batch_settle_writeback.evaluate_durable_success_writeback + apply_durable_success_writeback (+53 소관 · +44 ledger additive append-only · idempotent)appended)DURABLE_SUCCESS_WRITTENWRITEBACK_IDEMPOTENT_SKIP)r_   r  writeback_verdictwriteback_classificationr  durable_successreasonswrite_performed)r4   r)   tempfileNamedTemporaryFiler?   dumpname"evaluate_durable_success_writebackBATCH_IDTRACK_IDr   apply_durable_success_writebackr   unlinkr   r   boolgetattrlistr  )	r   do_writebswledgertfsrc_pathdecisionappliedfinals	            r$   _stage6_durable_writebackr/    s:   
 ')KC ??F 
	$	$GEG
 			"BU;77	 55& 6 H G55& 6 
 	NT*xEH C"]]$)$8$8
E:; //CD&rs+> ) s   %DDc                    t        dd      } t        dd      }t        dz  }|j                  |      }| j                  |t        g      }| j                  t        dt         t        t        t              }|j                  |gd	t        
      }|j                  |gddt              }d|j                         |j                  |j                  |j                  |j                  t!        |j"                        t%        d |j"                  D              xs t%        d |j&                  D              d|j                  |j                  dk(  |j(                  du xr |j                  du dd	S )u   STAGE 7 — runtime event loop (+54). durable-registry append 를
    progress 이벤트로 즉시 감지. dead-man/fixed-time 진행 트리거 → 하드
    FAIL 음성 입증 (진행 트리거는 registry_completed_event 만).zanu_v3.runtime_event_loopzanu_v3/runtime_event_loop.pyr7   r8   r   )rv   rn   )ro   expected_dispatch_idexpected_chat_idrw   rp   registry_completed_event)single_tasksprogress_trigger_sourcegenerated_at_kstdead_man_fallbackT)r4  r5  dead_man_signalr6  z]anu_v3.runtime_event_loop.RuntimeEventLoop.run (read-only registry consumer; registry byte-0)c              3  ^   K   | ]%  }t        |j                  d             t        k(   ' ywro   Nr   rf   r   ).0r   s     r$   	<genexpr>z-_stage7_runtime_event_loop.<locals>.<genexpr>0  s(      (
12Ci !W,(
   +-c              3  ^   K   | ]%  }t        |j                  d             t        k(   ' ywr:  r;  )r<  rs     r$   r=  z-_stage7_runtime_event_loop.<locals>.<genexpr>3  s+      
 i !W,
r>  FORBIDDEN_TRIGGER_SOURCEN)r5  r   	hard_fail%dead_man_signal_observed_not_promoted)	r_   enveloper   r   fixed_time_useddead_man_usedevents_observed_countdetected_durable_successforbidden_trigger_negative)r4   r)   Callback4TupleRegistryRuntimeEventLoopr   SingleTaskSpecr   r   r   runr   to_jsonr   r   rE  rF  lenevents_observedanysingle_task_resultsdead_man_signal_observed)rB   reg_modr)  registryloopr2   result	forbiddens           r$   _stage7_runtime_event_looprY    s    #%CC ),G ??F--f5H4D3EFD(	2 &&  D XXV :  F V 3	  I9NN$>>"33!11--!$V%;%;!<$' (
6<6L6L(
 %
 %
  
//
 

 (; (("**.HH22d: 7..$6'
! r#   c                   t        dd      }|j                  t        gt        t	        t
                    }|j                  | dddt              }|j                  |t              }|j                  | d	dt        
      }d||j                  ddd|j                  |j                  |j                  dddd	|j                  |j                  dk(  xs |j                  dk(  ddS )u   STAGE 8 — bounded enactor (+55). proposal→additive consolidated.
    artifact_writer=None → 완전 dry (merge/PR/write 0).zanu_v3.runtime_event_enactorzanu_v3/runtime_event_enactor.py)rv   r   workspace_rootr3  FN)r5  allow_actual_dispatchartifact_writerr6  )r6  fallback_progress)r5  r]  r6  uY   anu_v3.runtime_event_enactor.RuntimeEventEnactor.enact (proposal-only · additive · dry)nonezbounded_enact (proposal-only)Tr   ENACTOR_FORBIDDEN_TRIGGERrA  )r5  r   rB  )r_   rD  r   	authorityauto_executedaction_modeenacted_countdispatch_ready_countblocked_countadditive_artifacts_onlyactual_write_performedmerge_pr_writerI  )r4   RuntimeEventEnactorr   r   r   r)   enactr   enactor_result_enveloper   rd  re  rf  )loop_envelopeenenactorrW  rD  rX  s         r$   _stage8_bounded_enactorrp  C  s    
&(I
B $$"#+4y % G
 ]] :#  F ))&6)JH 3	  IG>>6-- & ; ;--#'"'': (("**.II ?  $>>	'
 r#   c           	     p  	 | d   | d   | d   c}}	| d   | d   }}| d   | d   | d   }}}|d	   d
k(  xr  |d   du xr |d   j                  d	      d
k7  |d   du xr |d   du xr |d   du t        	fddD              |d   du xr |d   du |d   du xr/ |d   du xr& |d   d   d   dk(  xr |d   d   du xr
 |d   d   du |d   du |d   dv xr |d   du xr
 |d    d!   du |d"   du xr |d#   du xr
 |d    d!   du d$}|t        |j                               t        |j                               d%S )&Nstage1stage2stage3stage4stage5stage6stage7stage8r]   r   r^   Trb   r~   r   Fr   c              3  .   K   | ]  }d    |     yw)r   Nr"   )r<  kr   s     r$   r=  z_evaluate.<locals>.<genexpr>  s#      0
 "0
s   )r   r   r   r   r   r   r   r   r   OPERATIONAL_PASSr   r   r  )NEXT_ACTION_READYALL_SETTLEDWAITrH  rI  rB  rh  rb  )stage1_profile_auto_resolvedstage2_anu_contract_enforced stage3_executor_readonly_goal_okstage4_callback_anu_key_only$stage5_independent_anu_authoritative stage6_durable_success_writebackstage7_loop_detected_eventstage8_enactor_proposal_only)checks
all_passedauto_chained_9_stage)rf   allvalues)
stagesr   s2s4s5s6s7s8r  r   s
            @r$   	_evaluater  t  s9   !6(#3VH5EJBBHvh/B!6(#3VH5EBB(*8
(B )K4')K-.228<
J-.$6 23u<GH -0 0
0
 -
 23t; ;12d: #$, I+,4I())4Y?!"I ()*JK	I ()*?@DH,./@,AT,IyMII F-.$6F/0=E '(E1 F?#u,F/0=EQ*FX &--/* #FMMO 4 r#   c           	        t               }|d   }t        |      }t        |      }t        |      }t	               }t        |      }t        ||       }t               }	t        |	d         }
|||||||	|
d}t        |      }|||dS )NrK   r'  rD  )rr  rs  rt  ru  rv  rw  rx  ry  )inputsr  
evaluation)
rX   rj   r   r   r   r  r/  rY  rp  r  )r'  r  grr   r  r   r  r  r  r  r  r  evs                r$   	run_pilotr    s    F	$	%B	"2	&B	"2	&B	"	B	!	#B	&r	*B	"2	9B	#	%B	 J	0B 	F 
6	BbAAr#   c            	     $    g ddddt         ddddS )uM   회장 §2/§4(2) — team result 외부경계: subagent usage ledger 강제.u^  subagent 미사용 — 본 operational pilot 은 단일 executor(dev7 이참나) 세션이 9-stage 실 entrypoint 를 직접 결선 호출했으며 내부 subagent 를 0회 사용했다. 회장 §2: 팀장 내부 subagent 사용은 재량이나 team result 에 usage ledger 또는 미사용 명시 필수 — 본 ledger 가 미사용을 명시한다.TuP   9-stage operational pilot consolidated result + §6 allowlist additive artifactsuq   self-chain 영구 비권위 — authoritative verdict 는 독립 ANU collector(callback ANU key c119085addb0f8b7)r   )team_result_contractoutputs_summaryra  callback_owner_key'executor_self_dispatch_delegation_count+executor_self_codex_self_adjudication_count)subagents_useddeclarationexternal_boundary_contract)r   r"   r#   r$   _subagent_usage_ledgerr    s5     F %) 8F"278;<	'
 r#   c                   | d   }| d   }| d   }|d   }t         t        d}ddi|d|d	   |d
   t        |d   |d   |d   |d   dt        dd      D ci c]  }d| |d|    d    c}d|d   dd|d   d
}|d   d   }|j	                  di       xs i }	ddi|t
        d|j	                  d      |j	                  d      |j	                  d       |j	                  d!      |j	                  d"      d#|d   d$   |d   d   d%|d   d&   j	                  d       |d   d&   j	                  d       d'k7  d(d)}
dd*i|d+d|	j	                  d,g       |	j	                  d-g       |	j	                  d.g       |	j	                  d/g       dd d0}dd1i||d2   |d3   |d4   d5}dd6i||j                         D ci c]  \  }}||
 c}}ddd7}dd8i||d9   d:|d;   i}dd<i||d=   }|d>   }dd?i|d@|d   |d   |dA   rdBndCddDt         dEdF|dG   dG   |dH   |dI   ddJdKt               dLdMdNdOdPdQdRdOdPdQdSdOdPgddTdUt        ddVdWdXdYdt               dZ
}dd[i||dA   rd\nd]ddddddddd^d_t        t              d`da}ddbi|dct        ddd|d   |dA   rdBndCdddt        D cg c]  }| c}t               det         dfddg}||
||||||||dh
S c c}w c c}}w c c}w )iNr  r  r  rv  )schema_taskr   rH   z"anu.operational_pilot.pilot_run.v1-task-2553+60 LIVE READ-ONLY OPERATIONAL PILOTrL   rK   rM   rN   rO   rP   )plus57_pilot_goalplus57_exec_plan_schemaplus57_success_criteria_idsplus58_fallback_criteria_schemaplus58_non_blocking_schema_idr	   	   stager_   zIconsolidated result (memory/events/task-2553+60.consolidated-result.json)r  Fr  )
rG   
input_goalinput_goal_requestconsumed_read_onlynine_stage_chainstage9r  	mock_onlydocumentation_onlyevaluation_checksrr  r`   boundary_expansionz)anu.operational_pilot.selected_profile.v1Tr}   
profile_idr]   r^   mapping_source)r}   r  r]   r^   r  ra   rZ   rb   r   )unknown_goal_typer]   not_resolved)r[   "auto_resolved_without_chair_detailselected_profilera   engine_consumed_read_onlyfail_closed_negativez+anu.operational_pilot.gate_hold_decision.v1u   회장이 gate/HOLD/allowed/forbidden 을 풀어쓰지 않았으나 ANU 가 policy_profile_engine boundary_expansion 으로 자동 산출.gate_condition_nameshold_trigger_conditionsallowed_actionsforbidden_actions)noteauto_derived_by_enginer  r  r  r  hold_for_chairhold_reasonz)anu.operational_pilot.execution_result.v1rt  rs  ru  )dispatch_planninganu_key_callbackz5anu.operational_pilot.independent_collector_result.v1)authoritative!executor_self_chain_authoritativez2anu.operational_pilot.runtime_event_loop_result.v1rx  durable_writebackrw  z'anu.operational_pilot.enactor_result.v1ry  r   z,anu.operational_pilot.consolidated_result.v1u7   task-2553+60 9-stage operational pilot — consolidatedr  r   r   z8DEFERRED_TO_INDEPENDENT_ANU_COLLECTOR (callback ANU key )r   r   r   r   u   정상 durable-success 후 잔존 bound ANU safety-net fallback 을 +58 schema-valid·binding 일치 NON_BLOCKING 으로 명시 마크 → OPERATIONAL_PASS (DUPLICATE-only 아님).)r   fallback_acceptance_verdictr   r   duplicate_only_is_not_passr  u3   next pilot backlog (차단성 아님 — 추적만)HIGHz)+58 Codex HIGH proposal-only micro-fix #1next_pilot_backlog)severityrefdispositionMEDIUMz++58 Codex MEDIUM proposal-only micro-fix #2z++58 Codex MEDIUM proposal-only micro-fix #3)trackingitemsblocking) 1_fallback_after_durable_success&2_team_result_contract_subagent_ledger3_plus58_codex_microfix_backlogzNO-ACTION (safety-net only)r3  r   )anu_fallback_at_kstfallback_is_progress_triggernormal_convergence_actionr5  0dead_man_fixed_time_fallback_as_progress_trigger)
rG   r  
all_checksself_chain_verdictr   r   acceptance_required_inclusionsfallback_doctriner  subagent_usage_ledgerz!anu.operational_pilot.decision.v1&OPERATIONAL_PILOT_9_STAGE_AUTO_CHAINEDOPERATIONAL_PILOT_INCOMPLETEu   0 (byte-0 · additive only))	read_onlyno_github_writeno_prno_mergeno_credentialno_branch_commit_pushexisting_artifact_modificationzTexecutor self-collector/self-adjudication/self-Codex/self-dispatch/self-delegation 0)r,  r  actual_dispatchconditions_satisfied_2expected_files_allowlistself_star_zerozanu.operational_pilot.result.v1r   r   u,   normal completion callback cron — ANU key us    로만 발사 (durable-success event). 독립 ANU collector 가 회수·검증·Codex·adjudication·batch 통합.)r   rp   r  r  real_entrypoint_calledr  r  r   r   deliverablesr  next_actionr  r   )r   r   rQ   rangerf   	GOAL_TYPEr  r   r  ANU_FALLBACK_AT_KSTr&  EXPECTED_FILESr   )rM  str  inpr  r   i	pilot_runrg   ber  	gate_holdexecution_resultr{  vr   loop_resultenactor_resultr  consolidatedr,  frW  s                          r$   _build_artifactsr    s1   	XB	\	B
h-C	HB$7F 	6
 A,-!"67!2'*+='>+./E+F/23M/N-0-@
 1a[
 A3KeA3K):;;
1 "#9 :#\-I2 X,z
"C	%r	*	0bB=
 .2%(WW-D%E'',/ggh' WW_5!gg&67
 &(\'&
 &(\2C%D!Cl#ABFF xL.c(m	!
!: 	?
Q"& "'=r B#%66*CR#H66"3R8VV$7<I 	=
 X,  \xL 	I
 HHJ
'DAq1a4
' -2 	F
 X, 	R\	K 	;
 X,N 
!	"B@<
< K "#9 :l(*<(8ff$)F #
 G/1)}Y/G2443 (**?'@.2 1 '( R %+J'; %-L'; %-L';" "'0#&+
P $7,1)F'A@A
  !7!9w<L~ 	5
 l =+ #!%).K#
 %)$85%H. 	3
 *)#"& "#9 :(*<(8ff$)#J$23q3!7!9E
 KK  #F* 6?<L>G<L :H?K4<28 }
F (f 4s   K:K".	K(c                   | t         vrt        d|  d      | t        vrt        d|  d      t        | z  }|j                  j                  dd       |j                  t        j                  |dd      d	z   d
       y )Nz	REFUSED: u    not in §6 allowlist (write 0)u2    is static/ledger — runner does not direct-writeT)parentsexist_okF   r  indent
r<   r=   )	r  
SystemExit
EMIT_FILESr)   parentmkdir
write_textr?   dumps)rB   objps      r$   _writer    s    
. 9SE)HIJJ
*uNO
 	
 	s
AHHNN4$N/LL

3U15<w  r#   c                   t        j                  d      }|j                  ddd       |j                  |       }t	        |j
                        }t        |      }|d   }t        t        j                  t        |d	   |d
   rdndd|d   |d   d   d   d   d   |d   d   d   t        |j
                        ddd             |j
                  r$|j                         D ]  \  }}t        ||        |d
   rdS dS )Nr  )descriptionz--emit
store_trueuu   write §6 allowlist artifacts + perform +53 durable-success additive append (default: dry — print only, ZERO write))actionhelpr  r  r  r  r   r   Fr  r  rv  r   r   rw  r  )ro   r  r  r   r  r  r  emitr
  r  r   r	   )argparseArgumentParseradd_argument
parse_argsr  r  r  printr?   r  r   r$  r  r  )argvapnsrM  	artifactsr  rB   r  s           r$   mainr&    s/   		 	 C
B OOD   
t	B
RWW
%C %I	\	B	

"(*+A(B02<0@ff,1X,/28}X/F)00&0( &)]8%<.& RWW !	
( 
ww!) 	HC3	< 1'a'r#   __main__)r0   r   r1   r   )rB   r   returnr   )r(  Dict[str, Any])rF   r)  r(  r)  )r   r)  r(  r)  )r   r)  r(  r)  )r   r)  r'  r$  r(  r)  )rm  r)  r(  r)  )r  r)  r(  r)  )r'  r$  r(  r)  )rM  r)  r(  r)  )rB   r   r  r   r(  None)N)r"  zOptional[List[str]]r(  r   )Br!   
__future__r   r  importlib.utilr&   r?   r-   r  pathlibr   typingr   r   r   r   __file__resolver  r)   r   pathinsertr   r  r   r!  r   r   r   r   r  r   rQ   rR   rS   rT   rU   r  r  RuntimeErrorr   r4   _PRESEED_mn_rpr.   rC   rX   rj   r   r   r   r   r  r/  rY  rp  r  r  r  r  r  r&  r   r  r"   r#   r$   <module>r7     s  <z #    
   , ,H~''*t9CHHHHOOAs4y!
+	+ & & 
	 - -gYa8H7IJ  4 < 6H > (
VL V
"  HC
#++3
@&21h%P"J6aH+$+37++\:z.b3lB<,aH'(T z
TV
 r#   