
    4j                    z   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mZm	Z	 dZ
 e e	d            ZdZd	Zd
ZdZdZdZdddddddZddddZdZd.dZd/dZd0dZd1dZd2dZd2dZd2d Zd2d!Zd3d"Z	 	 	 	 d4d#Zd5d$Zd2d%Z 	 	 	 	 d6d&Z!d2d'Z"	 	 	 	 d7d(Z#d8d)Z$d9d*Z%d2d+Z&d:d;d,Z'e(d-k(  r e) e'             y)<u	  
verify_task2553_closed_accepted_2553plus59.py
  — task-2553 TASK_2553_FINAL_CLOSED_ACCEPTED_MARKER (TRACK D / task-2553+59)
  executor: dev2-team 오딘 (key fedf78d1d09509f5) 1회 한정 — additive only.

목적 (회장 §1/§2)
-----------------
task-2553 callback/profile/batch hardening 라운드를 *additive* CLOSED_ACCEPTED
marker 로 최종 정리한다. 본 스크립트가 **실 entrypoint** 이며(문서-only 금지),
read-only 로 +32~+55 + final closeout + legacy fallback backlog 산출물을 종합해

  1. memory/events/task-2553.closed-accepted.json          (CLOSED_ACCEPTED marker)
  2. memory/reports/task-2553.final-operational-summary.md  (운영 요약)
  3. memory/events/task-2553.remaining-backlog.final_260518.json
        (★기존 remaining-backlog_260518.json(+50) ·
          backlog-addendum-legacy-pending-fallback_260518.json ·
          backlog-low-deadcode-cleanliness_260518.json 무수정 — 별도 additive 통합본)
  4. memory/events/task-2553+59.decision.json
  5. memory/events/task-2553+59.result.json
  6. memory/reports/task-2553+59.md

원칙 (회장 §4/§5/§6/§8)
----------------------
* READ-ONLY CONSUME: 기존 task-2553 전 산출물 · remaining-backlog_260518.json ·
  backlog-addendum · +32~+55 · frozen anchor 6모듈은 byte-0 로 *읽기만* 한다.
  본 스크립트는 어떤 기존 파일도 수정/병합/삭제하지 않는다(additive only).
* Layer A NO-CRON: subprocess / os.system / Popen / cokacdir / cron / dispatch
  호출 0. git 정보는 .git/HEAD / ref 직접 읽기(subprocess 미사용).
* WRITE SURFACE = §4 expected_files allowlist 한정(Track A/B/C DISJOINT).
* pending 항목을 완료로 과장하지 않는다(회장 §5). 미충족은 backlog 에 그대로
  보존: LEGACY_PENDING_FALLBACK_FIRED_AFTER_CONVERGENCE(NON_BLOCKING) +
  dead-code 청결성(LOW). self-chain QUARANTINED · independent ANU
  authoritative 원칙 명시.
* callback (a): 완료 직후 normal completion callback 은 **독립 ANU key
  c119085addb0f8b7(chat 6937032012)로만** 발사. executor self key
  fedf78d1d09509f5 절대 금지(+49 코드 정본). 본 스크립트는 cron 발사를
  수행하지 않으며 callback owner 계약을 산출물에 기록만 한다.

사용
----
    python3 scripts/verify_task2553_closed_accepted_2553plus59.py         [--root /home/jay/workspace] [--out-root <dir>] [--dry-run]

--dry-run 은 검증/종합만 수행하고 write 0(regression 용 — mock-only 시 FAIL).
    )annotationsN)datetimetimezone	timedeltaz/home/jay/workspace	   )hoursz%task/task-2553p1-f1-clean-replacement(20456b5f83fc039f2fd6f50f4b94095c29b41bfbu3   dev2-team 오딘 (key fedf78d1d09509f5) 1회 한정fedf78d1d09509f5c119085addb0f8b7),memory/events/task-2553.closed-accepted.json5memory/reports/task-2553.final-operational-summary.md;memory/events/task-2553.remaining-backlog.final_260518.json5scripts/verify_task2553_closed_accepted_2553plus59.pyz<tests/regression/test_task2553_closed_accepted_2553plus59.py(memory/events/task-2553+59.decision.json&memory/events/task-2553+59.result.jsonmemory/reports/task-2553+59.md@774d550628410d36962c23a7663c4b6dbf72789de7c7fd940871e9ad8280e5ab@364caa11904285657abd716d78c5493b1f8b519318387d0f864fb6a136dca0b4@352ad0f570e55040e7c1e4a32cbfe0f076cbd53529b4db6222a8da1a4bee9cc5@83b3e307c8207c76a3e311c408aab4951373bd317896e51687d3007907b0c3d4@2363e291a0a43884892f5e554f115481a077322bd5caa3000fb75bf5b72bc6be@10529421110b3d2765785b6cf911527c8f5e964b5078fcfa6190fcb86d0f2c0f)z"anu_v3/callback_4tuple_registry.pyz(dispatch/executor_completion_contract.pyz anu_v3/callback_event_trigger.pyz+utils/anu_delegation_completion_callback.pyzanu_v3/policy_profile_engine.pyz$anu_v3/parallel_batch_coordinator.py@57765ebdc794ddc39a4ffc528cf299e5aca9d5e8fbc01f5379fdf40680fd1c70@4e0fb450dd5705527dec079b2d772a8016f221aa6bffe8aa806a5f6dd3cc2642@83350aafd1ec602128b860ad5c6d81c3326303be5b38904501a16e72eb98f919)5memory/events/task-2553.remaining-backlog_260518.jsonLmemory/events/task-2553.backlog-addendum-legacy-pending-fallback_260518.jsonDmemory/events/task-2553-backlog-low-deadcode-cleanliness_260518.json)z4memory/events/task-2553.final-closeout.decision.json2memory/events/task-2553.final-closeout.result.json&memory/events/task-2553+49.result.json&memory/events/task-2553+53.result.jsonz&memory/events/task-2553+54.result.jsonz&memory/events/task-2553+55.result.jsonCmemory/events/task-2553+54.independent-collector-verify_260518.json<memory/events/task-2553+55.anu-collector-verdict_260518.json?memory/events/task-2553.final-consolidated-closeout_260518.json)memory/events/callback_4tuple_index.jsonlMmemory/events/task-2553-4track-ABCD-final-batch-registry-addendum_260518.jsonc                    t        j                         }t        | d      5 t        fdd      D ]  }|j	                  |        	 d d d        |j                         S # 1 sw Y   |j                         S xY w)Nrbc                 &     j                  d      S )Ni   )read)fhs   I/home/jay/workspace/scripts/verify_task2553_closed_accepted_2553plus59.py<lambda>z_sha256.<locals>.<lambda>{   s    "''%.     r.   )hashlibsha256openiterupdate	hexdigest)pathhchunkr+   s      @r,   _sha256r8   x   si    A	dD	 R0#6 	EHHUO	 ;;= ;;=s   &A!!A9c                t    t        | dd      5 }t        j                  |      cd d d        S # 1 sw Y   y xY w)Nrutf-8encoding)r1   jsonload)r5   r+   s     r,   
