
    4jU                    <   d Z ddlmZ ddlZddlmc mZ ddl	Z
ddlZddlmZ ddlZ ee      j!                         j"                  d   Z ee      ej(                  vr"ej(                  j+                  d ee             dZd$dZ ej0                  d	      d
        Z ej0                  d	      d        Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d%dZ+d Z,ejZ                  j]                  dg d      d         Z/d! Z0d" Z1d# Z2y)&u  regression — task-2605 Track B READ_ONLY_OPERATIONAL_PILOT.

9-stage 실 entrypoint 자동 결선을 *증명* 한다. 본 테스트는 실
entrypoint 를 직접 호출(mock-only/문서-only 금지)하며 read-only —
write 0, 실 dispatch 0, ledger byte-0 (direct write 0).

mock-only FAIL: 음성 케이스로 (i) 미매핑 goal_type fail-closed,
(ii) executor self key callback 구조적 차단, (iii) dead-man/fallback
진행 트리거 하드 FAIL, (iv) self-chain QUARANTINED, (v) Track A
durable-success EVENT 소비 event-driven 분기(A 미완→NON_BLOCKING /
A 완료→cancel-on-success live remove 또는 CANCEL_FAILED_CLASSIFIED)
를 검증한다.
    )annotationsN)Path   %scripts/run_operational_pilot_2605.pyc                   t         j                  j                  | t        t        z        }g }|}|r|j
                  }|}|sdddt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       |rlddt        j                         v st        j                  |      rt        j                  |      ndt        j                        dz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}}t         j                  j                  |      }	|j
                  j!                  |	       |	S )	Nz%(py2)spy2specz#%(py6)s
{%(py6)s = %(py4)s.loader
})py4py6r   assert %(py9)spy9)	importlibutilspec_from_file_locationROOT	PILOT_RELloader@py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanationmodule_from_specexec_module)
modnamer	   @py_assert1@py_assert0@py_assert5@py_format3@py_format7@py_format8@py_format10mods
             C/home/jay/workspace/tests/regression/test_operational_pilot_2605.py_loadr)      s    >>11'4);KLD44DKKK444DDK
..
)
)$
/CKKC J    module)scopec                     t        d      S )N_p2605_pilot)r)    r*   r(   pilotr0   &   s      r*   c                "    | j                         S N)	run_pilot)r0   s    r(   runr4   +   s     ??r*   c                   | j                   }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}d	}| j                   }||v}|st        j                  d
|fd||f      t        j                  |      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}dD ]  }| j                  }||v}|st        j                  d
|fd||f      dt        j                         v st        j
                  |      rt        j                  |      nddt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            dx}} y)u   §4 expected_files allowlist = 정확히 회장 명세 10종.
    callback_4tuple_index.jsonl 은 track 미소유 공유 인프라 — 미포함.)
r   &memory/events/task-2605.pilot-run.jsonz-memory/events/task-2605.selected-profile.jsonz-memory/events/task-2605.execution-result.jsonz9memory/events/task-2605.independent-collector-result.json0memory/events/task-2605.consolidated-result.json/tests/regression/test_operational_pilot_2605.py%memory/events/task-2605.decision.json#memory/events/task-2605.result.jsonmemory/reports/task-2605.md==)z6%(py2)s
{%(py2)s = %(py0)s.EXPECTED_FILES
} == %(py5)sr0   py0r   py5assert %(py7)spy7Nz)memory/events/callback_4tuple_index.jsonlnot in)z:%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.EXPECTED_FILES
}py1py3r@   )r   r8   r;   )z6%(py0)s not in %(py4)s
{%(py4)s = %(py2)s.EMIT_FILES
}static)r?   r   r
   assert %(py6)sr   )
EXPECTED_FILESr   _call_reprcomparer   r   r   r   r   r   
EMIT_FILES)r0   r    @py_assert4@py_assert3@py_format6r%   r!   @py_assert2rH   @py_format5r$   s              r(   #test_expected_files_allowlist_exactrR   1   s      $  $    $                  $       	4##3#	$ 3#   	4           $     
 .
 #---v-----v-------v---v------U---U-----------.r*   c                   | j                   }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}| j                  }d	}||k(  }|st        j                  d|fd
||f      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}| j                   }| j                  }||k7  }|st        j                  d|fd||f      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}| j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}y)uA   callback owner = 독립 ANU key; executor self key 절대 금지.c119085addb0f8b7r<   )z8%(py2)s
{%(py2)s = %(py0)s.ANU_CALLBACK_KEY
} == %(py5)sr0   r>   rA   rB   N1e41a2324a3ccdd0)z9%(py2)s
{%(py2)s = %(py0)s.EXECUTOR_SELF_KEY
} == %(py5)s!=)z_%(py2)s
{%(py2)s = %(py0)s.ANU_CALLBACK_KEY
} != %(py6)s
{%(py6)s = %(py4)s.EXECUTOR_SELF_KEY
}r?   r   r
   r   assert %(py8)spy8z	task-2604)z7%(py2)s
{%(py2)s = %(py0)s.TRACK_A_TASK_ID
} == %(py5)s)ANU_CALLBACK_KEYr   rK   r   r   r   r   r   r   EXECUTOR_SELF_KEYTRACK_A_TASK_ID)	r0   r    rM   rN   rO   r%   r"   r$   @py_format9s	            r(   >test_callback_owner_is_independent_anu_executor_self_forbiddenr_   M   s   !!7%77!%77777!%777777757775777!777%77777777""8&88"&88888"&888888858885888"888&88888888!!<U%<%<<!%<<<<<!%<<<<<<<5<<<5<<<!<<<<<<U<<<U<<<%<<<<<<<<  /K/ K//// K//////5///5/// ///K///////r*   c                   | d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}}|d
   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}}|d   j                         D ]  \  }}d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }
