
    4jaI                    ~   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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mZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(  e
jR                  edz  jU                  d	            Z+e+d
   Z,e+d   D  cg c]  } | d   | d   f c} Z-e+d   Z.dZ/d$dZ0d%dZ1ejd                  jg                  d e4e.jk                                     d        Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCejd                  jg                  d g d!      d"        ZDd# ZEyc c} w )&u  tests/regression/test_batch_settle_writeback_2553plus53.py

task-2553+53 — NORMAL_COLLECTOR_DURABLE_SUCCESS_WRITEBACK_AND_BATCH_SETTLE
_TRIGGER regression.

Spec: memory/tasks/task-2553+53.md
(sha256 e0e433f7039a0b22ad51015f7c9693d33cf60078fa36985e2ffd6062636cfb63).

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

  1  independent ANU AUTHORITATIVE_PASS -> durable-success write-back PASS
  2  self-chain PASS -> write-back FAIL (SELF_CHAIN_NO_WRITEBACK)
  3  collector_role != ANU -> FAIL
  4  collector_key != configured ANU key -> FAIL
  5  duplicate write-back, same binding -> idempotent (no dup append)
  6  duplicate write-back, different verdict -> WRITEBACK_BINDING_CONFLICT
  7  +50/+51/+52 all missing registry -> before state DEFER
  8  +50/+51/+52 write-back after fix -> all-settled
  9  all-settled -> consolidated summary candidate 생성
  10 fallback pending does NOT block all-settled
  11 fixed-time / dead-man as progress trigger -> FAIL (basis is fixed)
  12 +49 self-collector guard 무회귀
  13 +44 4-tuple registry 무회귀
  14 +47/+48 event-trigger 무회귀
  15 profile engine / Track1~3 (+50/+51/+52) 산출물 byte-0 무변

모든 테스트 100% offline — network / git mutation / cron / dispatch /
cokacdir / subprocess(prod) 0. The +44 ledger is NEVER mutated by this
test (isolated tmp ledgers only); the real durable-success write-back is
performed by the driver, not the test.
    )annotationsN)Path) DURABLE_SUCCESS_WRITEBACK_SCHEMADURABLE_SUCCESS_WRITTENEVALUATED_AT_BASISSELF_CHAIN_NO_WRITEBACKTRACK_MISMATCHWRITEBACK_BINDING_CONFLICTWRITEBACK_FIELDS_11WRITEBACK_IDEMPOTENT_SKIPWritebackPathRefusedapply_durable_success_writebackevaluate_batch_settle"evaluate_durable_success_writebackextract_binding_from_source)'generate_consolidated_summary_candidaterender_candidate_markdownz*memory/fixtures/task-2553plus53.cases.jsonutf-8encodingbatch_idexpected_tracks   live_sourcesc119085addb0f8b7c                `    | |z  }|j                  t        j                  |d      d       |S )NF)ensure_asciir   r   )
write_textjsondumps)tmp_pathnamepayloadps       N/home/jay/workspace/tests/regression/test_batch_settle_writeback_2553plus53.py_write_verdictr&   N   s+    4ALLG%87LKH    c                   t         j                         D ]  \  }}t        t        |d   z  t        ||d   |       }g }|j
                  }|}|r|j                  }|t        k(  }|}|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }	|j                  |	       |rt        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  }|j                  |       t        j                  |d      i z  }t        j                   ||j                  |j"                  f      dz   d|iz  }t%        t        j&                  |            dx}x}x}x}}t)        ||       }|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}} y)zReal write-back of the live +50/+51/+52 independent-ANU verdicts
    into an ISOLATED tmp ledger (real entrypoints, not the +44 ledger).pathexecutor_keyr   track_idr*   ledger_pathz%(py4)s
{%(py4)s = %(py2)s.ok
}d)py2py4==)z7%(py8)s
{%(py8)s = %(py6)s.classification
} == %(py10)sr   )py6py8py10z%(py12)spy12r   z
>assert %(py15)spy15Nr-   Tisz0%(py2)s
{%(py2)s = %(py0)s.appended
} is %(py5)sappliedpy0r/   py5assert %(py7)spy7)LIVEitemsr   	WORKSPACEBATCH_IDokclassificationr   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprappend_call_reprcompare_format_boolop_format_assertmsgreasonsAssertionError_format_explanationr   appended)
tmp_ledgertrkinfor.   @py_assert1@py_assert3@py_assert0@py_assert7@py_assert9@py_format5@py_format11@py_format13@py_format14@py_format16r<   @py_assert4@py_format6@py_format8s                     r%   _seed_all_threere   T   s|    ZZ\ (	T.V$n-"
	
qtt 	
t 	
t(( 	
(,CC 	
 	
 
6		
 	
 	  	
 	
 
		  	
 	
 
		  	
 	
 
6		
 
	  	
 		
(,C 	
 	
 
6		
 	
 	  	
 	
 
		  	
 	
 
		 ) 	
 	
 
6		
 	
 	 -D 	
 	
 
		 -D 	
 	
 	
 
6		
 
		
 		
 	
  IIF
 	
 	
 	
 		
 	
 	

 2:
 '4'4''''4''''''w'''w''''''4'''''''!(r'   rV   c                
   t         |   }| dz  }t        t        |d   z  t        ||d   |      }|j                  }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d }|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   }|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}||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   }|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}}t$        D ]  }|
