
    4jSG                       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ZddlmZ ddlZ ee      j!                         j"                  j"                  j"                  Z ee      ej(                  v r!ej(                  j+                   ee             ej(                  j-                  d ee             ddlmZ ddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'  e
jP                  edz  jS                  d	            Z*e*d
   Z+e*d   Z,edz  Z-d$dZ.d%dZ/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9ejt                  jw                  dddg      d        Z<d Z=d Z>d Z?d  Z@d! ZAd" ZBd# ZCy)&u  tests/regression/test_runtime_event_loop_2553plus54.py

task-2553+54 — ANU_RUNTIME_EVENT_LOOP_FROM_DURABLE_REGISTRY regression.

Spec: memory/tasks/task-2553+54.md
(sha256 97ff6dd95c65775f40c6cac242d2fc10010479df863e11b8c2019502de2bd3f4).

회장 §4 필수 regression 1~16 — 실 entrypoint 직접 호출 (mock-only FAIL):

  1  single task COMPLETED write-back -> NEXT_ACTION_READY
  2  batch 1/3 completed -> WAIT
  3  batch 3/3 completed -> ALL_SETTLED
  4  all-settled -> consolidated summary candidate
  5  fallback pending + normal completed -> non-blocking
  6  dead-man fired duplicate -> no duplicate next_action
  7  same event scanned twice -> idempotent
  8  self-chain completed record -> ignored/quarantined
  9  non-ANU collector record -> ignored/HOLD
  10 fixed-time/dead-man progress trigger -> FAIL
  11 missing registry -> no action / recovery state
  12 registry mismatch -> TRACK_MISMATCH/HOLD
  13 unauthorized dispatch -> proposal only
  14 authorized ANU-key dispatch candidate 생성
  15 +50/+51/+52 fixture (real registry) -> all-settled 재현
  16 +53 result를 event loop input으로 -> next summary READY 재현

모든 테스트 100% offline — network / git mutation / cron / dispatch /
cokacdir / subprocess 0. The real +44 ledger
(memory/events/callback_4tuple_index.jsonl) is NEVER mutated by this test:
synthetic cases use ISOLATED tmp ledgers; the live cases (15/16) consume
the real registry READ-ONLY (sha256 asserted unchanged).
    )annotationsN)Path)Callback4TupleRegistry)ACTION_MODE_PROPOSALAUTHORITY_NONEEVENT_NON_ANU_HOLDEVENT_SELF_CHAIN_QUARANTINEDLOOP_ALL_SETTLEDLOOP_FORBIDDEN_TRIGGERLOOP_NEXT_ACTION_READYLOOP_NO_REGISTRYLOOP_TRACK_MISMATCH	LOOP_WAIT	BatchSpecRuntimeEventLoopSingleTaskSpecloop_result_envelopez*memory/fixtures/task-2553plus54.cases.jsonutf-8encodinganu_keyexecutor_self_keyz)memory/events/callback_4tuple_index.jsonlc                d    t        j                  | j                               j                         S )N)hashlibsha256
read_bytes	hexdigest)ps    J/home/jay/workspace/tests/regression/test_runtime_event_loop_2553plus54.py_sha256r    M   s     >>!,,.)3355    c           	         | dz  }t        |dd      5 }|D ]:  }|j                  t        j                  |dd             |j                  d       < 	 d d d        t	        |      S # 1 sw Y   t	        |      S xY w)	Nzcallback_4tuple_index.jsonlwr   r   FT)ensure_ascii	sort_keys
)openwritejsondumpsr   )tmp_pathlinesledfhlns        r   _seedr0   Q   sx    
2
2C	c3	) R 	BHHTZZ$GHHHTN	 "#&&	 "#&&s   A A((A;c                    t        |      }|j                  | ||d|  dt        z   dd|  dt        j                  |  d| d| j                               j                         d       |S )Nzderived:zANU-normal-callback:z2026-05-18 21:30 KSTzmemory/events/z.synth.json|)task_idtrack_idbatch_iddispatch_idnormal_collector_cron_idcompleted_atsource_result_pathwriteback_id)dictupdateANU_KEYr   r   encoder   )r3   r4   r5   tplds        r   _writeback_linerA   Z   s}    S	AHH  %gY/(>(H2$27);"G#NN)1XJaz299;ik	
 Hr!   c                B   t        | t        d   d         }t        |t        g      }|j	                  t        d      g      }|j                  }|t        k(  }|st        j                  d|fd|t        f      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
