
    PJj2              
         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mZ  ee	      j                         j                  j                  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 ddlmZmZmZmZ ddlmZmZ ed	z  d
z  Zedz  Zedz  Z edz  Z!dZ"dZ#ddddde#dddde"dZ$d!dZ%d"dZ&d#dZ'd$dZ(d%dZ)d&d'dZ*e+d k(  r e, e*             y)(uQ  scripts/run_cancel_on_success_live_adoption_2604.py

task-2604 Track A — CANCEL_ON_SUCCESS LIVE ADOPTION 실 entrypoint
(메커니즘 단독 호출점). 문서-only 금지 — 본 CLI 가 실 결선 진입점이다.

read-only consume: +9a/+23/+25/+44/+45/+48 frozen 모듈을 read-only import.
``utils/anu_delegation_completion_callback.py`` 등 frozen anchor byte-0
무수정. callback_4tuple_index.jsonl(공유 durable·track 미소유)은 절대
직접 write 0 — operational 모드는 read-only consume, self-proof 모드는
**격리 tmp ledger**(실 shared index 무접촉)만 +44/+47 API 로 구성한다.

모드:
  --mode self-proof   (기본·deliverable) 격리 tmp ledger 에 properly-bound
                       task-2604 4-tuple 구성(+48 build_properly_bound_4tuple
                       = +44 guard + +47 write-back, read-only consume) +
                       전용 격리 FakeCronWorld/WorldSpyRemover 주입 → 실
                       모듈 run_cancel_on_success_live_adoption end-to-end
                       → CANCEL_ADOPTED 실증. 실 운영 cron·실 shared
                       callback_4tuple_index.jsonl 무접촉(byte-0).
  --mode operational   실 durable registry(default canonical ledger)
                       read-only consume + 실 lister/remover(dry-run 안전
                       기본 — 실 subprocess 0). task-2604 record 부재 →
                       NON_BLOCKING(보존, 정상 안전 흐름).

산출(§4 allowlist):
  memory/events/task-2604.cancel-adoption-audit.json
  memory/events/task-2604.decision.json
  memory/events/task-2604.result.json
    )annotationsN)Path)ADOPT_CANCEL_ADOPTEDCancelOnSuccessAdoptionResult#run_cancel_on_success_live_adoption)Callback4TupleRegistry)FakeCronWorldProperlyBound4TupleWorldSpyRemoverbuild_properly_bound_4tuple)CallbackInputCallbackTypememoryeventsz$task-2604.cancel-adoption-audit.jsonztask-2604.decision.jsonztask-2604.result.jsonztask-2604-adoption-proofT2604FALLBACKz2026-05-19T00:00:00Zzdispatch firedDISP2604TNORM2604fallback   L5: c119085addb0f8b7)standardizednormal_callback_cron_idfallback_callback_cron_idfallback_rolechat_idanu_key)ts_utcmarker_kinddispatch_cron_idcallback_policy_atask_idc                R    t        | ddt        j                  dddddddd	id

      S )Ndev-simr   r   ok	completedT)result_jsonreportfrozen_anchormatch)
r!   executorr   callback_typecallback_cron_idcron_statustask_statusrequired_closeout_markerspreservation_anchors
dev_sunset)r   r   NORMAL)r!   s    G/home/jay/workspace/scripts/run_cancel_on_success_live_adoption_2604.py_inpr4   Y   s=    #"))#26$"G-w7     c           	        | j                  dd       | | dz  }t        t              }||d<   t        t        d         |d<   |j                  t	        j
                  |      d       | | dz  }|j                  t	        j
                  d	|d
dd      d       | | dz  }|j                  d| dd       | | dz  }|j                  t	        j
                  d|ddd      d       ||||| | dz  | | dz  | | dz  |dS )NTparentsexist_okz.dispatch-fired.jsonr!   r    utf-8encodingz.result.jsonanu_delegation_result_v1r%   PASS)schemar!   statusclassificationz
.report.mdz# uV    report

normal completion callback PASS — properly-bound 4-tuple, durable-success.
z.collector-result.jsoncallback_ack_dedupe_v1)r?   r!   rA   ack_acquiredz.fb-cancelled.jsonz.cancel.lockz.plus23-cancel-audit.json)dispatch_fired_marker_pathresult_json_pathreport_pathcollector_result_marker_pathfallback_cancelled_marker_pathcancel_lock_pathseam_audit_pathmarker)mkdirdictPROOF_MARKER
write_textjsondumps)tmpr!   dfmrK   rjrepcrms          r3   _materializerW   h   st   IIdTI*
7)/0
0C,FF9"&|4G'H"IFNN4::f%N8	','	'BMM

4"%"(		
   
 7):&
&CNN
WI 5 	5  
 7)12
2CNN

2""( $		
   
 '*(+*-7);M0N*NWI\"::G9,E!FF	 	r5   c                z   t        t        j                  d            }t        |dz  t              }|dz  }t        |      }t        t        ddddd	t        d
      }t        ||d       t        t        t        dd
dddg      }t        |d      }t        t        t              |dz  |d   |d   |d   |d   |dz  || |j                  ||d   |d   |d   dt        d      }t        d |j                  D              }	|j                   j#                  dt%        |j&                         d |	 d!| d"       |S )#u   격리 tmp ledger + FakeCronWorld/WorldSpyRemover 로 실 모듈
    end-to-end (CANCEL_ADOPTED 실증). 실 shared index·실 cron byte-0.ztask2604-adoption-proof-prefixclaimz$isolated_callback_4tuple_index.jsonlzDSP-2604-PBr   r#   