_read_jsonr@      s0    	dC'	* byy}  s   .7c                 R    t        j                  t              j                  d      S )Nz%Y-%m-%d %H:%M KST)r   nowKSTstrftime r.   r,   _now_kstrF      s    <<%%&:;;r.   c                0    | t         vrt        d|        y )Nu-   write surface violation — not allowlisted: )	ALLOWLISTRuntimeError)rels    r,   _assert_allowlistedrK      s"    
)J3%PQQ r.   c                   i }t         j                         D ]f  \  }}t        j                  j	                  | |      }t        j                  j                  |      s
dd|d||<   Ot        |      }d||||k(  d||<   h |S )NFpresentequalexpectedTrN   rP   actualrO   )FROZEN_BYTE0itemsosr5   joinisfiler8   )rootoutrJ   rP   aprR   s         r,   verify_frozen_byte0r[      s    
C%++- CXWW\\$$ww~~b!#(5hOCH#$v/ACCC Jr.   c           	        i }t         j                         D ]f  \  }}t        j                  j	                  | |      }t        j                  j                  |      s
dd|d||<   Ot        |      }d||||k(  d||<   h i }g }t        D ]k  }t        j                  j	                  | |      }t        j                  j                  |      rdt        |      d||<   T|j                  |       ddi||<   m |t        d |j                         D              ||| xr  t        d |j                         D              d	S )
uC   기존 산출물 byte-0 정적 점검(read-only consume·수정 0).FrM   TrQ   )rN   observed_sha256rN   c              3  >   K   | ]  }|j                  d         ywrO   Nget.0vs     r,   	<genexpr>z(verify_consumed_byte0.<locals>.<genexpr>   s     H1gH   c              3  >   K   | ]  }|j                  d         yw)rN   Nr`   rb   s     r,   re   z(verify_consumed_byte0.<locals>.<genexpr>   s      -7!"AEE)-7rf   )pinnedpinned_all_equalpresent_onlypresent_only_missingall_present)CONSUMED_PINNEDrT   rU   r5   rV   rW   r8   CONSUMED_PRESENT_ONLYappendallvalues)rX   rh   rJ   rP   rZ   rR   rN   missings           r,   verify_consumed_byte0rs      s8   F(..0 FXWW\\$$ww~~b!&+eRF3K"&H!'&H2DFsF GG$ .WW\\$$77>>"'+LGCLNN3%u-GCL. HHH '# 7 -7&,mmo-7 *7 r.   c                8   t         j                  j                  | dd      }dx}}	 t        |dd      5 }|j	                         j                         }ddd       j                  d      rc|j                  dd	      d	   j                         }|j                  d
      r|t        d
      d n|}t         j                  j                  | d|      }t         j                  j                  |      r6t        |dd      5 }|j	                         j                         }ddd       nt         j                  j                  | dd      }	t         j                  j                  |	      rkt        |	dd      5 }
|
D ]L  }|j                         }|j                  |      s%|j                  d      r7|j                  dd	      d   } n ddd       n|}|||t        k(  |t        k(  dS # 1 sw Y   xY w# 1 sw Y   +xY w# 1 sw Y   7xY w# t        $ r Y Ew xY w)u7   subprocess 미사용 — .git/HEAD + ref 직접 읽기.z.gitHEADNr:   r;   r<   zref:    zrefs/heads/zpacked-refs#r   )branchhead_shabranch_matches_expectedhead_matches_expected)rU   r5   rV   r1   r*   strip
startswithsplitlenrW   endswithOSErrorEXPECTED_GIT_BRANCHEXPECTED_GIT_HEAD)rX   	head_pathry   shar+   headrefref_pathrfpackedpflines               r,   read_git_invariantr      s   T662IFS)S73 	%r779??$D	%??6"**S!$Q'--/C6 #m,-.<? ww||D&#6Hww~~h'(C': ,b'')//+C, , dFMB77>>&)fcG< &$& &D#'::<D#}}S1$//#:N&*jja&8&; %	&& & C #)-@#@!$(9!9	 /	% 	%, ,
& &  sf   H G(B,H  G5AH 6'HH0HH (G2-H 5G>:H H
H 	HHc                   d}t         j                  j                  | |      }i }t         j                  j                  |      rt	        |dd      5 }|D ]  }|j                         }|s	 t        j                  |      }|j                  d      dk(  sA|j                  d      |j                  d      |j                  d	      |j                  d
      |j                  d      |j                  d      |j                  d      d||j                  d      <    	 ddd       |t        d |D              |dS # t        j                  t        f$ r Y w xY w# 1 sw Y   ?xY w)u8   +44 durable 4-tuple append-only ledger read-only 집계.r%   r:   r;   r<   schemazdurable_success_writeback.v1task_idtrack_idauthoritative_verdictterminal_statuscollector_rolecollector_keywriteback_classification)r   r   r   r   r   r   r   Nc              3  &   K   | ]	  }||  y wNrE   rc   ts     r,   re   z(read_durable_registry.<locals>.<genexpr>   s      (9!-A(9s   )ledger_pathdurable_success_tasksdurable_success_by_task)rU   r5   rV   rW   r1   r}   r>   loadsJSONDecodeError	TypeErrorra   sorted)rX   rJ   rZ   durable_successr+   r   recs          r,   read_durable_registryr      sM   
5C	dC	 BO	ww~~b"cG, 	 zz|**T*C 778$(FF#&779#5$'GGJ$7149P1Q+.773D+E*-''2B*C),)AGG$>?	;OCGGI$67	* !' (9&(9 "9#2	  ,,i8 	 	s7   E,D<EBE<EEEEE%c                    | d   fd}ddddddd	d
dddddddddddddddddddddddddddv r |d      nd ddddd  |d!       d" |d#       d$ |d%       dd&d'd(d)dd*d+dd,dd-d.dd/dgS )0uM   +32~+55 CLOSED_ACCEPTED 항목 — 과장 0(미충족은 backlog 로 분리).r   c                J    j                  |       }|rd|d    d|d    S dS )Nzdurable_success_writeback.v1 r   /r   zn/ar`   )tidr:   dss     r,   _dsz(build_closed_accepted_scope.<locals>._ds  sF    FF3K  0,-.a2C0D/EG 	!	!r.   +32uc   executor completion callback MANDATORY rule 코드 강제 복원 (NO-CRON≠callback 금지 정정)CLOSED_ACCEPTEDz&memory/events/task-2553+32.result.json)r   itemstatusevidencez+37/+45u^   cancel-on-success wiring 구축·mock 검증 (live-remove 는 backlog 로 분리 — 과장 0)CLOSED_ACCEPTED_WITH_BACKLOGuH   memory/events/task-2553+37.cancel-audit.json · task-2553+45.result.json+38~+41ze4-track (profile engine seam / coordinator binding / dry-run / cancel-on-success observation harness)z7memory/events/task-2553-batch-ABCD-closeout.result.jsonz+44/+46zGdurable 4-tuple append-only registry + canonical artifact root resolverz)memory/events/task-2553+44_46.result.json+47ziregistry write-back (verified identity binding) + event-trigger (FORBIDDEN_TRIGGER_SOURCE, proposal-only)z>memory/events/task-2553+47.collector-authoritative.result.json+48z]properly-bound 4-tuple isolated e2e (operational=True real-mode seam, real-ops cron delete 0)z>memory/events/task-2553+48.collector-authoritative.result.json+49u   executor self-collector/self-callback/self-adjudication/self-dispatch 구조적 코드 차단 (독립 ANU authoritative 정본)CLOSED_ACCEPTED_AUTHORITATIVEu2   memory/events/task-2553+49.result.json · durable=ztask-2553+49zcode-enforced+50~+52u}   3-track final-closeout collector / operational pilot readiness / profile evidence — 독립 ANU collector AUTHORITATIVE_PASSz+50 task-2553+50u    · +51 task-2553+51u    · +52 task-2553+52+53uj   batch-settle write-back (executor 구현 완료; 독립 ANU adjudication 은 +54/+55 체인으로 roll-up)CLOSED_ACCEPTED_ROLLED_UPr!   +54u   runtime event loop — consolidated_summary_candidate (all-settled & all-AUTHORITATIVE_PASS) · 독립 ANU collector INDEPENDENT_ANU_COLLECTOR_AUTHORITATIVE_PASSr"   +55uh   bounded runtime-event enactor → final-consolidated-closeout (additive only) · ANU_CODEX_CONVERGE_PASSr#   rE   )regr   r   s     @r,   build_closed_accepted_scoper      sb   	&	'B!   C$=	?  $=1$	%
  $F$N	P  $,$@	B   E$	I		K
   E$	I		K
   - 3+9R+?C'_UW		X  $ 3C/0^9L8M N~&')		*   E.=	?   8 3	N	P   R2	G		Ie7 7r.   c                r   i }t        | d      }t        |      xr) |j                  d      dk(  xr |j                  d      du |d<   t        | d      }t        |      xr |j                  d      du |d<   t        | d	      }|xs i j                  d