t        j                  | d      dz   d|
iz  }t        t        j                  |            d	x}	} y	)uA   9-stage 가 한 입력 short read-only goal 으로 자동 결선.
evaluationauto_chained_9_stageTisz%(py1)s is %(py4)srF   r
   rI   r   N
all_passedchecks)z%(py0)s is %(py3)sok)r?   rG   z failedz
>assert %(py5)sr@   )
r   rK   r   r   r   itemsr   r   r   _format_assertmsg)r4   evr!   rN   rP   rQ   r$   nameri   r    @py_format4rO   s               r(   test_nine_stage_auto_chainedro   U   s8   	\	B$%--%----%---%----------l#t#t####t######t#######xL&&( ,b+rTz+++rT++++++r+++r+++T+++dV7+++++++,r*   c                   | d   d   }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }|j
                  }d} ||      }d}	||	k7  }
|
st        j                  d|
fd||	f      t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d
x}x}x}x}x}
}	y
)uF   STAGE1 — 회장 미지정 gate/HOLD/allowed/forbidden 자동 산출.stagesstage1statusRESOLVEDr<   z%(py1)s == %(py4)srf   rI   r   Nprofile_boundTrc   re   unknown_goal_type_resolutionrV   )zJ%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.get
}(%(py5)s)
} != %(py10)s)rF   rG   r@   rB   py10assert %(py12)spy12)r   rK   r   r   r   get)r4   s1r!   rN   rP   rQ   r$   rM   @py_assert6@py_assert9@py_assert8@py_format11@py_format13s                r(   6test_stage1_profile_auto_resolved_without_chair_detailr   ^   sE   	Xx	 Bh<%:%<:%%%%<:%%%<%%%:%%%%%%%o&$&$&&&&$&&&&&&$&&&&&&&,-I-11I(I1(;IzI;zIIII;zIII-III1III(III;IIIzIIIIIIIIr*   c                   | d   d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)u7   STAGE2 — executor self key callback 구조적 차단.rq   stage2anu_key_registration_allowedTrc   re   rf   rI   r   Nself_key_registration_allowedF2self_key_assert_raised_CallbackRegistrationBlockedr   rK   r   r   r   )r4   s2r!   rN   rP   rQ   r$   s          r(   %test_stage2_anu_key_contract_enforcedr   f   s	   	Xx	 B,-55-5555-555-5555555555-.7%7.%7777.%777.777%7777777BCKtKCtKKKKCtKKKCKKKtKKKKKKKr*   c                   | d   d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)u>   STAGE4 — executor self collector = SELF_COLLECTOR_FORBIDDEN.rq   stage4!executor_self_collector_forbiddenTrc   re   rf   rI   r   Nindependent_anu_collector_okr   )r4   s4r!   rN   rP   rQ   r$   s          r(   -test_stage4_executor_self_collector_forbiddenr   n   s    	Xx	 B12:d:2d::::2d:::2:::d:::::::,-55-5555-555-5555555555r*   c                   | d   d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)uD   STAGE5 — authoritative 는 독립 ANU 만; self-chain QUARANTINED.rq   stage5authoritative_passTrc   re   rf   rI   r   Nself_chain_quarantinedexecutor_self_collectorFr   )r4   s5r!   rN   rP   rQ   r$   s          r(   @test_stage5_independent_anu_authoritative_self_chain_quarantinedr   u   s	   	Xx	 B"#+t+#t++++#t+++#+++t+++++++&'/4/'4////'4///'///4///////'(1E1(E1111(E111(111E1111111r*   c                @
   | d   d   }|d   }|d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   dk(  r|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}d}|d   d   }||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}y|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|d   d    }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}y)!u   STAGE5 — acceptance = Track A durable-success EVENT 소비
    (event-driven, NOT fixed-time/dead-man). A 미완→NON_BLOCKING(b)
    OPERATIONAL_PASS / A 완료→cancel-on-success live remove 또는
    CANCEL_FAILED_CLASSIFIED.rq   r   track_a_event_consumptionfallback_acceptanceevent_driven_on_track_aTrc   re   rf   rI   r   Nevent_drivenfixed_time_or_dead_man_usedFtrack_a_statusA_INCOMPLETE	criterionz'(b) REGISTRY_NON_BLOCKING_EXPLICIT_MARKr<   ru   verdictOPERATIONAL_PASSnon_blocking_mark_schema_validsemantic_binding_okbsatisfied_criterioninz%(py1)s in %(py4)s
A_COMPLETEbranch+cancel_on_success_live_remove_or_classifiedr   )	r4   r   tafbr!   rN   rP   rQ   r$   s	            r(   .test_stage5_acceptance_event_driven_on_track_ar   }   s   
 