dz  }dd|iz  }t        t        j                  |            d x}}|j                   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}	}|j                   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}	}g }|j"                  }d}
||
u }|}|r|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  }|j'                  |       |rt        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  }|j'                  |       t        j(                  |d      i z  }dd |iz  }t        t        j                  |            d x}x}x}x}x}
x}x}}y )!Nsingle_task_completedregistry_linesanu_keystask-2553+99-singler3   single_tasks==z/%(py2)s
{%(py2)s = %(py0)s.verdict
} == %(py4)sresr   py0py2py4assert %(py6)spy6r   verdictNEXT_ACTION_READYz%(py1)s == %(py4)spy1rR   trigger_sourceregistry_completed_eventFis)z7%(py4)s
{%(py4)s = %(py2)s.fixed_time_used
} is %(py7)s)rQ   rR   py7z%(py9)spy9)z9%(py13)s
{%(py13)s = %(py11)s.dead_man_used
} is %(py16)s)py11py13py16z%(py18)spy18zassert %(py21)spy21)r0   FIXr   r=   runr   rU   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationsingle_task_resultsfixed_time_useddead_man_usedappend_format_boolop)r+   reglooprN   @py_assert1@py_assert3@py_format5@py_format7@py_assert0@py_assert2@py_assert6@py_assert5@py_assert12@py_assert15@py_assert14@py_format8@py_format10@py_format17@py_format19@py_format20@py_format22s                        r   /test_01_single_task_completed_next_action_readyr   n   s   
#567GH
ICC7)4D
(($-BCD  C ;;0;00000;000000030003000;000000000000000000""1%i0G4GG04GGGGG04GGGG0GGG4GGGGGGGG""1%&67 "7"  7"   8    	#      G3F%F%'FC,=,=FF,=,FFFFF%FFFFFF3FFF3FFFFFF%FFFFFFF,=FFFFFFCFFFCFFF,=FFFFFFFFFFFFFFFFFr!   c                   t         d   }|d   }t        dd|d   |      }t        | |g      }t        |t        g      }|j                  t        |d   |d   D cg c]  }t        |       c}      g	      }|j                  }|t        k(  }	|	st        j                  d
|	fd|t        f      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dz  }
dd|
iz  }t!        t        j"                  |            d x}}	|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   }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}}|j(                  }g }||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 c c}w )"Nbatch_partialtrack_writeback_templatetask-2553+90TRACK Ar5   rE   expected_tracksr5   r   batchesrK   rM   rN   r   rO   rS   rT   r   all_settledFr\   z%(py1)s is %(py4)srX   tracks_settled   z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)slenrP   rQ   rR   r^   assert %(py9)sr_   zG%(py2)s
{%(py2)s = %(py0)s.consolidated_summary_candidates
} == %(py5)srP   rQ   py5assert %(py7)sr^   )re   rA   r0   r   r=   rf   r   tuplerU   r   rg   rh   ri   rj   rk   rl   rm   rn   batch_resultsr   consolidated_summary_candidates)r+   bpr?   only_art   ru   trN   rv   rw   rx   ry   sjrz   r{   r|   r}   r   r   @py_assert4@py_format6s                        r   test_02_batch_partial_waitr   }   sl   	_	B
'
(C	2j>3F 6(
#CC7)4D
((J356G3H Iaq I
  C ;;#;)####;)######3###3###;######)###)#######			1	Bm%%%%%%%%%%%%%%%%%%%"#)3#$))$))))$))))))3)))3)))#)))$))))))))))..4"4."4444."44444434443444.444"4444444 !Js   N<c                z   t         d   }|d   }dD cg c]  \  }}t        |||d   |       }}}t        | |      }t        |t        g      }|j                  t        |d   |d   D cg c]  }t        |       c}      g      }	|	j                  }
|
t        k(  }|st        j                  d	|fd
|
t        f      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dz  }dd|iz  }t!        t        j"                  |            d x}
}|	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}}|	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}}|	j$                  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}}y c c}}w c c}w )Nr   r   )r   r   )zTRACK Bztask-2553+91)zTRACK Cztask-2553+92r5   rE   r   r   r   rK   rM   rN   r
   rO   rS   rT   r   r   Tr\   r   rX   all_authoritative_passevaluated_at_basis%normal_callback_durable_success_eventrW   )re   rA   r0   r   r=   rf   r   r   rU   r
   rg   rh   ri   rj   rk   rl   rm   rn   r   )r+   r   r?   trktidr,   rt   ru   r   rN   rv   rw   rx   ry   rz   r{   s                   r   test_03_batch_all_settledr      sy   	_	B
'
(C
C 	S"Z.#6E  %
 CC7)4D
((J356G3H Iaq I
  C ;;*;*****;*******3***3***;******************Q.6$6.$6666.$666.666$6666666Q 89ATA9TAAAA9TAAA9AAATAAAAAAAQ 45 /5/  5/   6    	0      + !Js   L2+L8c                N   t         d   }|d   }dD cg c]  \  }}t        |||d   |       }}}t        | |      }t        |t        g      j                  t        |d   |d   D cg c]  }t        |       c}      g      }|j                  }	t        |	      }