g       }t        |      xrf |xs i j                  di       j                  d      dk(  xr< |xs i j                  d      dk(  xr" t        |      dkD  xr t	        d |D              }||d<   t        |d         }	h dj                  |	      |d<   t        | d      }
t        |
      xr) |
j                  d      dk(  xr |
j                  d      du |d<   t        | d      }t        |      xr |j                  d      du |d<   t        | d      }t        |      xr dt        |j                  dd            v |d <   t	        d! t        |       j                         D              |d"<   |d#   |d$<   |t	        d% |j                         D              d&S )'uP   closeout 일관성 점검 — CLOSED_ACCEPTED 가 실 산출물과 정합한지.r   final_statusCLOSEOUT_CONSOLIDATED_PASShold_for_chairFplus50_final_closeout_passr    plus49_no_holdr$   consolidated_track_statescloseoutr   CLOSED_OUT_ADDITIVEmerge_pr_branch_credentialblockedr   c              3  L   K   | ]  }|xs i j                  d       dk(    yw)r   AUTHORITATIVE_PASSNr`   r   s     r,   re   z.assess_closeout_consistency.<locals>.<genexpr>Z  s,      % b56:NN %s   "$)final_consolidated_closeout_additive_passr   >   r   r   r    durable_success_50_51_52_presentr"   verdict,INDEPENDENT_ANU_COLLECTOR_AUTHORITATIVE_PASSplus54_independent_anu_passr#   plus55_anu_converge_passr&   r   task_2553_main_round #main_round_closed_accepted_declaredc              3  >   K   | ]  }|j                  d         ywr_   r`   rb   s     r,   re   z.assess_closeout_consistency.<locals>.<genexpr>v  s      +Dg+Drf   frozen_byte0_all_equalri   consumed_pinned_all_equalc              3  V   K   | ]!  }t        |t              r|n
t        |       # y wr   )
isinstanceboolrb   s     r,   re   z.assess_closeout_consistency.<locals>.<genexpr>|  s)      L67At$A$q'1Ls   '))checksall_consistent)