Xx	 B	'	(B	!	"B'(0D0(D0000(D000(000D0000000n%%%%%%%%%%%%%%%%%%%+,55,5555,555,5555555555	
~-+K"KK"KKKKK"KKKKKKK"KKKKKKKK)}Y'=+=='+====='+===='===+========23;t;3t;;;;3t;;;3;;;t;;;;;;;'(0D0(D0000(D000(000D0000000:bm$9::s:::::s::::s:::::::::::"#3|3#|3333#|333#333|3333333xLFG	
	
G	
 	
G	
 	
 
	 H	
 	
 
	 	
 	
 	
 	
 	
 	
 	
r*   c                   | d   d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}d}|d   }||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)u   STAGE6 — +53 durable-success write-back **평가만**(read-only).
    실 append 는 독립 ANU collector 소관 — ledger 직접 write 0.rq   stage6durable_success_evaluatedTrc   re   rf   rI   r   Nwriteback_classification)DURABLE_SUCCESS_WRITTENWRITEBACK_IDEMPOTENT_SKIPr   r   write_performedFledger_direct_writer   r<   ru   zindependent ANU collectorapply_deferred_tor   )r4   s6r!   rN   rP   rQ   r$   s          r(   @test_stage6_durable_writeback_evaluated_readonly_no_ledger_writer      s    
Xx	 B)*2d2*d2222*d222*222d2222222()  . ) .   ) .    *   .        )E) E)))) E))) )))E)))))))#$))$))))$)))$))))))))))&A"-@*AA&*AAAAA&*AAAA&AAA*AAAAAAAAr*   c                "   | d   d   }|d   }d}||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   dk(  r|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
y
)un   STAGE7 — Track A EVENT event-driven 소비; dead-man 진행 트리거
    하드 FAIL; fixed-time 미사용.rq   stage7r   )NEXT_ACTION_READYALL_SETTLEDWAITr   r   rf   rI   r   N"event_driven_acceptance_consistentTrc   re   fixed_time_usedFforbidden_trigger_negative	hard_fail%dead_man_signal_observed_not_promotedr   r   track_a_in_events_observed track_a_single_task_result_readyr   )r4   s7r!   rN   rP   rQ   r$   negs           r(   /test_stage7_loop_event_driven_deadman_forbiddenr      su    