d	}|
|k(  }|st        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  }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   }|t$        k(  }
|
st        j                  d
|
fd|t$        f      t        j                  |      dt        j                         v st        j                  t$              rt        j                  t$              nddz  }dd|iz  }t!        t        j"                  |            d x}}
|d   }|t&        k(  }
|
st        j                  d
|
fd|t&        f      t        j                  |      dt        j                         v st        j                  t&              rt        j                  t&              nddz  }dd|iz  }t!        t        j"                  |            d 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 c c}}w c c}w )$Nr   r   r   r5   rE   r   r   r   r   rK   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   candsrP   rY   py3rT   assert %(py8)spy8r   status$CONSOLIDATED_SUMMARY_CANDIDATE_READYrW   rX   rS   rT   	authorityz%(py1)s == %(py3)sr   rY   r   assert %(py5)sr   action_moder   auto_executedFr\   r   )re   rA   r0   r   r=   rf   r   r   r   r   rg   rh   ri   rj   rk   rl   rm   rn   r   r   )r+   r   r?   r   r   r,   rt   r   rN   r   r{   r}   r   ry   @py_format9crz   rw   rx   @py_format4r   s                        r   2test_04_all_settled_consolidated_summary_candidater      s   	_	B
'
(C
C 	S"Z.#6E  %
 C
3'
3
7
7J356G3H Iaq I
 8 C //Eu::?:33uu:aAX;@@@;@@@@@;@@@@;@@@@@@@@@@@[>+>^++++>^+++>++++++^+++^+++++++]3333333333333333333333333333_&&&&&&&&&&&&&&&&&&&/ !Js   P)P"c                4   t        | t        d   d         }t        |t        g      j	                  t        d      g      }|j                  }|t        k(  }|st        j                  d|fd|t        f      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
dz  }dd|iz  }t        t        j                  |            d 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   }
|
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 )NrC   rD   rE   rG   rH   rI   rK   rM   rN   r   rO   rS   rT   Tr\   )zE%(py2)s
{%(py2)s = %(py0)s.fallback_pending_non_blocking
} is %(py5)sr   r   r^   r   readyr   rX   fallback_pending_non_blocking)r0   re   r   r=   rf   r   rU   r   rg   rh   ri   rj   rk   rl   rm   rn   r   ro   )r+   rt   rN   rv   rw   rx   ry   r   r   r   strz   r{   s                r   %test_05_fallback_pending_non_blockingr      s    #567GH
IC
3'
3
7
7$-BCD 8 C ;;0;00000;000000030003000;000000000000000000,,44,4444,44444434443444,4444444444		 	 	#Bg;$;$;$;$-.6$6.$6666.$666.666$6666666r!   c                
   t        t        d   d         }|j                  t        d   d          t        | |      }t	        |t
        g      j                  t        d      t        d      gd	      }|j                  }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                  |      t        j                  |      dz  }dd|iz  }	t!        t        j"                  |	            d x}x}x}}|j$                  }