6937032012r   r   )r!   dispatch_idr   r*   r   normal_collector_cron_idr   rolez2026-05-19 09:00 KST)ts_kstr   F)idr!   r   r_   firedremovedrc   )r@   
ack.markerrD   rE   rF   rG   rH   rI   rJ   completion_callback_contract_v1)r?   r   )rD   rE   rF   rG   	claim_dirledger_pathadoption_audit_pathcron_listerremoverrH   rI   rJ   callback_contractc              3  r   K   | ]/  }|j                  d       t        k(  xr |j                  d       1 yw)ra   rc   N)getPROOF_FALLBACK_CRON).0es     r3   	<genexpr>z"_run_self_proof.<locals>.<genexpr>   s7       	
d**?quuY/??s   57zself-proof: spy_calls=z cron_removed=z isolated_ledger=u'    (실 shared index·실 cron 무접촉))r   tempfilemkdtemprW   PROOF_TASK_IDr   r
   rn   r   r	   r   r   r4   listeranyentriesnotesappendlencalls)
	out_audittmpdirpathsledgerregistrytupworldspyresultcron_removeds
             r3   _run_self_proofr      s    (""*DEFF')=9E<<F &f-H
!#!+"5	C  #6LM *(%" 		
E %	
2C0]#()E#F12-(%*+I%J7"%LL',-M'N12/07)<
F*   L LL
 SYY 0|n M!("I	K Mr5   c                    t        t        j                  d            }t        |dz  |       }t	        t        |       |dz  |d   |d   |d   |d   |dz  d	|d	d	|d
   |d   |d         S )u   실 durable registry read-only consume + 실 lister/remover(dry-run
    안전 기본 — 실 subprocess 0). task-2604 record 부재 → NON_BLOCKING.ztask2604-adoption-op-rY   r[   rd   rD   rE   rF   rG   NrH   rI   rJ   )rD   rE   rF   rG   rf   rg   rh   ri   rj   rH   rI   rJ   )r   rr   rs   rW   r   r4   )r!   r|   r}   r~   s       r3   _run_operationalr      s     (""*ABCF')73E.W#()E#F12-(%*+I%J7"%',-M'N12/0 r5   c                     t        j                  d      } | j                  dddgd       | j                  dt               | j                  d	t	        t
                     | S )
Nz)task-2604 cancel-on-success live adoption)descriptionz--mode
self-proofoperational)choicesdefaultz	--task-id)r   z--out)argparseArgumentParseradd_argumentrt   strADOPTION_AUDIT_OUT)ps    r3   build_parserr      sc    ?	A NN}-  
 NN;N6NN7C(:$;N<Hr5   c                   t               j                  |       }t        |j                        }|j                  dk(  rt        |      }nt        |j                  |      }|j                  }t        j                  dd       t        j                  t        j                  |dd      d       i d	d
d|d   d|j                  d|j                  d|j                   d|j"                  d|j$                  d|j&                  j(                  d|j*                  d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  |j<                  |j>                  tA        t              |jB                  |jD                  d}tF        j                  t        j                  |dd      d       |j6                  r#|j8                  r|j                  tH        ddfv rdnd}d |d   ||j                  |j                  |j6                  |j8                  |j                   |j"                  |j$                  tA        t              tA        tF              |jJ                  |jD                  d!}tL        j                  t        j                  |dd      d       tO        t        j                  |d"             y#)$Nr   Tr7   F   )ensure_asciiindentr:   r;   r?   ztask-2604.decision_v1r!   modeadoption_classificationcancel_adoptedcancel_failed_classifiednon_blocking_marked*normal_callback_durable_success_identifiedlookup_statusseam_invokedseam_classificationcron_remove_invokedfallback_cancelledremove_resultnormal_success_unchangeddecouple_invariant_helddurable_success)target_cron_idevent_idrh   skip_reasonr   CANCEL_FAILED_CLASSIFIEDNON_BLOCKINGr$   errorztask-2604.result_v1)r?   r!   r@   rA   r   r   r   r   r   r   rh   decision_pathrx   r   )r   r   )(r   
parse_argsr   outr   r   r   r!   adoption_auditEVENTSrL   r   rO   rP   rQ   r   r   r   r   identification
identifiedr   r   r   r   r   r   r   r   r   r   r   r   r   r   DECISION_OUTr   rx   
RESULT_OUTprint)argvargsr|   r   auditdecisionfinal_status
out_results           r3   mainr     s   >$$T*DTXXIyyL  +!$,,	:!!E
LLL-!!

5uQ7' " )5# 			 	"6#A#A	
 	&// 	#F$C$C 	v99 	5!!,, 	-- 	++ 	v99 	v99 	f77  	--!" 	#F$C$C#$ 	"6#A#A%& 	611'( !//OO"#56))--1H4 

8%:W   ++....$*	 	   (# 88		$*$C$C#)#A#A //$*$C$C%99"#56\*--J  

:E!<   
$**Ze
45r5   __main__)r!   r   returnr   )rR   r   r!   r   r   rM   )r|   r   r   r   )r!   r   r|   r   r   r   )r   zargparse.ArgumentParser)N)r   z'list[str] | None'r   int)-__doc__
__future__r   r   rP   sysrr   pathlibr   __file__resolveparent	WORKSPACEr   pathinsert+anu_v3.cancel_on_success_live_adoption_2604r   r   r   anu_v3.callback_4tuple_registryr   !anu_v3.cancel_on_success_live_e2er	   r
   r   r   (utils.anu_delegation_completion_callbackr   r   r   r   r   r   rt   rn   rN   r4   rW   r   r   r   r   __name__
SystemExit r5   r3   <module>r      s-  : #   
  N""$++22	y>!HHOOAs9~& 
 
 
X		(DD 11--
 +% $#"#-%8# &
 &.bAH.Qh z
TV
 r5   