_safe_jsonr   ra   r   rp   setissubsetstrr[   rq   )rX   r   consumedr   fcp49fcc
fcc_tracksfcc_okr   p54p55reg4s                r,   assess_closeout_consistencyr   D  s    F	DN	OBR 	.RVVN+/KK 	.FF#$- '( TC
DC#CyOSWW5E-F%-OF
OQC)!<bAJS	 	%YBOOJ+//9 !	% YBOO89YF	% 
Oa		%
  %#% %  ;AF67	S()	*B288@ -. MOC 	S	 	/GGI"PP	/GG$%. ()
 LNC 	S	8cgg./58 %& WYD 	T
 	2(CHH+R0-2 2 01 (+ +D 3D 9 @ @ B+D (DF#$*23E*FF&'  L;A==?L L r.   c                    t         j                  j                  | |      }t         j                  j                  |      sy 	 t	        |      S # t
        j                  t        f$ r Y y w xY wr   )rU   r5   rV   rW   r@   r>   r   r   )rX   rJ   rZ   s      r,   r   r     sU    	dC	 B77>>""~  '* s   
A A)(A)c                   d}d}d}t        | |      }t        | |      }t        | |      }ddt               dd|t        j                  j	                  t        j                  j                  | |            r)t        t        j                  j                  | |            nd|d	|t        j                  j	                  t        j                  j                  | |            r)t        t        j                  j                  | |            nd|d	|t        j                  j	                  t        j                  j                  | |            r)t        t        j                  j                  | |            nd|d	d
ddd|xs i j                  di       j                  dd      ddgddd|xs i j                  dd      dg|xs i j                  dg       |xs i j                  dg       dd|xs i j                  dd      dd d!d"
S )#u   기존 3 backlog 산출물을 *무수정* 으로 별도 통합(회장 §2).

    원천 파일은 read-only 로 그대로 임베드한다(수정/요약/삭제 0). 본 통합본은
    별도 additive 파일이며 원천을 대체하지 않는다.
    r   r   r   z$task-2553.remaining-backlog.final.v1u>   ADDITIVE_CONSOLIDATION (원천 무수정 — 별도 통합본)z$task-2553+59 TRACK D (additive only)u\  회장 §2 — 기존 task-2553.remaining-backlog_260518.json(+50) · backlog-addendum-legacy-pending-fallback_260518.json · backlog-low-deadcode-cleanliness_260518.json 무수정. 본 파일은 별도 additive 통합 view 이며 원천을 대체하지 않는다. pending 항목 완료 과장 0 — 미충족은 OPEN/NON_BLOCKING 그대로 보존.N)r5   r0   embedded_verbatim)primary_backlog legacy_pending_fallback_addendumdeadcode_cleanliness_low/LEGACY_PENDING_FALLBACK_FIRED_AFTER_CONVERGENCEu8   NON_BLOCKING (실패 아님 · legacy safety-net 잔여)OPEN_NON_BLOCKINGr   summaryz1see source_files.legacy_pending_fallback_addendumu   cancel-on-success live-remove adoption(+37/+45 후속 별도 task) — dead-man=safety net 정상 발화·차단성 결함 아님)idseverityr   r   resolution_pathDEAD_CODE_CLEANLINESS_CANDIDATEu)   LOW (긴급 아님 — 후순위 backlog)TRACKED_NO_ACTIONtitleuI   callback write-back idempotency / guard 모듈 dead-code 청결성 후보)r   r   r   r   backlogdoctrine_settled_no_repeat)non_blockinglowcarried_from_primary_backlogr   u   pending → 완료 과장 0. cancel-on-success live-remove 미적용은 backlog 로 정직 보존(NON_BLOCKING). +53/+54/+55 는 독립 ANU adjudication 체인으로 roll-up 됐으며 미검증 항목을 완료로 표기하지 않음.highest_priority_openu<   BL-1 (+44_46 tri-state probe 경화 — MEDIUM non-blocking))	principler  FT)
