
    ^j$                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	  e	e
      j                         j                  Zedz  Zedz  Zej                  dz  Z e	d      ZddZdd	Zdd
ZdddZddZddZddZddZddZddZy)    )annotationsN)Pathzinvite_harness.pyzpermission-seal.jsonz;reset-controller-st_01a0054d/fixtures/current-empty-profilez9/home/cube/projects/richard/hermes-agent/.venv/bin/pythonc                d    t        j                  | j                               j                         S )N)hashlibsha256
read_bytes	hexdigest)paths    M.omo/evidence/task26/task26-invite-harness-st_01a0056a/test_invite_harness.pyshar      s!    >>$//+,6688    c                &   | dz  }t        j                  t        |       t        j                  |      D ]D  \  }}}t        |      j                  d       |D ]  }t        |      |z  j                  d       ! F |dz  j                  d       |S )Nprofilei    zgateway.lockT)
missing_ok)shutilcopytreeFIXTUREoswalkr   chmodunlink)tmp_pathtargetrootdirsfilesnames         r   r   r      s    	!F
OOGV$WWV_dET
D$Z$%%e,  -
 n$$$5Mr   c            	         t        j                  t        t              dt        t              g| dddi t
        j                  ddi      S )N-BTFPYTHONDONTWRITEBYTECODE1)textcapture_outputcheckenv)