j&                  } ||      }|st        j(                  |      dz   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  }t        t        j                  |            d x}} y ) Ncallback_4tuple_index.jsonlr)   r*   r+   &assert %(py2)s
{%(py2)s = %(py0)s.ok
}r.   r>   r/   r1   z6%(py2)s
{%(py2)s = %(py0)s.classification
} == %(py4)sr   r>   r/   r0   assert %(py6)sr3   schema)z%(py1)s == %(py3)sr   py1py3assert %(py5)sr?   authoritative_verdictAUTHORITATIVE_PASSz%(py1)s == %(py4)sro   r0   collector_roleANUcollector_keyANU_KEYzG
>assert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py3)s)
}recf)r>   r/   rp   r?   )rB   r   rD   rE   rF   rH   rI   rJ   rK   rL   rR   rS   rG   r   rN   durable_recordr   ry   r   getrP   )r!   rV   rW   ledr.   rX   @py_format3rY   r]   @py_format7rz   rZ   @py_assert2@py_format4rc   r{   rb   s                    r%   4test_01_independent_anu_authoritative_pass_writebackr   k   s    9D
2
2C*DL .)	A 44K4KKKKK1KKK1KKK4KKKKKK666666666666616661666666666666666666666


Cx=<=<<<<<=<<<<=<<<<<<<<<<<<<<<<<<&'?+??'+?????'+????'???+???????? )E) E)))) E))) )))E)))))))*7****7*********7***7*******  wwwqzz1sswqqzr'   c                   t         d   d   }t        | d|      }t        |t        d|d   | dz        }|j                  }| }|sydd	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      d
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}}g }|j                  }d }	||	u }
|
}|
s|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#                  |       |
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#                  |       t        j$                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}
x}	x}x}}y )Nself_chain_onlyverdict_filezself_chain.jsonTRACK 2r*   l.jsonlr+   *assert not %(py2)s
{%(py2)s = %(py0)s.ok
}r.   ri   r1   rj   r   rk   rl   r3   Fr9   )z6%(py4)s
{%(py4)s = %(py2)s.durable_record
} is %(py7)s)r/   r0   rA   z%(py9)spy9)z4%(py13)s
{%(py13)s = %(py11)s.appended
} is %(py16)s)py11py13py16z%(py18)spy18r   zassert %(py21)spy21)FIXr&   r   rE   rF   rH   rI   rJ   rK   rL   rR   rS   rG   r   rN   r|   rT   rM   rO   )r!   r#   srcr.   rX   rY   r   r]   r   @py_assert6@py_assert5rZ   @py_assert12@py_assert15@py_assert14rd   @py_format10@py_format17@py_format19@py_format20@py_format22s                        r%   $test_02_self_chain_pass_no_writebackr      s   #$^4G
#4g
>C*^,y(	A ttOt8O8OOOOOqOOOqOOOtOOOOOO666666666666616661666666666666666666666:1:t:t#:qzz:U:zU':::::t::::::1:::1::::::t:::::::zU::::::q:::q:::z:::U::::::::::::::r'   c                   t        t        d   d         }d|d<   t        |d         |d<   d|d   d<   t        | d|      }t        |t        d|d   | d	z  
      }|j
                  }| }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d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}}y )Nindependent_anu_writebackr   executorrv   four_tuple_recordz	role.jsonTRACK Xr*   r   r+   r   r.   ri   r1   rj   r   rk   rl   r3   dictr   r&   r   rE   rF   rH   rI   rJ   rK   rL   rR   rS   rG   r   rN   	r!   r#   r   r.   rX   rY   r   r]   r   s	            r%   #test_03_collector_role_not_anu_failr      s:   323NCDG *G#'0C(D#EG 5?G !12