Xx	 Bi=HHH=HHHHH=HHHH=HHHHHHHHHHH23;t;3t;;;;3t;;;3;;;t;;;;;;; )E) E)))) E))) )))E)))))))
)
*C{#t#t####t######t#######67?4?74????74???7???4??????? 

~-./858/58888/5888/8885888888845>>5>>>>5>>>5>>>>>>>>>> .r*   c                   | d   d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}|d   d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)uJ   STAGE8 — proposal-only·additive; fallback 진행 트리거 하드 FAIL.rq   stage8actual_write_performedFrc   re   rf   rI   r   Nauto_executedmerge_pr_writer   r<   ru   r   r   Tr   )r4   s8r!   rN   rP   rQ   r$   s          r(   4test_stage8_enactor_proposal_only_fallback_forbiddenr      s`   	Xx	 B&'050'50000'5000'00050000000o'%'%''''%''''''%'''''''$1$1$$$$1$$$$$$1$$$$$$$*+K8@D@8D@@@@8D@@@8@@@D@@@@@@@r*   c                ,   |j                  |       }|d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}d
}|d   }||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}y	)uG   self-chain 산출은 영구 비권위 — authoritative 는 독립 ANU.r7   self_chain_authoritativeFrc   re   rf   rI   r   N%DEFERRED_TO_INDEPENDENT_ANU_COLLECTORauthoritative_selectionr   r   _build_artifactsr   rK   r   r   r   )	r4   r0   artcrr!   rN   rP   rQ   r$   s	            r(   !test_self_chain_not_authoritativer      s    

 
 
%C	?	@B()2U2)U2222)U222)222U22222222 
$%2%  2%   3    	&      r*   c                @   |j                  |       }|d   }|d   }|d   }g }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t	        t        j
                  |	            d	x}x}}d
}|d   }||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t	        t        j
                  |	            d	x}x}}|d   }
|
d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t	        t        j
                  |	            d	x}x}}|
d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t	        t        j
                  |	            d	x}x}}|
d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t	        t        j
                  |	            d	x}x}}y	)uC   회장 §7 — team result contract + subagent usage ledger 강제.r:   subagent_usage_ledgersubagents_usedr<   ru   rf   rI   r   Nu   subagent 미사용declarationr   r   external_boundary_contractteam_result_contractTrc   re   *executor_self_key_callback_collector_countr   'executor_self_dispatch_delegation_countr   )r4   r0   r   resledr!   rN   rP   rQ   r$   ebcs              r(   "test_subagent_usage_ledger_presentr      s   

 
 
%C
3
4C
%
&C &B& B&&&& B&&& &&&B&&&&&&&53}#55#55555#5555555#55555555
*
+C%&.$.&$....&$...&...$.......;<AA<AAAA<AAA<AAAAAAAAAA89>Q>9Q>>>>9Q>>>9>>>Q>>>>>>>r*   c                	   |j                  |       }|d   }|d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}|d   }|j                  }
||
k(  }|st        j                  d|fd||
f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |
      dz  }dd|iz  }t	        t        j
                  |            d
x}x}}
|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}d}|d   }||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }	t	        t        j
                  |	            d
x}x}}y
)uF   §2/§5 — read-only·no PR/merge/credential/branch + ledger write 0.r9   conditions_satisfied_2	read_onlyTrc   re   rf   rI   r   Nno_prno_mergeno_credentialno_branch_commit_pushr   r   r<   ru   shared_infra_not_allowlisted)z5%(py1)s == %(py5)s
{%(py5)s = %(py3)s.SHARED_LEDGER
}r0   rE   rA   rB   hold_for_chairFz(Track A(task-2604) durable-success EVENTacceptance_fallback_criterionr   r   )
r   r   rK   r   r   r   SHARED_LEDGERr   r   r   )r4   r0   r   deccr!   rN   rP   rQ   r$   rM   rO   r%   s                r(   2test_decision_conditions_read_only_no_ledger_writer      sZ   

 
 
%C
5
6C$%A[>!T!>T!!!!>T!!!>!!!T!!!!!!!W::::Z= D =D    =D   =   D       _%%%%%%%%%%%%%%%%%%%$%--%----%---%----------"#(q(#q((((#q(((#(((q(((((((-.E%2E2EE.2EEEEE.2EEEE.EEEEEE%EEE%EEE2EEEEEEEE )E) E)))) E))) )))E)))))))5 +,5,  5,   6    	-      r*   c           
     r   | j                  dd| j                  g d      }| j                  |      }d| j                  dddd| j                  iddd	d
	}| j	                  ||      }|d   }|d   }d}||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            dx}x}}|d   }|d   }d	}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            dx}x}}|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            dx}x}}g }|d   }|j                  }d} ||      }|}|s|d   }d}||k(  }|}|sdt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }|j                  |       |s_t        j                  dfd f      t        j                  |      t        j                  |      d!z  }d"d#|iz  }|j                  |       t        j                  |d      i z  }d$d%|iz  }t        t        j                  |            dx}x}x}x}x}x}x}x}}y)&ut  A 완료 시뮬레이션 — Track A durable-success EVENT 존재 시
    cancel-on-success live remove 또는 CANCEL_FAILED_CLASSIFIED 분기가
    실 entrypoint(cancel_on_success_live_wiring)로 동작함을 증명.
    현 ledger 에 task-2605 fallback record 가 없으므로 분류 처분
    CANCEL_FAILED_CLASSIFIED 가 되어야 한다 (미분류 잔존 아님).gs)goal_idgoal_statement	goal_typeboundaryztest-injected A_COMPLETET   task_idFr   )	real_entrypointtrack_a_task_idshared_ledger_present%track_a_durable_success_event_presenttrack_a_durable_records_counttrack_a_registry_recordr   r   r   r   r   )z!(a) CANCEL_ON_SUCCESS_LIVE_REMOVECANCEL_FAILED_CLASSIFIEDr   r   rf   rI   r   Nr   r   r<   ru   r   rc   re   cancel_dispositionr  &CANCEL_ON_SUCCESS_LIVE_REMOVE_ELIGIBLEzE%(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.startswith
}(%(py7)s)
})rG   r@   rB   r   )z%(py12)s == %(py15)s)rz   py15z%(py17)spy17zassert %(py20)spy20)_stage1_profile_selection	GOAL_TYPE_stage3_executorr]   _stage5_independent_collectorr   rK   r   r   r   
startswithr   r   )r0   r|   s3track_a_completer   r   r!   rN   rP   rQ   r$   brr    rM   r}   r   @py_assert11@py_assert14@py_assert13r&   @py_format16@py_format18@py_format19@py_format21s                           r(   7test_a_complete_branch_classified_when_no_lookup_recordr     sE    
	(	(!		

B 
			#B5 00!%15)*$-u/D/D#E',&
 
	,	,R1A	BB	!	"Bk?   ?    ?               
HB/</<////<//////<///////;<DD<DDDD<DDD<DDDDDDDDDDN2"# N#.. N"N." N  N 	 	!N%MN	!%M	MN NDMI $ N NDMI / N NDMI 	#N NDMI N NGMvNGM N<M<MN	!%MN NDMI	!N NDMI%MN N NGMvNGMN?M~N N N N:M:MN N N Nr*   c                "	   | j                  |      }|d   }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d
   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}t        dd      D ])  }	|d   d|	    d   }
g }d}||
v }|}|sd}||
v }|}|sd}||
v }|}|st        j                  d|fd||
f      t        j                  |      dt        j                         v st        j                  |
      rt        j                  |
      nddz  }dd|iz  }|j                  |       |st        j                  dfd|
f      t        j                  |      dt        j                         v st        j                  |
      rt        j                  |
      nddz  }dd|iz  }|j                  |       |st        j                  dfd|
f      t        j                  |      dt        j                         v st        j                  |
      rt        j                  |
      nddz  }dd |iz  }|j                  |       t        j                  |d      i z  }d!d"|iz  }t	        t        j
                  |            d	x}x}x}x}x}x}x}}, | j                  }t        |t              }|sd#d$t        j                         v st        j                  t              rt        j                  t              nd$d%t        j                         v st        j                  |       rt        j                  |       nd%t        j                  |      d&t        j                         v st        j                  t              rt        j                  t              nd&t        j                  |      d'z  }t	        t        j
                  |            d	x}}y	)(uO   mock-only FAIL — 실 entrypoint 가 호출됨을 증명 (문서-only 금지).r6   	mock_onlyFrc   re   rf   rI   r   Ndocumentation_onlyr   
   rq   stager   anu_v3z	dispatch.scripts.r   z%(py3)s in %(py5)seprG   r@   %(py7)srB   z%(py10)s in %(py12)srx   rz   %(py14)spy14)z%(py17)s in %(py19)s)r  py19z%(py21)spy21zassert %(py24)spy24zXassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.MockOnlyError
}, %(py4)s)
}
issubclassr0   RuntimeError)r?   rF   rG   r
   r   )r   r   rK   r   r   r   ranger   r   r   r   r   MockOnlyErrorr+  r,  )r0   r4   r   prr!   rN   rP   rQ   r$   ir!  r    rM   r~   r  @py_assert16@py_assert18rO   r%   r   @py_format15@py_format20@py_format22@py_format23@py_format25r"   s                             r(   /test_mock_only_is_fail_real_entrypoint_requiredr8    s   

 
 
%C	5	6Bk?#e#?e####?e###?###e#######"#,u,#u,,,,#u,,,#,,,u,,,,,,, 1b\ G]U1#;'(9:FxFx2~FF!2FjFjB6FFFFFx2FFFxFFFFFF2FFF2FFFFFFFFFFFFFFFFFFFFFFFFFFFjBFFFjFFFFFFBFFFBFFFFFFFFFFFFFFFG ))8:)<88888888:888:888888e888e888)888888<888<8888888888r*   c                     g  fd}|fS )u  consolidation seal seam spy 팩토리.

    ``delegate=True`` → 인자를 기록한 뒤 *실* selector
    (``avs.select_authoritative_verdict``) 로 그대로 위임 → 실 entrypoint
    호출을 독립 증명. ``delegate=False`` → 호출만 기록(미위임). 반환되는
    ``calls`` 리스트가 비어 있으면 seam 미경유(=실 selector 미호출) 로
    stage9 회귀가 FAIL 되어야 한다.c                   | t        |      |t        |      d d}j                  |       r| j                  |||      }||d<   |S y )N)avsrecordsr   anu_keys	real_seal)r   r=  r>  )listr   select_authoritative_verdict)r;  r<  r   r=  recsealcallsdelegates         r(   spyz_make_seal_spy.<locals>.spy(  sb    G}X
 	S338 4 D  $CKr*   r/   )rD  rE  rC  s   ` @r(   _make_seal_spyrF    s     E" :r*   c           	     (   t        d      \  }}|j                  |d|       |j                  | d   | d         }t        |      }d}||k(  }|st	        j
                  d|fd||f      d	t        j                         v st	        j                  t              rt	        j                  t              nd	d
t        j                         v st	        j                  |      rt	        j                  |      nd
t	        j                  |      t	        j                  |      dz  }	t	        j                  d      dz   d|	iz  }
t        t	        j                  |
            dx}x}}|d   }|d   }|j                  }||k(  }|st	        j
                  d|fd||f      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      dz  }dd|iz  }t        t	        j                  |            dx}x}}|d   }|j                  g}||k(  }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }	t        t	        j                  |	            dx}x}}|d   }|j                  g}||k7  }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }	t        t	        j                  |	            dx}x}}|d   }t        |      }d}||k(  }|st	        j
                  d|fd||f      d	t        j                         v st	        j                  t              rt	        j                  t              nd	t	        j                  |      t	        j                  |      t	        j                  |      d z  }d!d"|iz  }t        t	        j                  |            dx}x}x}}|d   d   }|j                   }d#}||k(  }|st	        j
                  d|fd$||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      t	        j                  |      d&z  }dd|iz  }t        t	        j                  |            dx}x}}|j"                  }|j                  }||k(  }|st	        j
                  d|fd'||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      d(z  }	d)d|	iz  }