r   kindts_kstproduced_bynotesource_filesconsolidated_remainingoverclaim_zeror   no_actor_attribution_change)r   rF   rU   r5   rW   rV   r8   ra   )rX   src_main_relsrc_add_relsrc_dead_relsrc_mainsrc_addsrc_deads          r,   build_remaining_backlog_finalr    s    KLTKML$-H{+G$-H 9P*=X %77>>"'',,t\"BC ""'',,t\"BCIM%-	  $77>>"'',,t["AB ""'',,t["ABHL%,	1 %77>>"'',,t\"BC ""'',,t\"BCIM%-	)
. L Z1 '22262>BB!#V X)e	 < K1 (B33 "< =		 .6^,@,@B,O+3>r*>*>,b+21#
8E '/n"%9%9'N&P
  '+GD Dr.   c                   t        d | j                         D              }i ddddddddddddd	dd
dddddd| d|d    d|d    d|d    d|d    d|d    }t        |j                               }|||sddS ddS )Nc              3  >   K   | ]  }|j                  d         ywr_   r`   rb   s     r,   re   zassess_hold.<locals>.<genexpr>  s     <qAEE'N<rf   	critical7Fcodex_unresolved_high_criticalcredential_permission_expansion-self_callback_collector_adjudication_dispatchcallback_owner_not_anu_keyauthoritative_anu_weakened.fallback_deadman_fixedtime_as_progress_trigger#existing_artifact_mutation_requireddocumentation_only_attempt expected_files_overlap_track_abcfrozen_byte0_brokenconsumed_byte0_driftri   consumed_artifact_missingrl   git_branch_driftr{   git_head_driftr|   closeout_inconsistentr   ul   §6 HOLD 트리거 전수 non-operative — additive 종합, ANU-Codex loop 자동 수렴, consolidated onlyu+   HOLD 조건 적중 — 회장 보고 필요)r   triggersr   )rp   rq   any)frozengitr   consistency	frozen_okr$  holds          r,   assess_holdr+    sG   <FMMO<<IU(% 	*5 	8	
 	%e 	%e 	9% 	.u 	%e 	+E 	9} 	H-?$@ @ 	$-)@%@ 	$= >> 	c"9::  	 [1A%B!B!H$ x !D  F 
 &S r.   c                   t        |       }t        |       }t        |       }t        |       }t	        |      }t        | ||      }t        ||||      }t        |       }|d   |d   |d   |d   |t        d |j                         D              |ddddddd}	dd	d
dt         ddd
dt         dd}
i dddddt               dddddt        ddd|ddd d!d"d#d$|
d%dd&|d'd(t         d)t         d*d+t        t        d,d-d.d/|	d0|d0   d1|d2di}d3d4t               t        d5d6d7g d8g d9|d'   |d0   ||	dd:}i dd;dd4dt               dt        dd<d=|d0   sd>nd?d0|d0   d@dAdB|d&|dC|dDddEdFddGd$|
d/|	dHdIdJdKdKdKdKdKdLdMdNdOdPddQ}|t        |||      |||t        |||      ||	|t!        |      dRdSS )TNrz   r|   ry   r{   c              3  >   K   | ]  }|j                  d         ywr_   r`   rb   s     r,   re   z"build_artifacts.<locals>.<genexpr>  s     %NaeeGn%Nrf   T)git_headgit_head_matches_expected
git_branchgit_branch_matches_expectedfrozen_byte0r   consumed_byte0expected_files_onlytrack_abc_disjointread_only_consumeno_existing_artifact_mutationadditive_only,no_merge_no_pr_no_branch_no_dispatch_no_cronu_   executor self key 발사 / executor==collector / self-adjudication / self-dispatch / self-Codexu   +49 authoritative_verdict_selector → QUARANTINED · 영구 비권위. self-chain 단독 PASS 확정 금지 (AUTHORITATIVE_VERDICT_PENDING). 코드 강제.)
definitiondispositionz
owner key u5    · role=ANU · executor≠collector · 4-tuple validuc   그 verdict 만 authoritative. precedence: independent FAIL > HOLD > self-chain PASS (fail-closed).u   +44_46/+47/+48/+49/+50~+52/+54/+55 전부 독립 ANU collector 세션 authoritative (executor draft frozen evidence 보존·supersede). executor self key u    발사·collector 0.)
self_chainindependent_anuapplicationr   z#task-2553.closed-accepted.marker.v1marker&TASK_2553_FINAL_CLOSED_ACCEPTED_MARKERr  r   u6   task-2553 (callback/profile/batch hardening 라운드)tracku(   TRACK D (task-2553+59) — additive onlyexecutorround_dispositionr   scope_closed_acceptedremaining_backlog_refr   remaining_backlog_summaryu[   LEGACY_PENDING_FALLBACK_FIRED_AFTER_CONVERGENCE (legacy safety-net 잔여 · 실패 아님)u<   DEAD_CODE_CLEANLINESS_CANDIDATE (긴급 아님 · 후순위))r   r   self_chain_vs_independent_anupending_overclaim_zerocloseout_consistency
callback_auA   완료 직후 normal completion callback cron 을 독립 ANU key u2   (chat 6937032012)로만 발사. executor self key u*    절대 금지 (+49 코드 강제 정본).ANUu<   ANU key·미수신 안전망 한정·진행 트리거 아님z%normal-callback durable-success event)ruler   collector_owner_keyexecutor_self_key_forbiddenfallbacknext_action
invariantsr   hold_assessmentr
  ztask-2553+59.decision.v1ztask-2553+59u=   TRACK D — TASK_2553_FINAL_CLOSED_ACCEPTED_MARKER (additive)$FINAL_CLOSED_ACCEPTED_MARKER_EMITTEDu{   read-only additive 종합 (기존 산출물·frozen·remaining-backlog 원천 무수정 · merge/PR/branch/dispatch/cron 0))r   z+37z+45r   z+44_46r   r   r   r   r   r   r   )	u#   기존 task-2553 산출물 수정 0uD   remaining-backlog_260518.json·backlog-addendum·dead-code 무수정zPR/branch/main write/merge 0u   credential/OWNER PAT 조작 0u/   fallback/dead-man/fixed-time 진행 트리거 0zexecutor self-* 0u   ANU authoritative 약화 0u0   문서-only 완료 0 (실 entrypoint+regression)u   pending 항목 완료 과장 0)r   r   r  rB  rA  decisionmodescope_consumedprohibitions_observed_section5rJ  r   rR  rQ  r
  ztask-2553+59.result.v1zTRACK Dr   CLOSED_ACCEPTED_MARKER_PASSHOLD_FOR_CHAIRr   up  +32~+55 callback/profile/batch hardening 라운드를 additive CLOSED_ACCEPTED marker 로 최종 정리. 기존 산출물·frozen anchor 6/6 byte-0 EQUAL · remaining-backlog 3 원천 무수정 별도 통합 · closeout 일관성 점검 통과 · self-chain QUARANTINED / independent ANU authoritative 명시 · pending 완료 과장 0 · callback=독립 ANU key only.closed_accepted_scopedurable_registryremaining_backlogr   r   )r   r   r   r	  codex_anu_loopu   본 marker=additive read-only 종합 — re-lint 불요(회장 §8 9-R). upstream 전 체인 독립 ANU collector authoritative · Codex GO_READY(HIGH/CRITICAL 0). 미충족 항목은 backlog OPEN/NON_BLOCKING 정직 보존.executor_self_actionsr   )new_dispatch
