
    j                       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mZ d dlZ ee      j$                  Ze	j(                  j+                  dedz        Zg ZeZerej2                  ZeZesddd	 ej6                         v s ej8                  e      r ej:                  e      nd	iz  Zej?                  e       er`d
d	 ej6                         v s ej8                  e      r ej:                  e      nd	 ej:                  e      dz  Z ej?                  e         ejB                  ed       i z  Z"dde"iz  Z# e$ ejJ                  e#            dxZxZZe	j(                  jM                  e      Z'e'ejP                  ejR                  <   ej2                  jU                  e'       ddZ+d Z,d Z-d Z.d Z/d Z0d Z1ddZ2y)    )annotationsN)Path)Any
continuouscontinuous_lifecycle.pyz%(py2)spy2SPECz#%(py6)s
{%(py6)s = %(py4)s.loader
})py4py6zassert %(py9)spy9c                    ddt         j                  t         j                  ddt         j                  t         j                  dgdddi d	gd
dddddidt         j                  ddddt         j                  dgddidgg d g g i i g dS )NAWAITING_ACTIVATION   )state
generation
session_idsid_hashF0)enabledroute
collectingr      r   cursoranswersconsumed_updates	COMMITTED   r   )r   r   
message_idpayloadcustomer)r   r   r   r   roler   r    )	bootstrapr!   workflowpublicationoutboxowner_callbackswizardgenerationscardsdrafts
deliveries
activation)mSESSIONSIDCUSTOMER     /home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-st_01a007da-v2-e788f5d5/test_continuous_lifecycle.pybaser5      s     +))	
 !&QZZ0MN!!$	
  .	
  ii$!"**c*#\2

 K& &r3   c                 	   t         j                  t                     } | j                  }d}||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |       rt	        j                  |       ndt	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}| j                  }d}||k(  }|st	        j
                  d|fd	||f      dt        j                         v st	        j                  |       rt	        j                  |       ndt	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}| j                  }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}}t         j                  }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                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}t         j                  }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                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}t         j                   }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                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}y )NREADY_CUSTOMER_ONBOARDING==z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)sppy0r   py5assert %(py7)spy7161z2%(py2)s
{%(py2)s = %(py0)s.message_id
} == %(py5)szsubmit_answer:date_of_birth)z.%(py2)s
{%(py2)s = %(py0)s.action
} == %(py5)s@e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377)z1%(py2)s
{%(py2)s = %(py0)s.SUCCESSOR
} == %(py5)sr.   @a113a57564a11710dffd238688dd73f8037eabaed0b48532b4bc90b2996e69fc)z,%(py2)s
{%(py2)s = %(py0)s.CORE
} == %(py5)s@2fbd6c9ad9d4b5ee979e7671d44e32fd4769e8737e26d7459fe73c81a525c656)z-%(py2)s
{%(py2)s = %(py0)s.WHEEL
} == %(py5)s)r.   classifyr5   status
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   action	SUCCESSORCOREWHEEL)r;   @py_assert1@py_assert4@py_assert3@py_format6@py_format8s         r4   )test_current_prompt_and_successor_bindingrY   >   s   	

46A882228222228222222212221222822222222222<< 5 <5    <5      1   1   <   5       884448444448444444414441444844444444444	MM	N M     	
   	
   	   N      66WWW6WWWWW6WWWWWWW1WWW1WWW6WWWWWWWWWWW77XXX7XXXXX7XXXXXXX1XXX1XXX7XXXXXXXXXXXr3   c            
        t         j                  dz  dz  j                         } t         dz  j                         }|j                  }t        j
                  }d} |||      }|| k(  }|s_t        j                  d|fd|| f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      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}x}x}}y )Nz3task26-continuous-lifecycle-observer-st_01a007da-v1r   @30bcd6633875050aa4f56f49a8bb26cd616ffa2409fc04caef523a8a62d5d1ccr8   )zv%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.replace
}(%(py5)s
{%(py5)s = %(py3)s.SUCCESSOR
}, %(py7)s)
} == %(py11)sv2r.   v1)r=   r   py3r>   r@   r   py11zassert %(py13)spy13)HEREparent	read_textreplacer.   rQ   rH   rI   rJ   rK   rL   rM   rN   rO   )	r]   r\   rT   rU   @py_assert6@py_assert8@py_assert10@py_format12@py_format14s	            r4   ?test_v2_observer_differs_from_v1_only_by_full_candidate_bindingrj   K   s   
?	@
#	$ ik	 
 *
*	5	5	7B


KK ON	
	
 		  	
      	   	   	    	   	   	    O  	
              r3   c            	     T
   t               } | d   j                  dd       | d   j                  ddddi	       t        | d
   d   ddddi	      | d
   d<   t        j	                  |       }|j
                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j                  }|j                   }d} ||      }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }	t        t        j                  |	            d x}x}x}}d| d   d<   | d   j                  ddddi	       t        | d
   d   dddt        j"                  dgddi      | d
   d<   t        j	                  |       }|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        j"                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d t        j                         v st        j                  t              rt        j                  t              nd t        j                  |      d!z  }
d"d#|
iz  }	t        t        j                  |	            d x}x}}y )$Nr$   customer_attestation   )r   r   r%         r   r   r   r    r&   READY_CUSTOMER_ATTESTr8   r:   r;   r<   r?   r@   190rB   znon2:attest:23:zhassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.action
}.startswith
}(%(py6)s)
})r=   r   r
   r   py8owner_review      ownerr   r   r   r"   r   r    READY_OWNER_ONBOARDING_APPROVE)zH%(py2)s
{%(py2)s = %(py0)s.actor
} == %(py6)s
{%(py6)s = %(py4)s.OWNER
}r.   )r=   r   r
   r   zassert %(py8)srt   )r5   updatedictr.   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   rP   
startswithOWNERactor)sr;   rT   rU   rV   rW   rX   @py_assert5@py_assert7@py_format9@py_format7s              r4   1test_onboarding_handoffs_learn_committed_messagesr   [   se   AjM5bAm#9O/P   	(B01	AhKO 	


1A88...8.....8.......1...1...8...........<< 5 <5    <5      1   1   <   5       881810101111111111111111811111101111111111+AjM'm#/H   	(Bwwn.)AhKO 	


1A88777877777877777771777177787777777777777agg7g7g117aagr3   c            	        t               } ddi ddgd| d<   | d   j                  dd	d
di       t        | d   d   dd	dt        j                  dgd
di      | d   d<   t        j                  |       }|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}t        j                  }||z   }|j                   }	||	v }
|
s
t        j                  d|
fd||	f      t        j                  |      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t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}
}	d}|j                   }||v }|st        j                  d|fd ||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d!z  }dd|iz  }t        t        j                  |            d x}x}}d"}|j                   }||v }|st        j                  d|fd ||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d!z  }dd|iz  }t        t        j                  |            d x}x}}y )#Nreadyrm   r      r   r$   r%         r   rp   r&   rq   rx   r   ry   !READY_OPERATOR_ACTIVATION_CUTOVERr8   r:   r;   r<   r?   r@   z--bootstrap-session )in)zX(%(py1)s + %(py4)s
{%(py4)s = %(py2)s.SESSION
}) in %(py9)s
{%(py9)s = %(py7)s.command
}r.   )py1r   r
   r@   r   zassert %(py11)sr_   z--expected-generation 5)z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.command
})r   r^   r>   z<CHECKLIST_EVIDENCE>)r5   r{   r|   r.   r~   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r/   command)r   r;   rT   rU   rV   rW   rX   @py_assert0r   rf   re   @py_format10rh   @py_assert2s                 r4   ,test_ready_emits_exact_operator_cutover_gater   |   s   A #J	AjM mrcGWCUV	(Bwwn'"AhKO 	


1A88:::8:::::8:::::::1:::1:::8:::::::::::!:AII:!I-::-::::-:::!::::::A:::A:::I:::::::::::::::::::$1		1$	1111$	111$111111111111	1111111!.QYY.!Y....!Y...!......Q...Q...Y.......r3   c            	     :   t               } d| d   d<   d| d   d<   d| d   d<   t        j                  } ||       }|j                  }d	}||k(  }|st	        j
                  d
|fd||f      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t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}ddddt        j                  dgd d| d<   t        j                  } ||       }|j                  }d}||k(  }|st	        j
                  d
|fd||f      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t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}| d   j                  ddd       t        j                  } ||       }|j                  }d}||k(  }|st	        j
                  d
|fd||f      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t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}dt        j                  dddd g| d!<   dd"d#t        j                  t        j                  dd$dd%g| d&<   d't        j                  dd(d)i| d*<   t        j                  |       }|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/d0|
iz  }t        t	        j                  |            d x}x}	}|j                   }d#}||k(  }	|	st	        j
                  d
|	fd1||f      d-t        j                         v st	        j                  |      rt	        j                  |      nd-t	        j                  |      t	        j                  |      d.z  }
d/d0|
iz  }t        t	        j                  |            d x}x}	}d2| d*   d'   d3<   t        j                  } ||       }|j                  }d4}||k(  }|st	        j
                  d
|fd||f      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t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}d5t        j                  dd'd6d7t        j                  dd8i| d9<   t        j                  } ||       }|j                  }d:}||k(  }|st	        j
                  d
|fd||f      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t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}d;| d   d<   t        j                  } ||       }|j                  }d<}||k(  }|st	        j
                  d
|fd||f      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t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}y )=NACTIVEr#   r      r   Tr!   r   READY_CUSTOMER_START_CHECKINr8   )zk%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.classify
}(%(py3)s)
}.status
} == %(py10)sr.   r   )r=   r   r^   r>   r@   py10zassert %(py12)spy12wiz1   calories201r   )r   versionstepr   r   finalized_event_idr(   READY_CUSTOMER_CHECKIN_ANSWERsummary   evt1)r   r   r   WAIT_AUTOMATIC_GENERATIONtok1	generated)tokencustomer_keyr   r   r   r)   	published210)user_idchat_idtopic_id)r   r   r   destinationr   r*   draft1created)r   r   rG   r+   READY_OWNER_DRAFT_REVIEWr:   r;   r<   r?   r@   rB   approvedrG   READY_OWNER_EXPLICIT_SENDdsent_audited220)r   r   draft_idrG   r   provider_chat_idprovider_topic_idr,   READY_OPERATOR_DISABLEFREADY_CLEANUP_HANDOFF)r5   r.   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r1   r{   KEYr~   r   )r   rT   rU   re   @py_assert9rf   @py_format11@py_format13r;   rV   rW   rX   s               r4   6test_active_checkin_generation_review_delivery_cleanupr      s   A&AkN7#$AkN< #AjM)::A:a=A=A#AA#AAAAA#AAAAAAA1AAA1AAA:AAAAAAaAAAaAAA=AAAAAA#AAAAAAAA**c""AhK ::B:a=B=B#BB#BBBBB#BBBBBBB1BBB1BBB:BBBBBBaBBBaBBB=BBBBBB#BBBBBBBBhKIrfM::>:a=>=>#>>#>>>>>#>>>>>>>1>>>1>>>:>>>>>>a>>>a>>>=>>>>>>#>>>>>>>> EE  	
Am  '(ww177PST	
AgJ 	155)TAhK 	


1A881118111118111111111111111811111111111<< 5 <5    <5      1   1   <   5       &0AhK(#::>:a=>=>#>>#>>>>>#>>>>>>>1>>>1>>>:>>>>>>a>>>a>>>=>>>>>>#>>>>>>>>EE  $ !

!$

AlO ::;:a=;=;#;;#;;;;;#;;;;;;;1;;;1;;;:;;;;;;a;;;a;;;=;;;;;;#;;;;;;;;$AjM)::::a=:=:#::#:::::#:::::::1:::1::::::::::a:::a:::=::::::#:::::::::r3   c                    t               } t        j                  t        j                  |             }d|d   d<   d|d   d<   t        j                  | |       t        j                  t        j                        5  t        j                  ||        d d d        t        j                  t        j                  |            }|d   j                  t        |d   d                t        j                  t        j                        5  t        j                  |       d d d        t        j                  t        j                  |            }dd	g|d   d   d
<   t        j                  t        j                        5  t        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N   r$   r   r%   r   r&   r   9r   r   )r5   jsonloadsdumpsr.   validate_transitionpytestraisesLifecycleErrorappendr|   validate_snapshot)abbads      r4   8test_monotonic_guard_rejects_stale_duplicate_wrong_router      s>   A

4::a=!AAjM(%&Am\"!Q	q''	(	a# 
)
**TZZ]
#CMc(mA./0	q''	(	C  
)
**TZZ]
#C!$c
CM!W	q''	(	C  
)	( 
)	( 
)	( 
)	(s$   <F	F+?F7F(+F47G c                (   | dz  }t         j                  |ddi       t         j                  |ddi       |j                  } |       }|j                  }d}||z  }t	        |      }d}||k(  }	|	sFt        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                  |      t        j                  |      t        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}x}x}x}x}x}	}|j                         j                         D cg c]  }t        j                   |       }}|d   d   }|d   d   }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y c c}w )Nzevents.jsonlrG   ABi  0o600r8   )z%(py12)s
{%(py12)s = %(py0)s((%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.stat
}()
}.st_mode
} & %(py9)s))
} == %(py15)soctr;   )r=   r   r^   r>   r@   r   r   py15zassert %(py17)spy17r   previous_event_sha256r   event_sha256)z%(py1)s == %(py4)s)r   r
   zassert %(py6)sr   )r.   append_eventstatst_moder   rH   rI   rJ   rK   rL   rM   rN   rO   rc   
splitlinesr   r   )tmp_pathr;   r   rU   re   rf   rg   @py_assert11@py_assert14@py_assert13@py_format16@py_format18xrowsr   rV   @py_format5r   s                     r4   .test_append_ledger_is_private_and_hash_chainedr      s   >!ANN1xo&NN1xo&vv3vx3x3%3%'33'(3G3(G3333(G33333333333333333q333q333v333x333333%333(333G33333333#$;;=#;#;#=>#=aDJJqM#=D>7*+FtAw~/FF+/FFFFF+/FFFF+FFF/FFFFFFFF ?s   'J)returnzdict[str, Any])r   r   )3
__future__r   builtinsrJ   _pytest.assertion.rewrite	assertionrewriterH   importlib.util	importlibr   syspathlibr   typingr   r   __file__rb   ra   utilspec_from_file_locationr	   rT   r   loaderr   rK   rL   rM   @py_format3r   r   _format_booloprX   r   rN   rO   module_from_specr.   modulesnameexec_moduler5   rY   rj   r   r   r   r   r   r2   r3   r4   <module>r      s8   "      
   H~~~--$22 t t      t   t    t                     NN##D)DII     'T
Y B/08;v!$Gr3   