t        t	        j                  |
            dx}x}}|j$                  }|j                  }||k(  }|st	        j
                  d|fd*||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      d(z  }	d)d|	iz  }
t        t	        j                  |
            dx}x}}|j&                  }|j                  }||k(  }|st	        j
                  d|fd+||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      d(z  }	d)d|	iz  }
t        t	        j                  |
            dx}x}}|j(                  }d}||u }|st	        j
                  d,|fd-||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      t	        j                  |      d&z  }dd|iz  }t        t	        j                  |            dx}x}}|j*                  }d.}||k(  }|st	        j
                  d|fd/||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      t	        j                  |      d&z  }dd|iz  }t        t	        j                  |            dx}x}}|d0   }|j,                  }|j                  g} ||      }|j.                  }||k(  }|st	        j
                  d|fd1||f      d%t        j                         v st	        j                  |      rt	        j                  |      nd%t	        j                  |      t	        j                  |      t	        j                  |      d0t        j                         v st	        j                  |      rt	        j                  |      nd0t	        j                  |      d2z  }d3d4|iz  }t        t	        j                  |            dx}x}x}x}}|d5   }|j0                  }t3        ||      }|sd6d7t        j                         v st	        j                  t2              rt	        j                  t2              nd7d5t        j                         v st	        j                  |      rt	        j                  |      nd5d0t        j                         v st	        j                  |      rt	        j                  |      nd0t	        j                  |      t	        j                  |      d8z  }	t        t	        j                  |	            dx}}|j4                  }|j6                  }||k(  }|st	        j
                  d|fd9||f      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      d0t        j                         v st	        j                  |      rt	        j                  |      nd0t	        j                  |      d(z  }	d)d|	iz  }
t        t	        j                  |
            dx}x}}|j8                  }d}||k(  }|st	        j
                  d|fd:||f      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      t	        j                  |      d&z  }dd|iz  }t        t	        j                  |            dx}x}}|j:                  }d}||k\  }|st	        j
                  d;|fd<||f      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      t	        j                  |      d&z  }dd|iz  }t        t	        j                  |            dx}x}}|j<                  }d=}||u }|st	        j
                  d,|fd>||f      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      t	        j                  |      d&z  }dd|iz  }t        t	        j                  |            dx}x}}|d?   }|j>                  }||k(  }|st	        j
                  d|fd@||f      t	        j                  |      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      dz  }dd|iz  }t        t	        j                  |            dx}x}}|dA   }|j4                  }||k(  }|st	        j
                  d|fdB||f      t	        j                  |      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      dz  }dd|iz  }t        t	        j                  |            dx}x}}|dC   }|j:                  }||k(  }|st	        j
                  d|fdD||f      t	        j                  |      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      dz  }dd|iz  }t        t	        j                  |            dx}x}}|dE   }|j8                  }||k(  }|st	        j
                  d|fdF||f      t	        j                  |      d5t        j                         v st	        j                  |      rt	        j                  |      nd5t	        j                  |      dz  }dd|iz  }t        t	        j                  |            dx}x}}|dG   }d}||u }|slt	        j
                  d,|fdH||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }	t        t	        j                  |	            dx}x}}|dI   }d=}||u }|slt	        j
                  d,|fdH||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }	t        t	        j                  |	            dx}x}}dJ}|dK   }||v }|slt	        j
                  dL|fdM||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }	t        t	        j                  |	            dx}x}}y)Nu  STAGE9 옵션 A 강화 — `select_authoritative_verdict` *실제 호출*을
    monkeypatch/spy 로 독립 증명한다 (회장 §4.1·§4.2).

    seam spy 가 ``consolidate_pilot_result`` 가 로드한 *실* avs 모듈로
    위임 → 실 entrypoint 가 *진짜 consolidated self-chain 레코드* 에 대해
    실행됨을 관찰. 통합 결과 dict 의 seal 필드가 실 seal 값에서 *파생*
    됨을 대조(자기보고 플래그만 검증 금지 — §4.2).T)rD  !_consolidation_authoritative_sealrq   track_a_eventr   r<   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenrC  )r?   rF   rG   r   uX   select_authoritative_verdict seam 미경유 — stage9 하드코딩/static-string 회귀z