delegationself_adjudication
self_codexself_collectordocumentation_onlyFr   ug   tests/regression/test_task2553_closed_accepted_2553plus59.py (mock-only FAIL — 실 entrypoint 강제))real_entrypoint
regressionr
  )r*  rQ  r(  scope_count)r   r   r   r   r   r   _meta)r[   rs   r   r   r   r   r+  r  rp   rq   ANU_CALLBACK_OWNER_KEYEXECUTOR_SELF_KEYrF   EXECUTORrender_operational_summaryrender_track_reportr   )rX   r&  r   r'  r   scoper(  r*  backlog_finalcommon_invariantsself_chain_doctrineclosed_acceptedrT  results                 r,   build_artifactsrt    s    &F$T*H
T
"C

%C',E-dCBKvsHk:D1$7M 
O%()@%A(m'*+D'E"%%Nfmmo%N"N"#"!)-8<$LN
 ((>'? @C C-
J ---BD*"7":" 	(*" 	K	"
 	;" 	H" 	." 	 " 	 I" 	$JQ&
"  	()<!"" 	!$#"$ 	%"& 	X./ 0**;)< =33 $#9+<VB

'"< 	'="> 	$/0?"@ 	4A"B 	&tC"OJ -!*P:HI+
 &l3/0''+/H4,*,>, 	(*, 	H	,
 	, 	 $%5 6 7., 	$/0, 	," 	 #,$ 	%,& 	C',( 	MM4"
),6 	()<7,8 	'9,: 	=,D 	 QQq"
E,L 	eM,N SD (,W,F^ 9H&[I4<28>+&u:	
 r.   c                   | d   }g }|j                   } |d        |d        |d        |d        |dt        | d         j                          d        |d        |d	        |d       | d
   D ]  } |d|d    d|d    d|d    d         |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |dt         d        |d        |d        |d        |d        |d|d    d|d    d |d!    d"|d#    d$	        |d%|d&    d        |d'|d(   d)    d        |d*        |d        |d+        |d       |d,   j	                         D ]  \  }} |d-| d.t        |       d         |d/|d0    d        |d        |d1        |d        |d2d3j                  |d4         xs d5 d        |d        |d6        |d        |d7t         d8        |d9t         d:        |d       d;j                  |      d;z   S )<NrQ  u;   # task-2553 — FINAL operational summary (CLOSED_ACCEPTED)r   uk   > TRACK D (task-2553+59) · executor: dev2-team 오딘 (key fedf78d1d09509f5) 1회 한정 — additive onlyuk   > 기존 +32~+55 산출물 · frozen anchor · remaining-backlog 원천 byte-0 read-only consume (수정 0)u>   > round_disposition: **CLOSED_ACCEPTED** · hold_for_chair: **r   z**z%## 1. CLOSED_ACCEPTED scope (+32~+55)rD  z- **r   u   ** — r   u    · `r   `u1   ## 2. 잔여 backlog (과장 0 — 정직 보존)u  - **NON_BLOCKING** — `LEGACY_PENDING_FALLBACK_FIRED_AFTER_CONVERGENCE`: normal callback 수렴 후에도 bound dead-man fallback 발화 → NO-ACTION/DUPLICATE. legacy safety-net 잔여(실패 아님). 해소=cancel-on-success live-remove adoption(+37/+45 후속 별도 task).u   - **LOW** — `DEAD_CODE_CLEANLINESS_CANDIDATE`: callback write-back idempotency / guard 모듈 dead-code 청결성 후보. 긴급 아님 · 후순위.u[   - 원천 무수정 통합본: `memory/events/task-2553.remaining-backlog.final_260518.json`z=## 3. self-chain QUARANTINED vs independent ANU authoritativeu   - self-chain(executor self key / executor==collector / self-*) → +49 코드 강제 **QUARANTINED · 영구 비권위** (단독 PASS 확정 금지).z- independent ANU(owner key `u[   ` · role=ANU · executor≠collector) verdict 만 authoritative · fail-closed precedence.u   - +44_46/+47/+48/+49/+50~+52/+54/+55 전부 독립 ANU collector authoritative (executor draft frozen evidence 보존·supersede).u   ## 4. 불변식z- git HEAD `r.  z` (expected match: r/  u   ) · branch `r0  z