|
t&        k(  }|st        j                  d|fd|
t&        f      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dz  }dd|iz  }t!        t        j"                  |            d 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}|
|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}}y ) NrC   rD   dead_man_duplicateduplicate_completed_linerE   rG   rH   T)rJ   dead_man_signalr   rK   )zY%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.single_task_results
})
} == %(py8)sr   rN   rP   rY   r   r   r   assert %(py10)spy10rM   r   rO   rS   rT   r\   )z@%(py2)s
{%(py2)s = %(py0)s.dead_man_signal_observed
} is %(py5)sr   r   r^   Fz5%(py2)s
{%(py2)s = %(py0)s.dead_man_used
} is %(py5)s)>=)zC%(py2)s
{%(py2)s = %(py0)s.duplicate_events_suppressed
} >= %(py5)s)listre   rr   r0   r   r=   rf   r   ro   r   rg   rh   ri   rj   rk   rl   rm   rn   rU   r   dead_man_signal_observedrq   duplicate_events_suppressed)r+   r,   rt   rN   r{   r   @py_assert7r|   r   @py_format11rv   rw   rx   ry   r   r   s                   r   3test_06_dead_man_duplicate_no_duplicate_next_actionr      s   ,-.>?@E	LL)*+EFG
%
 C
3'
3
7
7#89#89

  8 C &&,3&',1,'1,,,,'1,,,,,,3,,,3,,,,,,s,,,s,,,&,,,',,,1,,,,,,,;;0;00000;000000030003000;000000000000000000''/4/'4////'4//////3///3///'///4///////%%%%%%%%%%%%3%%%3%%%%%%%%%%%%%**/a/*a////*a//////3///3///*///a///////r!   c           
        t         d   }|d   }dD cg c]  \  }}t        |||d   |       }}}t        | |      }t        |j                        }t        |t        g      }t        |d   |d   D 	cg c]  }	t        |	       c}	      g}
|j                  |
      j                         }|j                  |
      j                         }||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 }|j                  }t        |      }||k(  }|s7t        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t        j                         v st        j                  |      rt        j                   |      nd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}}y c c}}w c c}	w )Nr   r   r   r5   rE   r   r   r   rK   )z%(py0)s == %(py2)sr1r2rP   rQ   assert %(py4)srR   )zQ%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.ledger_path
})
} == %(py7)sr    rt   pre)rP   rY   r   r   r^   r   r_   r   r   r   r   r   )re   rA   r0   r    ledger_pathr   r=   r   r   rf   to_jsonrg   rh   ri   rj   rk   rl   rm   rn   r   )r+   r   r?   r   r   r,   rt   r   ru   r   specr   r   rv   @py_format3rx   r{   r   r|   r   r   rw   r}   s                          r    test_07_idempotent_repeated_runsr      si   	_	B
'
(C
C 	S"Z.#6E  %
 C
#//
"CC7)4D
^/12C/DE!U1XE	
D 
$		'	'	)B	$		'	'	)B 8OOO2OOOOOO2OOO2OOOOOOOOOOOOOOOO??*7?#*#s****#s******7***7******3***3***?***#******s***s*******34:345::5::::5::::::3:::3:::4:::5::::::::::/ Fs   O&5O,
c                   t        | t        d   d   g      }t        |t        g      j	                         }|j
                  D cg c]  }|d   	 }}t        |v }|st        j                  d|fdt        |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d	z  }d