subprocessrunstrVENV_PYTHONHARNESSr   environ)argss    r   r(   r(   "   sH    >>	[	4W55:rzz:4c: r   c                    |dddddddg dd	d

}| j                  t        j                  |      d       | j                  d       | S )NzTask26 Synthetic Customerz
2026-08-16z08:00r      i     )	breakfastlunchdinnerzsynthetic rehearsal)
customer_keydisplay_name	starts_on
daily_timeweekly_weekdaymonthly_daycalories_kcal	protein_gmealsprimary_goalzutf-8)encodingr   )
write_textjsondumpsr   )r
   keyvalues      r   draftrD   ,   sS    3!1-E 	OODJJu%O8JJuKr   c                   t        |       }|dz  }t        |      }| dz  }t        ddt        |      dt        t              dt        |            }|j
                  dk(  sJ |j                         t        j                  |j                        d   d	k(  sJ t        |      |k(  sJ t        j                  |j                               d
   du sJ d|j                         vsJ y )N:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonzdry-run.jsondry-run	--profile--permission	--receiptr   statusPASSready_for_one_inviteTrc1_)r   r   r(   r)   
PERMISSION
returncodestderrr@   loadsstdout	read_text)r   r   ledgerbeforereceiptresults         r   0test_dry_run_is_profile_byte_stable_and_redactedrY   >   s    XFRRF[F'GKVnc*oc'l,F!06==0!::fmm$X.&888v;&   ::g'')*+ABdJJJ**,,,,r   c                t   t        |       }| dz  }| dz  }t        ddt        |      dt        t              dt        t	        | dz              dt        |      d	t        |      d
t        |             }|j
                  dk(  sJ |j                         t        j                  |j                               }t        j                  |j                               }t        j                  |dz  j                               }t        |d         dk(  sJ t        d |d   D              dk(  sJ |d   j                  d      sJ t        j                  |d   j                  d            j!                         |d   k(  sJ t        j                  |d   dd  j                  d            j!                         |d   k(  sJ |d   |d   k(  sJ |j#                         j$                  dz  dk(  sJ |j#                         j$                  dz  dk(  sJ |d   |j                         vsJ |d   dk(  sJ |d   du sJ t        ddt        |      dt        t              dt        t	        | dz  d            dt        | dz        d	t        | dz              }|j
                  dk7  sJ | dz  j'                         rJ y ) Nhandoff.jsonprepared.jsonpreparerH   rI   --draft
draft.json	--handoffrJ   z--evidence-rootr   rF   sessions   c              3  ,   K   | ]  }|d    dk(    yw)statePREPAREDN ).0items     r   	<genexpr>z^test_prepare_uses_api_after_watch_and_emits_only_one_private_token_artifact.<locals>.<genexpr>Z   s     J7IttG}
*7Is   r/   start_tokenrN   asciistart_token_sha256sid_hash
session_idi  r   prepare_invocations!event_subscription_before_prepareTzdraft2.jsonanother_new_keyzsecond-handoff.jsonzsecond-receipt.json)r   r(   r)   rO   rD   rP   rQ   r@   rR   rT   lensum
startswithr   r   encoder	   statst_modeexists)	r   r   handoffrW   rX   publicprivaterU   	duplicates	            r   Ktest_prepare_uses_api_after_watch_and_emits_only_one_private_token_artifactr}   L   s   XF'G(G;F^S_3uX456S\S\#4c(mF
 !06==0!ZZ))+,Fjj**,-GZZ"^^iiklFvj!"a'''Jvj7IJJaOOO=!,,V444>>'-077@AKKMQWXlQmmmm>>'-04;;GDEOOQU[\fUgggg< F<$8888<<>!!E)U222<<>!!E)U222=!):):)<<<<'(A---56$>>>;F^S_3uX57HIJS$99:S$99:	I 1$$$0088::::r   c                   g d}|D ]  }t        | |z        }|dz  }t        j                  |j                               }|dk(  rd|d   d   d<   n|dk(  r$|d   j	                  t        |d   d                ny|d	k(  rd
dig|d   d   d<   ne|dz  }t        j                  |j                               }ddig|d<   |j                  t        j                  |             |j                  d       |dk7  r5|j                  t        j                  |             |j                  d       | |z  dz  }t        ddt        |      dt        t              dt        t        | |z  dz  d|             dt        | |z  dz        dt        |            }	|	j                  dk7  sJ |       | |z  dz  j                         sJ  y )N)nonterminalr|   recoveryregistryrF   r   re   ra   r   rd   r|   r   unsafeTrecovery_attemptszcustomers/registry.jsonr4   existing	customersr   r   receipt.jsonr]   rH   rI   r^   r_   new_r`   r[   rJ   )r   r@   rR   rT   appenddictr?   rA   r   r(   r)   rO   rD   rP   rx   )
r   	scenariosscenarior   ledger_pathrU   r   rC   rW   rX   s
             r   Jtest_prepare_rejects_nonterminal_duplicate_recovery_and_existing_authorityr   o   s   DIH,-[[K1134}$-7F:q!'*$:%%d6*+=a+@&AB#;CT:J9KF:q!"56 99HJJx1134E#1:">!?E+

5 12NN5!z!""4::f#56e$X%6{CKZs5H!4|!CtH:EVWXX0>ABKQTU\Q]

   A%/x/%x'.8@@BBB7 r   c                F   t        |       }| dz  }| dz  }t        ddt        |      dt        t              dt        t	        | dz              dt        |      d	t        |            j
                  d
k(  sJ t        j                  |j                               }| dz  }| dz  }t        j                         \  }}t        j                  t        t              dt        t              ddt        |      dt        t              d|d   d|d   dt        |      d	t        |      dddt        |      gdt        j                  t        j                  |f      }	t        j                   |       t        j"                  |d      dk(  sJ t        j                   |       t%        j&                  d      }
t        j                  |j                               d   }|
j)                  |
j+                  |            j-                  |ddd       |	j/                  d !      \  }}|	j
                  d
k(  sJ |       t        j                  |j                               }|d"   d#k(  sJ |d$   dk(  sJ |d%   dk(  sJ |d&   du sJ |d'   du sJ d(||z   |j                         z   vsJ y ))Nr[   r\   r]   rH   rI   r^   r_   r`   rJ   r   z
ready.jsonzobserved.jsonr    observe--session-idrn   
--sid-hashrm   z--readyz--timeout-seconds5z
--ready-fdT)r#   rS   rQ   pass_fdsr/      1z-gateway.platforms.telegram_customer_bootstraprj   
8527916639101)user_idchat_id
message_id
   )timeoutrK   PASS_CLAIM_OBSERVEDaccepted_start_claim_countactor_id
private_dmevent_subscription_before_claimrN   )r   r(   r)   rO   rD   rP   r@   rR   rT   r   piper'   Popenr*   r+   PIPEcloseread	importlibimport_moduleRoomBootstrapStoreroom_bootstrap_state_dirclaim_rehearsal_customer_invitecommunicate)r   r   ry   prepared_receiptpreparedreadyobservedread_fdwrite_fdprocessmoduletokenrS   rQ   rC   s                  r   ?test_observe_subscribes_before_exact_single_private_actor_claimr      s   XF'G/1;F^S_3uX456S\S)* jA	  
 zz*4467H|#E/)H	GX	[	4Wy+s6{	Z.(<:P	x
+YE
	c(m%8#|SQY]	\ *//*//XKG HHX777A$&&&HHW $$%TUFJJw((*+M:E
f==fEFff|\e g  (((4NFF"*F*"JJx))+,E?3333-.!333,,,$&&&23t;;;&8+=+=+?????r   c                   t        |       }| dz  }| dz  }t        ddt        |      dt        t              dt        t	        | dz              dt        |      d	t        |            j
                  d
k(  sJ t        j                  |j                               }t        ddt        |      dt        t              d|d   d|d   d	t        | dz              }|j
                  d
k7  sJ | dz  j                         rJ y )Nr[   r\   r]   rH   rI   r^   r_   r`   rJ   r   expirer   rn   r   rm   zexpired.json)
r   r(   r)   rO   rD   rP   r@   rR   rT   rx   )r   r   ry   r   rC   rX   s         r   4test_expire_is_canonical_and_refuses_before_deadliner      s    XF'G/)H;F^S_3uX456S\S] jA	  
 JJx))+,E+s6{NC
Ol+\5;LSN23F
 !!!>)113333r   c                f   t        |       }| dz  }t        j                  t        j	                               }d|d<   |j                  t        j                  |             |j                  d       t        ddt        |      dt        |      dt        | d	z              }|j                  d
k7  sJ y )Nzpermission.json
8693203710r   r   rG   rH   rI   rJ   r   r   )r   r@   rR   rO   rT   r?   rA   r   r(   r)   rP   )r   r   alteredrC   rX   s        r   0test_permission_and_loaded_byte_pins_fail_closedr      s    XF**GJJz++-.E$E*tzz%()MM%KVnc'lc(^";<>F!!!r   )r
   r   returnr)   )r   r   r   r   )r-   r)   r   z subprocess.CompletedProcess[str])task26_same_actor_20260815)r
   r   rB   r)   r   r   )r   r   r   None)
__future__r   r   r   r@   r   r   r'   pathlibr   __file__resolveparentHEREr+   rO   r   r*   r   r   r(   rD   rY   r}   r   r   r   r   rf   r   r   <module>r      s    "    	   H~&&
$
$**

++U
UNO9	$- ;FC@&@R4&	"r   