` (match: r1  )u,   - frozen anchor 6모듈 byte-0 all EQUAL: **r   u4   - remaining-backlog 3 원천 byte-0 pinned EQUAL: **r3  ri   u   - additive only · 기존 산출물 무수정 · merge/PR/branch/dispatch/cron 0 · §4 allowlist 한정 · Track A/B/C DISJOINTu   ## 5. closeout 일관성 점검r   z- `u   ` → **z- **all_consistent: r   z6## 6. durable success registry (+44 ledger, read-only)z'- durable_success_writeback.v1 tasks: `z, r   noneu*   ## 7. callback (a) — 독립 ANU key onlyu/   - normal completion callback = 독립 ANU key `z`(chat 6937032012) **only**.z- executor self key `uj   ` 발사 절대 금지 (+49 코드 강제 정본). ANU fallback=안전망 한정·진행 트리거 아님.
)ro   r   lowerri  rT   r   rV   rj  )	r?  r   r(  invLaskrd   s	            r,   rl  rl    s0   

C
A	ACDbE = > , - 	v&'(..0
15 6bE-.bE+, B	D5
'!F)E!H+a
@ABbE9:bE : ;  [ \ F GbEEFbE [ \%&<%= >S S T J KbEbES_%%8	(	)*-L8I7J K234A7 8  	'(
)- . 	 !34
5R9 : 8 9bE'(bEH%++- (1	Cs(47)2
&'([)9:;2>?bE>?bE 	

))C/0
1
;V	<A? @bE23bE 	

 	!!=? @/0 1\ \ ]bE99Q<$r.   c           	        g }|j                   } |d        |d        |d        |d|d    dt        |d         j                          d|d	            |d        |d
        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |dt         dt         d        |d        |d        |d        |d        |d       dj                  |      dz   S )NuB   # task-2553+59 — TRACK D: TASK_2553_FINAL_CLOSED_ACCEPTED_MARKERr   uP   > executor: dev2-team 오딘 (key fedf78d1d09509f5) 1회 한정 · additive onlyz> final_status: **r   u   ** · hold_for_chair: **r   u   ** · r   u   ## 산출 (§2)zI- `memory/events/task-2553.closed-accepted.json` (CLOSED_ACCEPTED marker)z9- `memory/reports/task-2553.final-operational-summary.md`uc   - `memory/events/task-2553.remaining-backlog.final_260518.json` (원천 무수정 별도 통합본)ux   - `scripts/verify_task2553_closed_accepted_2553plus59.py` (실 entrypoint · closeout 일관성 · byte-0 정적 점검)zQ- `tests/regression/test_task2553_closed_accepted_2553plus59.py` (mock-only FAIL)uY   - `memory/events/task-2553+59.{decision,result}.json` · `memory/reports/task-2553+59.md`u   ## 정리 (§3)ur  - **CLOSED_ACCEPTED**: +32 callback restore / +37·+45 cancel-on-success(wiring·mock, live-remove backlog) / +38~+41 4트랙 / +44·+46 durable registry·resolver / +47 write-back·event-trigger / +48 properly-bound e2e / +49 self-collector 코드 차단(독립 ANU 정본) / +50~+52 3트랙 / +53 batch-settle write-back / +54 runtime event loop / +55 bounded enactor.uo   - **잔여 backlog**: LEGACY_PENDING_FALLBACK_FIRED_AFTER_CONVERGENCE (NON_BLOCKING) + dead-code 청결성 LOW.uo   - self-chain **QUARANTINED** · independent ANU **authoritative** 원칙 명시 · pending 완료 과장 **0**.u(   ## 권한 경계 / executor self 0 (§5)us   - 기존 task-2553 산출물·remaining-backlog 원천·+32~+55·frozen anchor byte-0 read-only consume (수정 0).u   - merge/PR/branch/main write/credential/dispatch/cron 0. executor 자가심사·자가Codex·자가collector·신규 dispatch·delegation 0.u=   - 완료 직후 normal completion callback = 독립 ANU key `u7   `(chat 6937032012)로만 발사 — executor self key `u&   ` 발사 0 (+49 코드 강제 정본).u
   ## §8 9-Ru   - Codex lint GO_READY (HIGH/CRITICAL 0) · expected_files 4-track DISJOINT · shared invariant 보존 · read-only/additive · 문서-only 금지(실 entrypoint+regression mock-only FAIL) · re-lint 불요.ry  )ro   r   rz  ri  rj  rV   )r?  rs  r*  r|  r}  s        r,   rm  rm    s   