d|iz  }t        t        j                  |            d }d |j                  D        }t!        |      }|sddt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }t        t        j                  |            d x}}y c c}w )Nself_chain_writebackregistry_linerE   
event_kindinz%(py0)s in %(py2)sr	   kindsr   r   rR   c              3  4   K   | ]  }|d    t         k7    ywr   N)r	   .0es     r   	<genexpr>z1test_08_self_chain_quarantined.<locals>.<genexpr>  s"       	
,77   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}allrO   )r0   re   r   r=   rf   quarantined_eventsr	   rg   rh   ri   rj   rk   rl   rm   rn   events_observedr   	r+   rt   rN   qr   rv   r   rx   rw   s	            r   test_08_self_chain_quarantinedr     s`   
356GH
IC
3'
3
7
7
9C&)&<&<=Q|_=E='50000'5000000'000'000000500050000000$$ 3                         >   G,c                   t        | t        d   d   g      }t        |t        g      j	                         }|j
                  D cg c]  }|d   	 }}t        |v }|st        j                  d|fdt        |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d	z  }d
d|iz  }t        t        j                  |            d }d |j                  D        }t!        |      }|sddt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }t        t        j                  |            d x}}y c c}w )Nnon_anu_writebackr   rE   r   r   r   r   r   r   r   rR   c              3  4   K   | ]  }|d    t         k7    ywr   )r   r   s     r   r   z1test_09_non_anu_collector_hold.<locals>.<genexpr>&  s"       	
,--r   r   r   rO   )r0   re   r   r=   rf   r   r   rg   rh   ri   rj   rk   rl   rm   rn   r   r   r   s	            r   test_09_non_anu_collector_holdr   !  s`   
323ODE
FC
3'
3
7
7
9C&)&<&<=Q|_=E=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$ 3                         >r   badfixed_time_gatedead_man_fallbackc                   t        | t        d   d         }t        |t        g      j	                  t        d      g|      }|j                  }|t        k(  }|st        j                  d|fd|t        f      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
dz  }dd|iz  }t        t        j                  |            d 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 }||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}}|dk(  r|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}}n|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(                  }g }||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*                  }g }||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,                  }g }||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 )NrC   rD   rE   rG   rH   )rJ   progress_trigger_sourcerK   rM   rN   r   rO   rS   rT   Fr\   )z*%(py2)s
{%(py2)s = %(py0)s.ok
} is %(py5)sr   r   r^   )z8%(py2)s
{%(py2)s = %(py0)s.progress_trigger
} is %(py5)sr   T)z7%(py2)s
{%(py2)s = %(py0)s.fixed_time_used
} is %(py5)sr   z;%(py2)s
{%(py2)s = %(py0)s.single_task_results
} == %(py5)sr   z;%(py2)s
{%(py2)s = %(py0)s.dispatch_candidates
} == %(py5)s)r0   re   r   r=   rf   r   rU   r   rg   rh   ri   rj   rk   rl   rm   rn   okprogress_triggerrp   rq   ro   r   dispatch_candidates)r+   r   rt   rN   rv   rw   rx   ry   r   r   r   s              r   "test_10_forbidden_progress_triggerr  -  s   
#567GH
IC
3'
3
7
7$-BCD # 8 C ;;0;00000;000000030003000;00000000000000000066U6U?6U336U'4'4''''4''''''3'''3''''''4'''''''
""*d*"d****"d******s***s***"***d*******  (D( D(((( D((((((s(((s((( (((D(((((((""(b("b(((("b((((((3(((3((("(((b(((((((..4"4."4444."44444434443444.444"4444444""(b("b(((("b((((((3(((3((("(((b(((((((r!   c                   t        | dz        }t        |t        g      j                  t	        d      g      }|j
                  }|t        k(  }|st        j                  d|fd|t        f      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	d
z  }dd|iz  }t        t        j                  |            d x}}|j                  }g }||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                   }g }||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"                  }g }||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$                  D        }t'        |      }|sddt        j                         v st        j                  t&              rt        j                  t&              ndt        j                  |      t        j                  |      d
z  }t        t        j                  |            d x}}y )Nzdoes-not-exist.jsonlrE   ztask-anythingrH   rI   rK   rM   rN   r   rO   rS   rT   r  r   r   r^   r   r  c              3  $   K   | ]  }d |v  
 yw)zrecovery stateN )r   rs     r   r   z5test_11_missing_registry_no_action.<locals>.<genexpr>K  s     :1$:s   r   any)r   r   r=   rf   r   rU   r   rg   rh   ri   rj   rk   rl   rm   rn   ro   r   r  reasonsr  )
r+   rt   rN   rv   rw   rx   ry   r   r   r   s
             r   "test_11_missing_registry_no_actionr  B  sv   
 ,B!B
CC
3'
3
7
7$_=> 8 C ;;*;*****;*******3***3***;******************""(b("b(((("b((((((3(((3((("(((b(((((((..4"4."4444."44444434443444.444"4444444""(b("b(((("b((((((3(((3((("(((b(((((((:ckk::3:::::::::3:::3::::::::::::::r!   c                B   t         d   }t        | |d   g      }t        |t        g      j	                  t        d|d         g      }|j                  }|t        k(  }|st        j                  d|fd	|t        f      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dz  }dd|iz  }t        t        j                  |            d 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   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 )Nmismatchr   rE   ztask-2553+96-mismatchexpected_dispatch_id)r3   r  rI   rK   rM   rN   r   rO   rS   rT   Tr\   )z6%(py2)s
{%(py2)s = %(py0)s.hold_for_chair
} is %(py5)sr   r   r^   r   rU   TRACK_MISMATCHrW   rX   )re   r0   r   r=   rf   r   rU   r   rg   rh   ri   rj   rk   rl   rm   rn   hold_for_chairro   )r+   mrt   rN   rv   rw   rx   ry   r   r   r   rz   r{   s                r   test_12_registry_mismatch_holdr  O  s   JA
1_-.
/C
3'
3
7
7/%&'=%>
 8 C ;;-;-----;-------3---3---;------------------%%%%%%%%%%%%3%%%3%%%%%%%%%%%%%""1%i0D4DD04DDDDD04DDDD0DDD4DDDDDDDDr!   c                x   t        | t        d   d         }t        |t        g      j	                  t        dt        d   d         g      }|j                  }|t        k(  }|st        j                  d|fd	|t        f      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dz  }dd|iz  }t        t        j                  |            d x}}|j                   }|t"        k(  }|st        j                  d|fd|t"        f      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dz  }dd|iz  }t        t        j                  |            d x}}|j$                  }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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}x}
}	|j$                  d   }|d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x}}|d   }|t"        k(  }|st        j                  d|fd|t"        f      t        j                  |      dt        j                         v st        j                  t"              rt        j                  t"              nddz  }dd|iz  }t        t        j                  |            d 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%   }t(        |v}|st        j                  d&|fd't(        |f      d(t        j                         v st        j                  t(              rt        j                  t(              nd(t        j                  |      d)z  }dd|iz  }t        t        j                  |            d x}}y )*NrC   rD   rE   rG   
next_phaser3   r  rI   rK   )z1%(py2)s
{%(py2)s = %(py0)s.authority
} == %(py4)srN   r   rO   rS   rT   )z3%(py2)s
{%(py2)s = %(py0)s.action_mode
} == %(py4)sr   r   zY%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.dispatch_candidates
})
} == %(py8)sr   r   r   r   r   r   r   r   r   r   r   r   Fr\   r   rX   anu_key_owner_requiredTrF   not in)z%(py0)s not in %(py3)sSELF_KEY)rP   r   )r0   re   r   r=   rf   r   r   r   rg   rh   ri   rj   rk   rl   rm   rn   r   r   r  r   r  )r+   rt   rN   rv   rw   rx   ry   r{   r   r   r|   r   r   dcrz   r   r   s                    r   test_13_dispatch_proposal_onlyr  `  s   
#567GH
IC
3'
3
7
7-67E
 8 C ==*=N****=N******3***3***=******N***N*******??2?22222?222222232223222?222222222222222222&&,3&',1,'1,,,,'1,,,,,,3,,,3,,,,,,s,,,s,,,&,,,',,,1,,,,,,,		 	 	#Bk?,?n,,,,?n,,,?,,,,,,n,,,n,,,,,,,m4 44444 4444444444 4444 44444444o'%'%''''%''''''%'''''''&'/4/'4////'4///'///4///////j>)8>))))8>))))))8)))8)))>)))))))r!   c                   t         d   }t        t              }t        t              }t	        |t
        g      j                  t        |d   |d   D cg c]  }t        |       c}|d         g      }|j                  }|t        k(  }|st        j                  d|fd	|t        f      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dz  }dd|iz  }	t#        t        j$                  |	            d x}}|j&                  }
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                   |      t        j                   |      dz  }dd|iz  }t#        t        j$                  |            d x}
x}x}}|j&                  d   }|d   }t
        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}||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        t              }
|
|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                  t              rt        j                   t              nd!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 c c}w )&N
live_batchrE   r5   r   r  r5   r   r  r   rK   rM   rN   r
   rO   rS   rT   r   r  r   r   r   r   r   rF   rW   rX   anu_keys_resolvableTr\   r   r   Fz0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py5)sr    REAL_LEDGERr   rP   rY   r   r   r   r^   )re   r   r$  r    r   r=   rf   r   r   rU   r
   rg   rh   ri   rj   rk   rl   rm   rn   r  r   )r+   lbrt   r   r   rN   rv   rw   rx   ry   r{   r   r   r|   r   r   r  rz   r   r   s                       r   -test_14_authorized_anu_key_dispatch_candidater'  w  sF   	\	B
 
-C
+
C
3'
3
7
7J356G3H Iaq Il+
 8 C ;;*;*****;*******3***3***;******************&&,3&',1,'1,,,,'1,,,,,,3,,,3,,,,,,s,,,s,,,&,,,',,,1,,,,,,,		 	 	#Bj>&gY&>Y&&&&>Y&&&>&&&Y&&&&&&&#$,,$,,,,$,,,$,,,,,,,,,,o'%'%''''%''''''%''''''';&3&&&&3&&&&&&7&&&7&&&&&&;&&&;&&&&&&&&&3&&&3&&&&&&& !Js   Vc                   t         d   }t        t              }t        t              }t	        |t
        g      j                  t        |d   |d   D cg c]  }t        |       c}      g      }|j                  }|t        k(  }|st        j                  d|fd|t        f      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
dz  }dd|iz  }	t#        t        j$                  |	            d x}}|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}}|
d   }g d}||k(  }|slt        j                  d|fd||f      t        j                   |      t        j                   |      dz  }dd|iz  }	t#        t        j$                  |	            d x}x}}t        t              }||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                  t              rt        j                   t              nd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 c c}w )Nr   rE   r5   r   r   r   rK   rM   rN   r
   rO   rS   rT   r   r   Tr\   r   rX   r   r   )zTRACK 1zTRACK 2zTRACK 3rW   r#  r    r$  r   r%  r   r^   )re   r   r$  r    r   r=   rf   r   r   rU   r
   rg   rh   ri   rj   rk   rl   rm   rn   r   )r+   r&  rt   r   r   rN   rv   rw   rx   ry   r   rz   r{   r   r   r   s                   r   !test_15_live_50_51_52_all_settledr)    s   	\	B
 
-C
+
C
3'
3
7
7J356G3H Iaq I
 8 C ;;*;*****;*******3***3***;******************			1	Bm$$$$$$$$$$$$$$$$$$$&'/4/'4////'4///'///4///////D#DD#DDDDD#DDDDDDD#DDDDDDDD;&3&&&&3&&&&&&7&&&7&&&&&&;&&&;&&&&&&&&&3&&&3&&&&&&& !Js   Q
c                
   t         d   }t        j                  t        dz  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}}t        t              }t        |t        g      j                  t        |d   |d   D 	cg c]  }	t!        |	       c}	|d         g      }
|
j"                  }t%        |      }d}||k(  }|st        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  }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   }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#}||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&   }|t.        k(  }|st        j                  d|fd'|t.        f      t        j                  |      d(t'        j(                         v st        j*                  t.              rt        j                  t.              nd(d)z  }d*d+|iz  }t        t        j                  |            d x}}y c c}	w ),Nr   z&memory/events/task-2553+53.result.jsonr   r   r  Fr\   r   rX   rS   rT   rE   r5   r   r  r!  r   r   rK   r   r   r   r   r   r   r   r   r   rW   r   Tz2026-05-18 21:45 KST)generated_at_kstschemaz)task-2553+54.runtime-event-loop-result.v1r   resultrU   r   r
   r   r   r   )re   r)   loads	WORKSPACE	read_textrg   rh   rl   rm   rn   r   r$  r   r=   rf   r   r   r   r   ri   rj   rk   r   r
   )r+   r&  plus53rz   rw   r{   rx   ry   rt   r   rN   r   r}   r   r   envr   r   s                     r   ,test_16_plus53_result_as_input_summary_readyr3    sS   	\	B ZZ	=	=HH 	I 	
F
 "#,u,#u,,,,#u,,,#,,,u,,,,,,,
 
-C
3'
3
7
7J356G3H Iaq Il+
 8 C //Eu::?:33uu:8HG!GG!GGGGG!GGGGGGG!GGGGGGGG8,-55-5555-555-5555555555
s5K
LCx=GGG=GGGGG=GGGG=GGGGGGGGGGG(5(5((((5((((((5(((((((x=#7#'77777#'7777#777777'7777'77777777 !Js   /S=c                   t        | t        d   d         }t        |t        g      j	                  t        dddi      g      }t        j                  |j                               }t        |v}|st        j                  d	|fd
t        |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dz  }dd|iz  }t!        t        j"                  |            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&                  }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 )NrC   rD   rE   rG   phasexr  rI   r  )z%(py0)s not in %(py2)sr  blobr   r   rR   nonerK   )z1%(py2)s
{%(py2)s = %(py0)s.authority
} == %(py5)srN   r   r   r^   proposal)z3%(py2)s
{%(py2)s = %(py0)s.action_mode
} == %(py5)s)r0   re   r   r=   rf   r   r)   r*   r   r  rg   rh   ri   rj   rk   rl   rm   rn   r   r   )r+   rt   rN   r7  rv   r   rx   r   rw   r   r   s              r   4test_17_no_self_collector_no_self_dispatch_invariantr:    s   
#567GH
IC
3'
3
7
7-#S>
 8 C ::ckkm$D4848844=="F"=F""""=F""""""3"""3"""="""F"""""""??(j(?j((((?j((((((3(((3(((?(((j(((((((r!   )r   r   returnstr)r+   r   r;  r   )D__doc__
__future__r   builtinsri   _pytest.assertion.rewrite	assertionrewriterg   r   r)   syspathlibr   pytest__file__resolveparentr/  r<  pathremoveinsertanu_v3.callback_4tuple_registryr   anu_v3.runtime_event_loopr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r.  r0  re   r=   r  r$  r    r0   rA   r   r   r   r   r   r   r   r   r   markparametrizer  r  r  r  r'  r)  r3  r:  r	  r!   r   <module>rP     sy  @ #     
  N""$++2299	y>SXXHHOOC	N# 3y> "   " djj==HH I 
 i."#EE6'(G50<'<70,;<	 !24G HI) J)(	;E"*.'0'*8@)r!   