;
8C*^,y(	A ttOt8O8OOOOOqOOOqOOOtOOOOOO666666666666616661666666666666666666666r'   c                   t        t        d   d         }d|d<   t        |d         |d<   d|d   d<   t        | d|      }t        |t        d|d   | d	z  
      }|j
                  }| }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d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}}y )Nr   r   0000aaaa1111bbbbrx   r   zkey.jsonr   r*   r   r+   r   r.   ri   r1   rj   r   rk   rl   r3   r   r   s	            r%   &test_04_collector_key_not_anu_key_failr      s8   323NCDG1GO#'0C(D#EG 4FG 1
:w
7C*^,y(	A ttOt8O8OOOOOqOOOqOOOtOOOOOO666666666666616661666666666666666666666r'   c                   | dz  }t         d   }t        t        |d   z  t        d|d   |      }t	        ||       |j                  d      j                         }t        t        |d   z  t        d|d   |      }|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"                  }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }
t        t        j                   |
            d }t	        ||      }|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      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 }y )Nrg   TRACK 1r)   r*   r+   r8   r   r   r1   rj   d2r   rk   rl   r3   rh   ri   Fr9   r;   applied2r=   r@   rA   z%(py0)s == %(py2)slines_after_1lines_after_2zassert %(py4)sr0   )rB   r   rD   rE   r   	read_text
splitlinesrG   r   rJ   rN   rH   rI   rK   rL   rR   rS   rF   rT   )r!   r~   rW   d1r   r   rX   rY   r]   r   r   r   rb   rc   rd   r   s                   r%   )test_05_duplicate_same_binding_idempotentr      sB   
2
2C	?D	+DL .)
B $BC8MM7M3>>@M	+DL .)
B 9 99999 999999929992999999999 9999 9999999955L5LLLLL2LLL2LLL5LLLLLL.rsCH%%%%%%%%%%%%8%%%8%%%%%%%%%%%%%MM7M3>>@MM))))=M))))))=)))=))))))M)))M)))))))r'   c                   | dz  }t        t        d   d         }t        |      }t        d   d   |d<   t        | d|      }t        |t        d|d   |	      }t        ||
       t        |      }t        d   d   |d<   t        | d|      }t        |t        d|d   |	      }|j                  }	|	 }
|
syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      d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}	}
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}	}
t        ||
      }|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}
}y ) Nrg   conflict_different_verdictr   first_verdictverdictzc1.jsonzTRACK Yr*   r+   r8   second_verdictzc2.jsonr   r   ri   r1   rj   r
   rk   rl   r3   c              3  L   K   | ]  }d |v xs d|j                         v   yw)BINDING_CONFLICTconflictN)lower.0rs     r%   	<genexpr>z?test_06_duplicate_different_verdict_conflict.<locals>.<genexpr>   s0      $ "Q&A*	*AA $s   "$,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anyFr9   r;   r<   r=   r@   rA   )r   r   r&   r   rE   r   rF   rH   rI   rJ   rK   rL   rR   rS   rG   r
   rN   rQ   r   rT   )r!   r~   basep1s1r   p2s2r   rX   rY   r   r]   r   r<   rb   rc   rd   s                     r%   ,test_06_duplicate_different_verdict_conflictr      s   
2
2C01.ABD	dB45oFByM	)R	0B	+
X	.)s
B $BC8	dB456FGByM	)R	0B	+
X	.)s
B uuu99rru: ::::: :::::::2:::2::::::::: :::: ::::::::$