A	AJKbE  6.12 3v&'(..0
1Y7HJ KbEbE ! "AB , - G H   ) *bEbE C D  2 3 6 7bE01bE 4 5    	

 	! "$%%KM N bElObE L M bE99Q<$r.   c                z   g }|j                         D ]  \  }}|j                  d      rt        |       t        j                  j                  | |      }t        j                  t        j                  j                  |      d       |j                  d      r)t        |dd      5 }|j                  |       d d d        nAt        |dd      5 }t        j                  ||dd	
       |j                  d       d d d        |j                  |        t        |      S # 1 sw Y   (xY w# 1 sw Y   4xY w)N_T)exist_okz.mdwr;   r<   F   ensure_asciiindentry  )rT   r~   rK   rU   r5   rV   makedirsdirnamer   r1   writer>   dumpro   r   )out_rootproducedwrittenrJ   payloadrZ   r+   s          r,   write_outputsr  3  s   G ( W>>#C WW\\(C(
BGGOOB'$7<<b#0 "B!" " b#0 B		'2E!D 	s '?" " s   *D%+D1%D.	1D:	c                    t        |       S )uG   실 entrypoint 핵심 — read-only 종합 + 산출물 빌드(write 0).)rt  )rX   s    r,   collectr  F  s    4  r.   c                   t        j                  d      }|j                  dt        d       |j                  dd d       |j                  dd	d
       |j	                  |       }|j
                  }|j                  xs |}t        |      }|j                  di       }|j                  rt        t        j                  d|j                  di       j                  d      |j                  di       j                  d      |j                  di       j                  d      |j                  d      ddd             yt        ||      }t        t        j                  d||j                  di       j                  d      |j                  di       j                  d      |j                  di       j                  d      ddd             y)Nz:task-2553 FINAL CLOSED_ACCEPTED marker (TRACK D, additive))descriptionz--rootz&canonical workspace root (read source))defaulthelpz
--out-rootzoutput root (default = --root)z	--dry-run
store_trueu&   검증/종합만, write 0 (regression))actionr  rh  Tr*  r   rQ  r   r(  r   rg  )dry_runr   r   closeout_all_consistentrg  Fr  r  r   ok)r   r  r   r   r  )argparseArgumentParseradd_argumentCANONICAL_ROOT
parse_argsrX   r  r  ra   r  printr>   dumpsr  )argvpargsrX   r  r  metar  s           r,   mainr  K  s   P	RANN8^@  BNN<8  :NN;|@  B<<D99D}}$Ht}H<<$D||djj"hhvr2667GHr*../GH+//0@A88M2
 a) 	* Hh/G	$**((62.223CDHH\2&**+CDHH]B'++,<= !% & r.   __main__)r5   r   returnr   )r5   r   )r  r   )rJ   r   r  None)rX   r   r  dict)r   r  r  list)rX   r   r   r  r   r  r  r  )rX   r   rJ   r   )
r&  r  r'  r  r   r  r(  r  r  r  )r?  r  r   r  r(  r  r  r   )r?  r  rs  r  r*  r  r  r   )r  r   r  r  r  r  r   )r  int)*__doc__
__future__r   r  r/   r>   rU   r   r   r   r  rC   r   r   rk  rj  ri  rH   rS   rm   rn   r8   r@   rF   rK   r[   rs   r   r   r   r   r   r  r+  rt  rl  rm  r  r  r  __name__
SystemExitrE   r.   r,   <module>r     sM  ,Z #    	 2 2&yq!"= > @& + 		 	KJJJJJ( 	KJJ  
<R

<!HFAH:*.:37:zSn!&*@k\E,0E58EP6t&!
#L z
TV
 r.   