>assert %(py8)srZ   Nr   r   )z/%(py1)s == %(py5)s
{%(py5)s = %(py3)s.TASK_ID
}r0   rE   rA   rB   r=  ru   rf   rI   r   rV   )z%(py1)s != %(py4)sr<  )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)s)r?   r   r
   rB   r   r   collector_result)z,%(py2)s
{%(py2)s = %(py0)s.kind
} == %(py5)svrr>   )zL%(py2)s
{%(py2)s = %(py0)s.task_id
} == %(py6)s
{%(py6)s = %(py4)s.TASK_ID
}rX   rY   )z[%(py2)s
{%(py2)s = %(py0)s.executor_key
} == %(py6)s
{%(py6)s = %(py4)s.EXECUTOR_SELF_KEY
})z\%(py2)s
{%(py2)s = %(py0)s.collector_key
} == %(py6)s
{%(py6)s = %(py4)s.EXECUTOR_SELF_KEY
}rc   )z@%(py2)s
{%(py2)s = %(py0)s.session_is_executor_self
} is %(py5)sindependent)z6%(py2)s
{%(py2)s = %(py0)s.claimed_origin
} == %(py5)sr;  )z}%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.derived_origin
}(%(py4)s)
} == %(py10)s
{%(py10)s = %(py8)s.ORIGIN_SELF_CHAIN
})r?   r   r
   r   rZ   rx   ry   rz   r>  zgassert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.AuthoritativeSelectionResult
})
}
isinstance)r?   rF   r   r
   r   )zi%(py2)s
{%(py2)s = %(py0)s.classification
} == %(py6)s
{%(py6)s = %(py4)s.AUTHORITATIVE_VERDICT_PENDING
})z=%(py2)s
{%(py2)s = %(py0)s.independent_anu_count
} == %(py5)s>=)z9%(py2)s
{%(py2)s = %(py0)s.quarantined_count
} >= %(py5)sF)z*%(py2)s
{%(py2)s = %(py0)s.ok
} is %(py5)sconsolidation_seal_verdict)z/%(py1)s == %(py5)s
{%(py5)s = %(py3)s.verdict
}!consolidation_seal_classification)z6%(py1)s == %(py5)s
{%(py5)s = %(py3)s.classification
}$consolidation_seal_quarantined_count)z9%(py1)s == %(py5)s
{%(py5)s = %(py3)s.quarantined_count
}(consolidation_seal_independent_anu_count)z=%(py1)s == %(py5)s
{%(py5)s = %(py3)s.independent_anu_count
})consolidation_non_authoritative_confirmedre   r   r   r   r   r   ) rF  setattrconsolidate_pilot_resultrJ  r   rK   r   r   r   r   rk   r   r   TASK_IDr[   r\   kindr   executor_keycollector_keysession_is_executor_selfclaimed_originderived_originORIGIN_SELF_CHAINAuthoritativeSelectionResultrN  classificationAUTHORITATIVE_VERDICT_PENDINGindependent_anu_countquarantined_countri   r   )r4   r0   monkeypatchrE  rC  outrP   r"   rM   r$   r^   r   r!   rO   r%   rN   rQ   r    r}   r&   rL  r;  r~   @py_assert7r   r   r>  s                              r(   @test_stage9_select_authoritative_verdict_real_call_proven_by_spyrh  <  s     .JCBCH