$ $3 $ $ $ $ $#V$ $##  $ $#)  $ $#)$ $ $#)$ $ $ $##$ $-bcBG$u$u$$$$u$$$$$$7$$$7$$$$$$u$$$$$$$r'   c           	        t         d   }t        d   d   }t        t        |d   z  t        d|d   |d   |d   d| d	z  
      }|j
                  }| }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d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}}y )NTRACK 3track_mismatchexpected_overrider)   r*   r,   task_id)r,   r   r   )r   r,   r*   expectedr-   r   r.   ri   r1   rj   r	   rk   rl   r3   )rB   r   r   rD   rE   rF   rH   rI   rJ   rK   rL   rR   rS   rG   r	   rN   )	r!   rW   ovr.   rX   rY   r   r]   r   s	            r%    test_06b_track_mismatch_recordedr      s   	?D		2	3B*DL .) nIGy(	A ttOt8O8OOOOOqOOOqOOOtOOOOOO-~----~------1---1---------~---~-------r'   c                   | dz  }t        t        t        |      }|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}}|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 )Nrg   r   r   r-   Fr9   z3%(py2)s
{%(py2)s = %(py0)s.all_settled
} is %(py5)sresr=   r@   rA   RECORD_AND_DEFERr1   z0%(py2)s
{%(py2)s = %(py0)s.decision
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.tracks_settled
} == %(py5)s)r   rE   EXPECTED_TRACKSall_settledrJ   rN   rH   rI   rK   rL   rR   rS   decisiontracks_settled)r!   r~   r   rX   rb   rY   rc   rd   s           r%   &test_07_before_state_all_missing_deferr      sr   
2
2C
'C
 ??#e#?e####?e######3###3###?###e#######<<---<-----<-------3---3---<-----------############3###3#############r'   c           
      
   | dz  }t        |       t        t        t        |d      }|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}}|j                  }t!        |      }t        D 	
cg c]  \  }	}
|		 c}
}	}t!        |      }||k(  }|sgt        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                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}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}}y c c}
}	w )Nrg   r   r   r   r-   this_track_idTr9   r   r   r=   r@   rA   )z>%(py2)s
{%(py2)s = %(py0)s.all_authoritative_pass
} is %(py5)sALL_SETTLED_CONSOLIDATEr1   r   )zt%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.tracks_settled
})
} == %(py11)s
{%(py11)s = %(py7)s(%(py9)s)
}sorted)r>   ro   rp   r?   rA   r   r   zassert %(py13)sr   )zK%(py2)s
{%(py2)s = %(py0)s.this_collector_is_last_settle_track
} is %(py5)s)re   r   rE   r   r   rJ   rN   rH   rI   rK   rL   rR   rS   all_authoritative_passr   r   r   #this_collector_is_last_settle_track)r!   r~   r   rX   rb   rY   rc   rd   r   t_@py_assert8@py_assert10r   @py_format12r`   s                   r%   test_08_after_fix_all_settledr     sn   
2
2CC
'	C ??"d"?d""""?d""""""3"""3"""?"""d"""""""%%--%----%------3---3---%----------<<444<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4$$ 6$% &'tq!''* % *    % *                        %    &      *0    *0    	(  *        22:d:2d::::2d::::::3:::3:::2:::d::::::: 	(s   S:c                :   | dz  }dD ]9  }t         |   }t        t        |d   z  t        ||d   |      }t	        ||       ; t        t        t        |      }|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}}|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}}y )Nrg   )r   r   r)   r*   r+   r8   r   Fr9   r   r   r=   r@   rA   r   r1   r      )zT%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.tracks_settled
})
} == %(py8)slenr>   ro   rp   r?   r4   assert %(py10)sr5   )rB   r   rD   rE   r   r   r   r   rJ   rN   rH   rI   rK   rL   rR   rS   r   r   r   )r!   r~   rV   rW   r.   r   rX   rb   rY   rc   rd   r   r[   r   @py_format9r^   s                   r%   test_08b_two_of_three_deferr      s   
2
2C% <Cy.V$x#n-3
 	(s;<  ?C ??#e#?e####?e######3###3###?###e#######<<---<-----<-------3---3---<-----------!!'3!"'a'"a''''"a''''''3'''3''''''s'''s'''!'''"'''a'''''''r'   c           	     `	   | dz  }t        |       t        t        t        |d      }t	        |t
        D ci c]  }|t
        |   d    c}t        t                    }d }||u}|st        j                  d|fd||f      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}}|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   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}}
t#        |      }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  }t        t        j                  |            d x}	}t        t        t        | dz         }i }t	        ||!      }d }||u }|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}}y c c}w ))Nrg   r   r   r)   )source_paths_by_trackcanonical_root)is not)z%(py0)s is not %(py3)scandr>   rp   rq   r?   status$CONSOLIDATED_SUMMARY_CANDIDATE_READYr1   rt   ru   rl   r3   track_count   c              3  ,   K   | ]  }|d    dk(    yw)rr   rs   N )r   r   s     r%   r   z9test_09_consolidated_summary_candidate.<locals>.<genexpr>B  s$       	

!"&::s   tracksr   allrk   zconsolidated summary CANDIDATE)in)z%(py1)s in %(py3)smdrn   zempty.jsonlr   )r   r9   )zO%(py5)s
{%(py5)s = %(py0)s(%(py1)s, source_paths_by_track=%(py3)s)
} is %(py8)sr   emptyr   r   r5   )re   r   rE   r   r   rB   strrD   rJ   rN   rH   rI   rK   rL   rR   rS   r   r   )r!   r~   r   r   r   r   rX   r   rc   rZ   rY   r]   r   r   r   rb   r[   r   r   r^   s                       r%   &test_09_consolidated_summary_candidater  3  s   
2
2CC
?yC 3;?@aq$q'&/1@9~D
 4t4t44t>CCC>CCCCC>CCCC>CCCCCCCCCCC#!#!####!######!#######h 3                         
#4	(B+1+r1111+r111+111111r111r1111111!?},E
 &(2R 	 	    	 v   3  I 3  v   	 I 	 I &( I  I      # As   R+
c                   | dz  }t        |       t        |dd      5 }|j                  t        j                  dddddd	d
ddddddd      dz          d d d        t        t        t        |      }|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 # 1 sw Y   wxY w)Nrg   ar   r   z callback_4tuple_ledger_record.v1task-2553+50FBfallback
6937032012zFB-NCzFB-CB
REGISTEREDFx)rm   r   dispatch_iddispatch_cron_idr   chat_idnormal_collector_cron_idfallback_callback_cron_idroler   no_fallbackts_kstT)	sort_keys
r   r9   r   r   r=   r@   rA   )zE%(py2)s
{%(py2)s = %(py0)s.fallback_pending_non_blocking
} is %(py5)sr   r1   r   )re   openwriter   r    r   rE   r   r   rJ   rN   rH   rI   rK   rL   rR   rS   fallback_pending_non_blockingr   )	r!   r~   fhr   rX   rb   rY   rc   rd   s	            r%   %test_10_fallback_pending_non_blockingr  S  s   
2
2CC 
c3	) 
#R
8%d $*#(/)0, C	
 	 "	" 		#
#  ?C ??"d"?d""""?d""""""3"""3"""?"""d""""""",,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<<444<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4#
# 
#s   7KKc                   | dz  }t        |       t        t        t        |      }|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
}||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}}dd l}
ddlm} |
j'                  |j                        }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 )Nrg   r   r1   )z:%(py2)s
{%(py2)s = %(py0)s.evaluated_at_basis
} == %(py4)sr   r   rk   rl   r3   %normal_callback_durable_success_event)z:%(py2)s
{%(py2)s = %(py0)s.evaluated_at_basis
} == %(py5)sr=   r@   rA   c              3  0   K   | ]  }d |v xr d|v   yw)z
fixed-timezdead-manNr   r   s     r%   r   z@test_11_no_fixedtime_deadman_progress_trigger.<locals>.<genexpr>x  s!     J|q 4Z1_4Js   r   r   r   )batch_settle_writeback)
fixed_timedeadmandead_man
wall_clock)not in)z6%(py0)s not in %(py4)s
{%(py4)s = %(py2)s.parameters
}badsig)re   r   rE   r   evaluated_at_basisr   rJ   rN   rH   rI   rK   rL   rR   rS   rQ   r   inspectanu_v3r  	signature
parameters)r!   r~   r   rX   rY   r]   r   rb   rc   rd   r&  bswr$  r#  s                 r%   -test_11_no_fixedtime_deadman_progress_triggerr+  m  s.   
2
2CC
?C !!7!%77777!%777777737773777!777777%7777%77777777!!L%LL!%LLLLL!%LLLLLLL3LLL3LLL!LLL%LLLLLLLLJckkJJ3JJJJJJJJJ3JJJ3JJJJJJJJJJJJJJ4