(
(Hs?+C
 u:  :?   :                               	     	aAY<(5==(<=((((<=(((<((((((5(((5(((=(((((((Z=4U3344=44444=4444=44444444444Z=5U4455=55555=5555=55555555555|!3|!!!!!!!!!!!!3!!!3!!!|!!!!!!!!!!!!!	
9aB77(((7(((((7(((((((2(((2(((7(((((((((((::&&:&&&&:&&&&&&2&&&2&&&:&&&&&&&&&&&&&&&&&&&??5e555?55555?555555525552555?555555e555e555555555556u66666666666666626662666666666u666u66666666666&&.$.&$....&$......2...2...&...$.......------------2---2-------------
 E(C
 11223  3 	!  3      	   	   	   3   	4           !       +I!$!A!AB:i!ABBBBBBBB:BBB:BBBBBBiBBBiBBBBBBBBBBBB!ABBBBBBBBBB##Hs'H'HH#'HHHHH#'HHHHHHH9HHH9HHH#HHHHHHsHHHsHHH'HHHHHHHH**/a/*a////*a//////9///9///*///a///////&&+!+&!++++&!++++++9+++9+++&+++!+++++++<< 5 <5    <5      9   9   <   5        +,A	0A0AA,0AAAAA,0AAAA,AAAAAA	AAA	AAA0AAAAAAAA/0##0#	$ 0#   	1           $     
 	23&&3&	' 3&   	4           '     
 	67**7*	+ 7*   	8           +      :;CtC;tCCCC;tCCC;CCCtCCCCCCC)*3e3*e3333*e333*333e33333332 %&2&  2&   3    	'      r*   zcls,qc,iac,vrd,expect_non_auth))rb     r   FAILT)MUT_SENTINEL_CLSi     MUT_SENTINEL_VF)AUTHORITATIVE_PASSr   r   PASSFc                p   |j                  dd      }|j                  d|||j                  dd||dddg      fd}	|j                  |d	|	       |j	                  | d
   | d         }
|
d   }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}|
d   }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}|
d   }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}|
d   }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}|
d   }||u }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}y)u  STAGE9 옵션 A 강화 — 하드코딩 우회 구조 제거 (회장 §4.3).

    seam 이 *임의* selector 결과를 반환하도록 변형하면 통합 결과 dict 가
    그 값을 *그대로 반영* 해야 한다. ``consolidate_pilot_result()`` 가
    stage9 값을 하드코딩하면 본 mutation 대조에서 반드시 FAIL → 하드코딩
    통과 구조가 구조적으로 제거됨을 보증한다.z%anu_v3.authoritative_verdict_selectorz(anu_v3/authoritative_verdict_selector.pyzmutation-sentinelNFmutation)schemar   ra  r   authoritative_verdictauthoritative_source_kindrd  rc  deadman_duplicate_seendeadman_validreasonsc                     ~ ~S r2   r/   )_a_ksentinels     r(   mutzEtest_stage9_hardcoded_consolidation_cannot_pass_mutation.<locals>.mut  s    r*   rH  rq   rI  rQ  r<   )z%(py1)s == %(py3)svrd)rF   rG   zassert %(py5)sr@   rR  clsrS  qcrT  iacrU  rc   )z%(py1)s is %(py3)sexpect_non_auth)
_load_realr`  rX  rV  rW  r   rK   r   r   r   r   r   r   )r4   r0   re  r~  r  r  r}  r  r;  r|  rf  r!   rP   rn   rO   r{  s                  @r(   8test_stage9_hardcoded_consolidation_cannot_pass_mutationr    s}   ( 

/2C //"""&!$ 0 H BCH

(
(Hs?+C
 +,3,3333,333,333333333333333323:3s::::3s:::3::::::s:::s:::::::56<6"<<<<6"<<<6<<<<<<"<<<"<<<<<<<9:A:cAAAA:cAAA:AAAAAAcAAAcAAAAAAA:;N;NNNN;NNN;NNNNNNNNNNNNNNNNr*   c                    d }|j                  |d|       t        j                  t        d      5  |j	                  | d   | d          ddd       y# 1 sw Y   yxY w)u]  STAGE9 옵션 A 강화 — seam(실 selector) 이 critical path 임을 증명.

    seam 을 예외로 대체하면 ``consolidate_pilot_result`` 가 그대로
    전파해야 한다. stage9 가 selector 결과와 무관한 하드코딩 shortcut 을
    가졌다면 예외가 삼켜져 통과할 것이므로, 본 테스트가 그 구조를 차단.c                     ~ ~t        d      )Nseam-on-critical-path-probe)r,  )ry  rz  s     r(   boomz@test_stage9_seam_is_on_critical_path_not_dead_code.<locals>.boom  s    899r*   rH  r  )matchrq   rI  N)rV  pytestraisesr,  rW  )r4   r0   re  r  s       r(   2test_stage9_seam_is_on_critical_path_not_dead_coder    s\    : BDI	|+H	I 
&&M3/	

 
 
s   AAc           	     >   | d   d   }|d   }g }d}||v }|}|rd}||v }	|	}|sXt        j                  d|fd||f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      ndd	z  }
d
d|
iz  }|j                  |       |rt        j                  d	fd|f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            dx}x}x}x}x}}	d}|j                  d      d   }||v}|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d   }d }||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d#   }d$}||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d%   }d }||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d&   }d'}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d(   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d)   }d*}||k\  }|slt        j                  d+|fd,||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d-   }d$}||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d.   }d$}||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}d/}|d0   }||v }|slt        j                  d|fd1||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                  }t        |      }|sd2d3t        j                         v st        j
                  t              rt        j                  t              nd3d4t        j                         v st        j
                  |      rt        j                  |      nd4t        j                  |      t        j                  |      d5z  }
t        t        j                  |
            dx}}|j                  }t        |      }|sd6d3t        j                         v st        j
                  t              rt        j                  t              nd3d4t        j                         v st        j
                  |      rt        j                  |      nd4t        j                  |      t        j                  |      d5z  }
t        t        j                  |
            dx}}|j                  }t        |      }|sd7d3t        j                         v st        j
                  t              rt        j                  t              nd3d4t        j                         v st        j
                  |      rt        j                  |      nd4t        j                  |      t        j                  |      d5z  }
t        t        j                  |
            dx}}| d8   d9   d:   }d }||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                  |       }|d;   }|d<   }|j                   } |       }t#        |      }t%        d*d=      D ch c]  }d>| 	 }}||k(  }|st        j                  d|fd?||f      d@t        j                         v st        j
                  t"              rt        j                  t"              nd@t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dAz  }dBdC|iz  }t        t        j                  |            dx}x}x}x}x}}|d   }|d   }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}dD}|d   }||v}|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|dE   }|dF   }|j                   } |       }t#        |      }t%        d*d=      D ch c]  }d>| 	 }}||k(  }|st        j                  d|fd?||f      d@t        j                         v st        j
                  t"              rt        j                  t"              nd@t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dAz  }dBdC|iz  }t        t        j                  |            dx}x}x}x}x}}|dG   d   }d }||u }|slt        j                  d!|fd"||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}yc c}w c c}w )Hu   STAGE9 — 옵션 B real-entrypoint 계승 계약 (자기보고 *외* spy 증명은
    위 테스트들이 담당; 본 테스트는 형태/계약 계승만 보존).rq   stage9r   r  r  r   r   r!  r"  r#  rB   r$  r%  r&  r'  r   zassert %(py17)sr  Nzstatic string(rC   )z%(py1)s not in %(py4)srf   rI   r   consolidation_entrypointzBanu_v3.authoritative_verdict_selector.select_authoritative_verdictr<   ru   consolidation_sealedTrc   re   r   FrU  rR  rb  rT  rS  r   rO  )z%(py1)s >= %(py4)sr  r  r   r   r   zZassert %(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.consolidate_pilot_result
})
}callabler0   )r?   rF   rG   r@   zWassert %(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s._stage9_consolidation
})
}zcassert %(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s._consolidation_authoritative_seal
})
}ra   rh   $stage9_consolidation_real_entrypointr6   nine_stage_chainr  r  zb%(py8)s
{%(py8)s = %(py0)s(%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.keys
}()
})
} == %(py11)ssetr?   r   r
   r   rZ   py11assert %(py13)spy13z#consolidated result (memory/events/r7   nine_stage_real_entrypointsstage9_consolidation_seal)r   rK   r   r   r   r   r   r   r   r   splitrW  r  _stage9_consolidationrH  r   keysr  r-  )r4   r0   s9r!  r    rP   rM   r!   r~   r  rO   r%   r   r3  r  r  rN   rQ   r$   r   r/  r"   rg  r0  @py_assert10@py_format12@py_format14r   s                               r(   :test_stage9_self_report_contract_and_real_entrypoint_shaper    s
    
Xx	 B		B.8.8r>.j.jB.....8r...8......r...r.......jB...j......B...B..............2"((3-"22?"22222?"2222?222"22222222
%&'&'	' 	&'   	'  '    	 
 $%--%----%---%----------()2U2)U2222)U222)222U22222229:BdB:dBBBB:dBBB:BBBdBBBBBBB12 '2'  2'   3    	(      89>Q>9Q>>>>9Q>>>9>>>Q>>>>>>>45::5::::5:::5::::::::::k?#e#?e####?e###?###e#######"#,u,#u,,,,#u,,,#,,,u,,,,,,,2 
$%2%  2%   3    	&      223823333333383338333333E333E33323333333333//08/0000000080008000000E000E000/0000000000;;<8;<<<<<<<<8<<<8<<<<<<E<<<E<<<;<<<<<<<<<<L(#$JKK	 K   	L         
 
 
%C	5	6B$% %** *, 3,- "1b\2%s2  2- 2   - 2              &    +    -    .   2        h<02/00<00000<0000<000000000000D8D0DDDD0DDD0DDDDDDDDDD	?	@B/0 055 57 378 "1b\=%s=  =8 =   8 =              1    6    8    9   =        )*+ABJdJBdJJJJBdJJJBJJJdJJJJJJJ2=s   6z zc           	     (
   ddl }| j                         }| j                         }|d   }|j                  } |       }t        |      }t	        dd      D ch c]  }d| 	 }	}||	k(  }
|
st        j                  d|
fd||	f      d	t        j                         v st        j                  t              rt        j                  t              nd	t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |	      d
z  }dd|iz  }t        t        j                  |            dx}x}x}x}x}
}	t	        dd      D ]$  }d| }|j                  |d   |   dd      }|j                  |d   |   dd      }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      nddz  }t        j                  | d      dz   d|iz  }t        t        j                  |            d}' |j                  |d   d   dd      }|j                  |d   d   dd      }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            d}|d   d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd |iz  }t        t        j                  |            dx}x}}|d   d!   }|j                  } |       }t!        |      }|sd"d#t        j                         v st        j                  t               rt        j                  t               nd#t        j                  |      t        j                  |      t        j                  |      t        j                  |      d$z  }t        t        j                  |            dx}x}x}}yc c}w )%u   회장 §4.4·§4.5 — stage1~8 byte-equivalent 무회귀 + range(1,10)
    9-stage 검증 유지. seam 도입이 결정론/스테이지 산출을 변형하지
    않음을 독립 run 2회로 대조.r   Nrq   r   r  r  r<   r  r  r  r  r  	   TF)	sort_keysensure_ascii)z%(py0)s == %(py2)sb1b2)r?   r   u!    byte-equivalent 무회귀 위반z
>assert %(py4)sr
   r  zassert %(py4)sra   rb   rc   re   rf   rI   r   rh   z_assert %(py8)s
{%(py8)s = %(py0)s(%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.values
}()
})
}all)r?   r   r
   r   rZ   )jsonr3   r  r  r-  r   rK   r   r   r   r   r   r   dumpsrk   valuesr  )r0   r  r1r2r    rN   r"   rg  r0  r  r~   r  r  kr  r  r#   rQ   r!   rP   r$   r^   s                         r(   :test_stage1_8_byte_equivalent_no_regression_and_nine_stager    s    		B		B(| |    " 3"# "1b\(%s(  (# (   # (                  !    #    $   (        1a[ AA3KZZ8Q4eZLZZ8Q4eZLRx@@@rR@@@@@@r@@@r@@@@@@R@@@R@@@@A3?@@@@@@@	A 
BxL*d	OB	BxL*d	OB8OOO2OOOOOO2OOO2OOOOOOOOOOOOOOOOl23;t;3t;;;;3t;;;3;;;t;;;;;;;,)3)003023323333333333333333)333033323333333333(s   T)r   str)rD  bool)3__doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   importlib.utilr   syspathlibr   r  __file__resolveparentsr   r  pathinsertr   r)   fixturer0   r4   rR   r_   ro   r   r   r   r   r   r   r   r   r   r   r   r  r8  rF  rh  markparametrizer  r  r  r  r/   r*   r(   <module>r     sL   #     
  H~''*t9CHHHHOOAs4y!3	 h!  ! h  
.80,JL62
2B?"A
?$&NR9<EP $
)O
)OX
(+K\4r*   