C55
6CB )..(s.((((s.((((((s(((s((((((#(((#(((.((((((()r'   c                    t         d   }| dz  }t        t        |d   z  t        d|d   |      }t	        j
                  t              5  t        || dz         d d d        y # 1 sw Y   y xY w)Nr   rg   r)   r*   r+   znot_the_ledger.jsonlr8   )rB   r   rD   rE   pytestraisesr   r   )r!   rW   r~   r.   s       r%   (test_11b_writeback_path_guard_failclosedr/    sq    	?D
2
2C*DL 8i.)s	A 
+	, 
'8&<<	

 
 
s   	A##A,suite)z@tests/regression/test_self_collector_guard_runtime_2553plus49.pyzBtests/regression/test_authoritative_verdict_selector_2553plus49.pyz<tests/regression/test_callback_4tuple_registry_2553plus44.pyz:tests/regression/test_callback_event_trigger_2553plus47.pyc                l   t        j                  t        j                  ddd| gt	        t
              d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  }t        j                  |  d|j                   d|j                         dz   d|iz  }t!        t        j"                  |            d x}x}}y )Nz-mr-  z-qTiX  )cwdcapture_outputtexttimeoutr   r1   )z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sr   r=   z regressed:
r  z
>assert %(py7)srA   )
subprocessrunsys
executabler  rD   
returncoderJ   rN   rH   rI   rK   rL   rP   stdoutstderrrR   rS   )r0  r   rX   rb   rY   rc   rd   s          r%   $test_12_13_14_upstream_no_regressionr=    s     		xu5	N	A <<K1K<1KKK<1KKKKKK1KKK1KKK<KKK1KKK}QXXJb
KKKKKKKKr'   c                 b   dddddd} | j                         D ]&  \  }}t        j                  t        |z  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  }t        j                  d|       dz   d|iz  }t        t        j                  |            d }) t        j                         D ]  \  }}t!        j"                  t        |d   z  j%                  d            }	|	j'                  d      xs |	j'                  d      }
d}|
|k(  }|st        j                  d|fd|
|f      dt        j                         v st        j                  |
      rt        j                  |
      ndt        j                  |      dz  }t        j                  ||
f      dz   d|iz  }t        t        j                  |            d x}} t)        t        t        d   d   z  t*        dt        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.                  }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 )%N@774d550628410d36962c23a7663c4b6dbf72789de7c7fd940871e9ad8280e5ab@364caa11904285657abd716d78c5493b1f8b519318387d0f864fb6a136dca0b4@352ad0f570e55040e7c1e4a32cbfe0f076cbd53529b4db6222a8da1a4bee9cc5@2363e291a0a43884892f5e554f115481a077322bd5caa3000fb75bf5b72bc6be@10529421110b3d2765785b6cf911527c8f5e964b5078fcfa6190fcb86d0f2c0f)z"anu_v3/callback_4tuple_registry.pyz(dispatch/executor_completion_contract.pyz anu_v3/callback_event_trigger.pyzanu_v3/policy_profile_engine.pyz$anu_v3/parallel_batch_coordinator.pyr1   r   gotwantri   zFROZEN byte-0 broken: z
>assert %(py4)sr0   r)   r   r   rr   r   rs   )z%(py0)s == %(py3)svr   z
>assert %(py5)sr?   r   r*   )r   r,   r*   r  )z/%(py2)s
{%(py2)s = %(py0)s.task_id
} == %(py5)sbr=   r@   rA   rw   )z6%(py2)s
{%(py2)s = %(py0)s.collector_role
} == %(py5)s)rC   hashlibsha256rD   
read_bytes	hexdigestrJ   rN   rH   rI   rK   rL   rP   rR   rS   rB   r   loadsr   r}   r   rE   r   rv   )frozenrelrE  rD  rX   r   r]   rV   rW   datarF  r   r   rc   rG  rb   rY   rd   s                     r%   (test_15_frozen_and_track_artifacts_byte0rP    s    ONNNNF \\^ ;	Tnn_((*

)+ 	 d{:::sd::::::s:::s::::::d:::d::::4SE:::::::	; ZZ\ 3	Tzzf%00'0B
 HH,-D)1D(2q((222q(222222q222q222(2223(22222223 	$DOF++I)_^4	A
 99&&9&&&&9&&&&&&1&&&1&&&9&&&&&&&&&&$u$u$$$$u$$$$$$1$$$1$$$$$$u$$$$$$$r'   )r!   r   r"   r  r#   r   returnr   )rU   r   rQ  None)F__doc__
__future__r   builtinsrH   _pytest.assertion.rewrite	assertionrewriterJ   rH  r   r6  r8  pathlibr   r-  __file__resolveparentrD   r  r)   removeinsertanu_v3.batch_settle_writebackr   r   r   r   r	   r
   r   r   r   r   r   r   r   /anu_v3.consolidated_summary_candidate_generatorr   r   rL  r   r   rE   r   rB   ry   r&   re   markparametrizelistkeysr   r   r   r   r   r   r   r   r   r   r  r  r+  r/  r=  rP  )r   s   0r%   <module>re     s  > #      
  N""$++2299	y>SXXHHOOC	N# 3y> "   
 djj==HH I 
 z?),->)?@AAaD!A$<@
>
(. TYY[ 12 3.; 7$7$*:%8. 	$;&(&@54).

 LL#%}
 As   F: