
    jw                       U d Z 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	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ZddlZddlZddlmZmZmZmZ ddlmZ ddlmZmZ  ed      Zedz  Z ed	      Z ed
      Zedz  Z edz  Z!dZ"edz  Z#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/e
j`                   e1e
dd      z  Z2ddddd d!d"Z3g Z4d#e5d$<    G d% d&e6      Z7dKd'Z8dLd(Z9dMd)Z:dNd*Z;dOd+Z<dPd,Z=dOd-Z>dQd.Z?dRd/Z@dSd0ZAdTd1ZBdUd2ZCd3d4dVd5ZDdWd6ZEdXd7ZFdYd8ZGdOd9ZHdOd:ZIdZd;ZJd[d<ZKd\d=ZLd]d>ZMd^d?ZNd_d@ZOd`dAZPdadBZQdbdCZRdcdDZSdddEZTdedFZU G dG dH      ZVdfdIZWeXdJk(  r eY eW             y)gz7One-use, fail-closed Task26 strict-A launch controller.    )annotationsN)UTCdatedatetimetime)Path)AnyCallablez)/home/cube/projects/richard/traning coachz>.omo/evidence/task26/task26-strict-final-candidate-st_01a00f35z)/home/cube/.hermes/profiles/dualcoachtestz(/home/cube/projects/richard/hermes-agentz.venv/bin/pythonz".venv/lib/python3.12/site-packagesz$hermes-gateway-dualcoachtest.servicezC.omo/evidence/task26/task26-strict-launch-controller-v4-st_01a00f53@99c2343645e5238568d1263a347587461d48edead1f3ce30aa9d804cee9b7c0e@8f9111b2ac21ac1ae1fb3f0af50bd1ff9b522e3db14cf1cf886b13cb2ab9f4b0@573d19e464c7df2a0dcacddbb915447beb20c97aceb7c1d1306415014d5730d7@90b2557bb159dc7595ea6bcd3d76d1a0dabf77c51f78aa0ffcf237746d669b49@b87aeaca4abb39ce43f6c9dc35eb47e9c3665ec363882aa286d47fb74ec1b7dc@fb48a1931828ee60ab3812faf795550bf4e672a54c56f78cd10dcf674c45560d@262d345eb795c55ca8076abf96d2262be4a7fe9a05405fee7277dea7c59d0175@fb95738da52c4d0c6f3e9664f9ce2d657bba8845a555b08444acba61e346f570
8527916639
8693203710dual_coach_pilot_test_bot)verifiedbaselineprepareddeployedstarted
subscribed
membershipproviderreadyinvite_intentinvite_result
O_NOFOLLOWzgateway/platforms/telegram.pyz0gateway/platforms/telegram_customer_bootstrap.pyz3gateway/platforms/telegram_staff_membership_gate.pyz$gateway/platforms/dualcoach_admin.pyzcheckin_cli/__init__.pyzcheckin_cli/customer_admin.py)zgateway.platforms.telegram-gateway.platforms.telegram_customer_bootstrap0gateway.platforms.telegram_staff_membership_gate!gateway.platforms.dualcoach_admincheckin_clicheckin_cli.customer_adminzlist[subprocess.Popen[Any]]CHILDRENc                      e Zd Zy)BlockedN)__name__
__module____qualname__     launch_controller_v5.pyr)   r)   8   s    r.   r)   c                V    t        j                  | ddd      dz   j                         S )NT),:)	sort_keys
separatorsensure_ascii
)jsondumpsencode)values    r/   canonr;   :   s'    JJuRVWX\\ddffr.   c                H    t        j                  |       j                         S N)hashlibsha256	hexdigest)raws    r/   	sha_bytesrB   =   s    )<)F)F)H"Hr.   c                4    t        | j                               S r=   )rB   
read_bytes)paths    r/   sharF   >   s    9T__->#??r.   c                n   | j                  d      t        t              k7  rt        d      | j                  d      t        t        dz        k7  rt        d      | j                  d      t        t
        dz        k7  rt        d      | j                  d	      t        t              k7  rt        d
      | j                  d      t        t        dz        k7  rt        d      | j                  d      t        t              k7  rt        d      | j                  di       }t        j                         D ]z  \  }}|j                  |i       }|j                  d      t        t
        |z        k7  rt        d|       |j                  d      |j                  d      k7  snt        d|        | j                  d      t        k7  s| j                  d      t        k7  rt        d      | j                  d      t        k7  rt        d      | j                  d      t        k7  rt        d      y )N
executablezwrong interpreterprefixz.venvzwrong virtual environmenttelegram_originztelegram/__init__.pyztelegram missing or path driftexecstart_pythonz#service ExecStart interpreter driftservice_virtual_envzservice environment driftworking_directoryzservice working-directory driftmodulesoriginzimport path drift: loaded_sha256wheel_sha256zimport byte drift: hermes_wheel_sha256profile_wheel_sha256zinstalled wheel driftv4_controller_seal_sha256zv4 controller seal driftv4_clean_run_seal_sha256zv4 clean run seal drift)getstrPYTHONr)   HERMESSITE_PACKAGESPROFILEMODULE_MEMBERSitems
HERMES_SHAPROFILE_SHAV4_CONTROLLER_SEAL_SHAV4_CLEAN_RUN_SEAL_SHA)recordrN   namememberrows        r/   validate_interpreter_recordrf   @   s   zz,3v;.g>Q6R0Rzz(s6'>22'B]:^4^zz#$M:P,P(QQY`  bB  ZC  TCzz$%V4GDi<j6jzz'(Cw,??wOjGkAkzz%&#g,6gFg>h8hJJy$G%++-VKKR 778M&$8 99K^_c^dIeAf;f77?#sww~'>>gPcdhciNjFk@k . zz'(J6&**E[:\`k:ksz  |S  tT  nTzz-.2HHPWXrPsJszz,-1FFgVoNpHpFr.   c                    t         j                  t        t              k7  rt	        dt         j                         	 t        j                  d      } t        dz  t        dz  d}i }|j                         D ci c]  \  }}|t        j                  |       }}}	 t        j                         D ]  \  }}t        j                  |      }	t        |	dd       }
t        |
t              st	        d|       t        |
      j!                         }||j#                  d	      rd	nd
   }t        |      t%        |      t'        |j)                  |            d||<    	 |j+                         D ]  }|j-                           	 t/        dddt0        ddddddg
      j2                  }t5        d |j7                         D              }|j9                  dd      }|j9                  dd      }t        | dd       }t        |t              st	        d      dt         j                  t         j:                  t        t        |      j!                               d|v r(|j=                  dd      d   j=                  dd      d   nd t?        d |j=                         D        d       |j9                  d      |t%        |d	         t%        |d
         t%        t@        dz        t%        t@        dz        d}tC        |       |S # t        $ r}t	        d      |d }~ww xY wc c}}w # |j+                         D ]  }|j-                           w xY w)Nzwrong interpreter: telegramz,telegram unavailable in required interpreter.artifacts/hermes_agent-0.17.0-py3-none-any.whl5artifacts/physique_checkin_cli-0.1.0-py3-none-any.whl)gatewayr%   __file__zimport has no file: rk   r%   )rO   rP   rQ   /usr/bin/systemctl--usershow-p	ExecStartEnvironmentWorkingDirectoryc              3  J   K   | ]  }d |v s|j                  d d        yw=   Nsplit.0xs     r/   	<genexpr>z$interpreter_proof.<locals>.<genexpr>f   s#     F(91SAXA(9   	## ztelegram import has no fileztask26-v5-interpreter-proof-v1zpath=rw    r   c              3  j   K   | ]+  }|j                  d       s|j                  dd      d    - yw)zVIRTUAL_ENV=rv   rw   N)
startswithry   rz   s     r/   r}   z$interpreter_proof.<locals>.<genexpr>j   s}       Zj  vI  qr  MN  MY  MY  Zh  Mi  [\  [b  [b  cf  gh  [i  jk  [l  vIs   33zSEAL-v4.jsonz)run-20260817-strict-a-v4/RUN-SEAL-v4.json)schemarH   rI   rJ   rK   rL   rM   rN   rR   rS   rT   rU   )"sysrH   rW   rX   r)   	importlibimport_moduleImportError	CANDIDATEr]   zipfileZipFiler\   getattr
isinstancer   resolver   rF   rB   readvaluescloserunSERVICEstdoutdict
splitlinesrV   rI   ry   nextPREDECESSORrf   )rh   excwheelsrN   keyrE   archivesrc   rd   modulemodule_filerO   archivero   fields	execstartenvironmenttelegram_filerb   s                      r/   interpreter_proofr   P   s   
~~V$G6I#..IY4Z,[&[O((4 MM !XXF G8>GHCc'//$''HG:)//1KD**40FgfZX\>]+k#.g@TUYTZ>[6\0\$,,.F$//)*DY-XG$'KF[deleqeqrxey[z{GDM 2  (G'--/(	"8F74DQ^_cdvw	x		DF(9FFFjjR(Ifjjr6R+(:d3MmC(8U0V*V53>>[^[e[ex{  }A  BO  }P  }X  }X  }Z  y[  `g  kt  `t  ox  o~  o~  F  GH  oI  JK  oL  oR  oR  SV  WX  oY  Z[  o\  z~  UY  Zj  vA  vG  vG  vI  Zj  ko  Up  EK  EO  EO  Pb  Ec  nu  LO  PV  W`  Pa  Lb  z}  ~D  ER  ~S  zT  qt  u@	  A	O	  uO	  qP	  l	o	  p	{	  |	g
  p	g
  l	h
  i
F'/  ODE3NO H  (G'--/(s*   K? ; LC L" ?	LLL"'M	c                   t        j                  | j                               dt        t	        t
                    t        t              t        t        d}t        fd|j                         D              rt        d      S )NAUTHORIZED_ONE_USE_V5)statuscontroller_sha256required_interpreterrT   rU   c              3  L   K   | ]  \  }}j                  |      |k7    y wr=   rV   )r{   kvr:   s      r/   r}   z$verify_permission.<locals>.<genexpr>p   s$     
7&6sq599Q<?&6   !$zv5 permission mismatch)r7   loads	read_textrF   r   rl   rW   rX   r`   ra   anyr]   r)   )rE   expectedr:   s     @r/   verify_permissionr   m   sj    
**T^^%
&E.3tH~CVnqrxny  Wm  I^  _H

7hnn&6
77wG_?`9`Lr.   c            	        dd l } | j                  t        dz  j                               }|j	                  di       j	                  di       }t        |t              rd|v rt        d      t        j                  d      }t        j                  d      }t        |d	d       }t        |d	d       }t        |t              rt        |t              st        d
      t        |      j                         }t        |      j                         }t        t        |dd             rt        t        |dd             st        d      dddddt        |      t        |      dS )Nr   config.yaml	platformsrh   tokenzliteral config token forbiddenhermes_cli.env_loadergateway.configrl   z2authoritative credential resolver path unavailableload_hermes_dotenvload_gateway_configz-authoritative credential resolver unavailableztask26-v5-resolver-contract-v1Fz(hermes_cli.env_loader.load_hermes_dotenvz"gateway.config.load_gateway_config)r   literal_config_tokennetwork_usedresolver	bootstrapresolver_sha256bootstrap_sha256)yaml	safe_loadr[   r   rV   r   r   r)   r   r   r   rW   r   r   callablerF   )	r   rA   telegram_cfg
env_loadergateway_configenv_module_fileconfig_module_fileenv_fileconfig_files	            r/   resolver_contractr   s   s   -88:;CR(,,Z;Ll4(G|,C7SsKtEt&&'>?JPYPgPghxPyJz$7OGTbcmnrLs9Koc**=OPS2T\c  eY  ]Z  WZ/"**,H$?Q:R:Z:Z:\kGJ';DAB(SZ[ij  AE  TF  KG  OV  WF  OG  IG5Ubg  t^  kO  be  fn  bo  CF  GR  CS  T  Tr.   c                    t        | dd       }t        |dd       }t        |t              r|j                  |      nd }t        |dd       }t        |t              r|j                         st        d      |S )Nr   TELEGRAMr   ztelegram credential unavailable)r   r   r   rV   rW   stripr)   )configplatformr   rh   resolvedr   s         r/   extract_telegram_credentialr      sg    f[.IXj.H(29T(BY]]8$H
(74
(EeC WEf=g7gLr.   c                 &   t               } 	 t        j                  d      }t        j                  d      }t        j                  j                  d      }t        t              t        j                  d<   	 |j                  t        t        dz        }|j                         }|!t        j                  j                  dd        n|t        j                  d<   	 t        ||j                        }i | dd|D cg c]$  }t        t!        |      j#                               & c}d	}	||	fS # |!t        j                  j                  dd        w |t        j                  d<   w xY w# t        $ r  t        $ r}t        d      |d }~ww xY wc c}w )
Nr   r   HERMES_HOMEz.env)hermes_homeproject_envz*authoritative credential resolution failedTF)credential_resolvedcredential_storedcredential_source_files)r   r   r   osenvironrV   rW   r[   r   rY   r   popr   Platformr)   	Exceptionr   r   )
contractr   r   old_homeloadedr   r   r   pproofs
             r/   resolve_telegram_credentialr      sr    Hb**+BC
T]TkTkl|T}^.#g,

=0I	500WQWX^Q^0_F!557Fd!C,4"**]+)&1H1HI OX  ODU  GM  fN  GM  BCfijnopjqjyjyj{f|  GM  fN  OE; d!C,4"**]+Ea7+W#X^aaa fNs7   A)E( 6.D- $AE( :)F
-8E%%E( (F:FFc                    t        | dd       }t        | dd       }t        |      t        us|dk  s|t        k7  s||k7  rt	        d      ||fS )Nidusernamer   z6wrong Telegram bot identity or administrator readiness)r   typeintBOT_USERNAMEr)   )identityreadiness_bot_idbot_idr   s       r/   validate_network_identityr      sa    8D&F*T1RF|3&!)x/EIY[aIaip  rj  jk  dk(?r.   c           	       K   dd l }t        j                  d      j                  }t        j                  d      }|j	                  t
        dz  j                               }ddd t        t        ddg d	}|j                  ||      }	  ||       4 d {   }t        j                  |j                         d
       d {   }t        j                  |j                  ||      d       d {   }	d d d       d {    t        	      \  }}ddddgt!        |      ||j"                  t%        |j&                        ddS 7 7 7 Z7 L# 1 d {  7  sw Y   \xY w# t        $ r}
t        d      |
d }
~
ww xY ww)Nr   rh   r#   r   rw   ordinary_v10user_idchat_idtopic_id)versionregistry_modediagnostic_session_digestowner	customers   timeout   z:bounded read-only Telegram identity/admin preflight failedztask26-v5-telegram-preflight-v1PASS_READ_ONLYget_mezget_chat_member(bot_admin)F)r   r   
operationsr   bot_usernamestaff_chat_inventory_sha256staff_chat_countr   )r   r   r   Botr   r[   r   OWNERbuild_staff_chat_inventoryasynciowait_forr   verify_subscription_readinessr   r)   r   rW   r?   lenrows)r   r   r  gaterA   	synthetic	inventorybotr   readiness_idr   r   r   s                r/   telegram_network_preflightr     s    
+//Ci6M6M  OA  7B-88:;C=UYmr  ~C  OR  cS  `b  cI--i<Iru::"++CJJLDDH&//0R0RSVW`0ajlmmL : .h|DOF86@P_g  iE  _F  PS  TZ  P[  ks  R[  Rb  Rb  vy  zC  zH  zH  vI  ^c  d  d Dm ::: q7+g#hnqqqs   BFE$ EE$ )EE	.E0E1E5E$  EE$ AFE$ 	EEE$ E!EE!E$ $	E>-E99E>>Fc                    t        |      }|rNt        j                  | |      }t        |      t        us|dk  s|t        |      kD  rt        d      ||d  }|rMy y )Nr   zincomplete write)
memoryviewr   writer   r   r  r)   )fdrA   viewns       r/   	write_allr     sU    c?D
HHR7#a1s4y=HZ@[:[ABx r.   F	exclusivec                  | j                   j                  ddd       | j                   j                  d       | j                         rt	        d|        |r| j                         rt	        d|        | j                  d| j                  z   dz   t        j                         j                  z   dz         }t        j                  |t        j                  t        j                  z  t        j                  z  t         z  d      }	 t        j"                  |d       t%        |t'        |             t        j(                  |       t        j*                  |       |r.| j                         r|j-                          t	        d|        t        j.                  ||        t        j                  | d       t        j                  | j                   t        j0                  t        j2                  z  t         z        }t        j(                  |       t        j*                  |       y # t        j*                  |       w xY w# t        j*                  |       w xY w)	NT  parentsmodeexist_okzsymlink output: zone-use output exists: .z.tmpi  )parentmkdirchmod
is_symlinkr)   exists	with_namerc   uuiduuid4hexr   openO_WRONLYO_CREATO_EXCLFLAGSfchmodr  r;   fsyncr   unlinkreplaceO_RDONLYO_DIRECTORY)rE   r:   r  tmpr  dfds         r/   atomicr9     s   KKd>@Q@QRW@X*:4&(A BBT[[]'4KD62R*S$S
..TYYs*4::<+;+;;FB
CC	bkk"**,RYY6u<e	DB
		"eiE%L9288B<XXb\T[[]CJJLBYZ^Y_@`8a2aJJsD288D%0
BKK6u<=C	#XXc] XXb\
 XXc]s   
A H, I ,IIc           	         t        j                  | fdddd|}|j                  r6t        d|j                   d| d|j                  j                                |S )NTF)textcapture_outputcheckzcommand failed (z): z: )
subprocessr   
returncoder)   stderrr   )commandkwr   s      r/   r   r      s^    nnWL$dLLA||7%5all^3wkQSTUT\T\TbTbTdSe#fggHr.   c                     t        dddt        ddddddg
      } t        d | j                  j	                         D              S )	Nrm   rn   ro   rp   ActiveStateSubStateMainPIDc              3  J   K   | ]  }d |v s|j                  d d        ywru   rx   rz   s     r/   r}   zservice.<locals>.<genexpr>   s#     J(=1A(=r~   )r   r   r   r   r   )r   s    r/   servicerH     sC    	]4PZ[_`i
jkAJ(;(;(=JJJr.   c                     dd l } | j                  t        dz  j                               }|d   d   d   }|d   }|d   |d   |d	   d
S )Nr   r   r   rh   extraadaptive_nutritiondelivery_enabled
activationdeliveryrL  rM  rN  )r   r   r[   r   )r   r|   rJ  as       r/   config_flagsrQ     sg    
nngm+6689A;PZA[\cAd5hm  oC  iDfg !34!L/]^_i]jkkr.   c                    t        j                  t        dz  j                               t        j                  t        dz  j                               } t        t
        t        t        t        t        d}j                  d      dk7  s"t        fd|j                         D              rt        d      t        t        dz        t        k7  rt        d      | D ]`  }t        |d	   z  }|j                         r2|j!                         j"                  |d
   k7  st        |      |d   k7  sQt        d|d	           dD ]R  }t        j                  t        d| dz  j                               }|j                  d      dk7  sFt        d|        t%        t'        t(              t'        t        dz        g       |S )Nz	SEAL.jsonzPACKAGE-INVENTORY.json)full_candidate_digestcore_candidate_digestrR   rS   package_inventory_sha256lifecycle_observer_v7_sha256r   READY_STRICT_REHEARSALc              3  L   K   | ]  \  }}j                  |      |k7    y wr=   r   )r{   r   r   seals      r/   r}   z#verify_candidate.<locals>.<genexpr>   s%     :fUecaPQ488A;>Uer   zcandidate seal mismatchzpackage inventory driftrE   sizer?   zcandidate inventory mismatch: )	objectivesecurityztrainer-freequalityqa
provenancezreview-z.jsonzreview not ready: zverify_candidate.py)r7   r   r   r   FULLCOREr^   r_   PACKAGE_SHAOBSERVER_SHArV   r   r]   r)   rF   is_filestatst_sizer   rW   rX   )invr   re   r   rc   rrY  s         @r/   verify_candidateri     s   	Y{*557	8Ddjj)TlJlIwIwIy>z#&*4^h  AL  hs  S_  `Hxx33s:fU]UcUcUe:f7fnu  wP  oQ  iQ
9--.;7KdCe=e
CK
yy{affh..F;s1vs8}?T\c  gE  FI  JP  FQ  ER  eS  ]T  WT  T
**i'$u 55@@B
C55?66gHZ[_Z`Fa>b8b T VS#889:;Or.   c            
     B   t               ddddk7  rt        d      t        dz  t        dz  t        dz  t        d	z  t        d
z  t        dz  t        dz  t        dz  t        dz  g	} | D cg c]  }|j                         st	        |        }}t        dz  }|j                         rPt        j                  |j                               j                  dg       g k7  r|j                  t	        |             |rt        ddj                  |      z         t               }|ddddk7  rt        d      t        ddt	        t        j                               ddg      j                  }t!        d |j#                         D              rt        d      d|ddS c c}w )Nr   inactivedead)rF  rD  rE  zservice not inactive/deadcustomers/registry.jsongateway.lockgateway.pidgateway_state.jsonstate.dbsessionsdata/onboardingdata/owner-actionsdata/customerszcron/jobs.jsonjobsz>unexpected live bytes must be archived by cleanup controller: r1   FrO  zconfig safety flags mismatchz/usr/bin/ps-u-ozargs=c              3     K   | ]M  t        t        t              j                               vs,d v xs dv xr t	        fddD               O yw)dualcoachtesttask26c              3  &   K   | ]  }|v  
 y wr=   r-   )r{   r|   ls     r/   r}   z%baseline.<locals>.<genexpr>.<genexpr>   s     :vKua16Kus   )observerzjournalctl -fzgateway runN)rW   r   rl   r   r   )r{   r}  s    @r/   r}   zbaseline.<locals>.<genexpr>   s       {  AP{|  TW  X\  ]e  Xf  Xn  Xn  Xp  Tq  yz  TzOq 1HMvs:vKu:v7vv  APs
   -A%Azstale target processzinactive/deadr   )rH  flagsunexpected_live_bytes)rH  r)   r[   r'  rW   r7   r   r   rV   appendjoinrQ  r   r   getuidr   r   r   )	forbiddenr   
unexpectedrv  r  pss         r/   r   r      s   yc
fMMU\]xUyOy001GP]H]^efz^z  |C  DN  |N  OV  Wa  Oa  bi  j{  b{  |C  DX  |X  Y`  aq  Yq  rI )8	1QXXZA	J8	!	!D{{}DNN$4599&DbH*J[J[\_`d\eJf!abebjbjkubv!vww
.E%UeLLT[\zT{N{
M$s299;/W=>EEB
  {  AC  AN  AN  AP  {  {  CJ  Ka  Cb  }b%eANN 9s   +FFc                   d| z   }t         dz  }|j                  j                  d       dt        t        ddg dd d	}t	        ||d
       t        j                  d      }t        j                  d      }t        j                         }|j                  ||j                  |dt        t        d|t        d      ddddd             |j                  |d|j                         dddddd	      }|j                  |j                  t                     j!                  |t"        t              }||j$                  j&                  |j$                  j(                  d|j*                  dS )Ntask26_strict_a_v5_rm  r  )r   rw   r   r   r   )r   r   r   r   r   Tr  r&   r"   zTask26 strict A v5   r   i     )meal_1meal_2meal_3z08:00)r  owner_id)customer_id
session_idsid_hash
generationcustomer_link)r[   r#  r$  r  r9  r   r   r   todayregister_customerCustomerDraftACTORdaytime	isoformatRoomBootstrapStoreroom_bootstrap_state_dir!prepare_rehearsal_customer_inviter   sessionr  r  r  )	lineagecustomerregistryinitialadminr   r  draftr   s	            r/   preparer     s   "7*H..H0E0E50E0QEES!Q^`q~  \`  aG
8Gd+

!
!">
?E%%&UVI
**,E	HU%8%8BVW\]bcfglmtuvmwxyz{  }A  BE  Fb  &c  d

!
!(+?@QRYZ[\]^bcf  hD  EE)))*L*LW*UVxxy~  MY  chx  iH"0@0@0K0KW_WgWgWpWp~  QY  Qg  Qg  h  hr.   c                   t         dz  }t         dz  }t        t        t              ddddddt        |      t        |      g	       d	}t	        j
                  t        t        t              d
|g      j                        }dt        fdt        ffD ]'  \  }}||   d   d   d   }||k7  st        d| d       t               }dt        t        t        t        t        |d   d|}	t        | |	d       |	S )Nri   rj   z-mpipinstallz	--no-depsz--no-compilez--force-reinstalla  import hashlib,importlib.metadata as m,json
from pathlib import Path
import gateway.platforms.telegram as t,checkin_cli
def d(n):
 x=m.distribution(n).read_text("direct_url.json");return json.loads(x)
print(json.dumps({"hermes_origin":str(Path(t.__file__).resolve()),"profile_origin":str(Path(checkin_cli.__file__).resolve()),"hermes_direct":d("hermes-agent"),"profile_direct":d("physique-checkin-cli")},sort_keys=True))z-chermes_directprofile_directarchive_infohashesr?   z
installed z	 mismatchztask26-strict-deployment-v5rN   )r   candidate_digestcandidate_core_digestcandidate_inventory_digestrR   rS   loaded_byte_proofTr  )r   r   rW   rX   r7   r   r   r^   r_   r)   r   r`  ra  rb  r9  )
outhwpwcoder   r   wantgotr   receipts
             r/   deployr     s+   AABi  QH  GH2VT%	+nEXY\]_Y`adegahij 
yD
**S#f+d40188
9E%j13CK2PQD#J~&x0:9GjY$?@@ R F3tdh  GR  is  KV  kq  r{  k|  E  D  EG
3w&wr.   c                   t        j                         |z   }t        j                         |k  rl| j                         r/	 t        j                  | j                               } ||      r|S 	 t        j                  d       t        j                         |k  rlt        d|        # t        t        j                  f$ r Y Vw xY w)N皙?zbounded event timeout: )
r   	monotonicr'  r7   r   r   OSErrorJSONDecodeErrorsleepr)   )rE   r   	predicatedeadliner:   s        r/   	wait_filer    s    ^^g%H
..
8
#;;=8jj!12U#E\#

3 ..
8
# +D62
33 D001747s    ,B) )CCc                b   | dz  }t        |dd      }t        j                  dddt        dd	d
ddg	|t        j                  d      }| dz  }| dz  }t        j                  t        t              t        t        dz        ddt        |      dt        |      gt        j                  t        j                  d      }t        j                  ||f       t        |dd        t        dddt        g       t        j                         dz   }t        j                         |k  rt               }t         dz  }	|j#                  d      dk(  r|j#                  d      dk(  r||	j%                         rlt'        j(                  |	j+                               }
|
j#                  d      dk(  r5|
j#                  d i       j#                  d!i       j#                  d"      d#k(  rn8t        j,                  d$       t        j                         |k  rt/        d%      t         d&z  }t        j                         d'z   }d }t        j                         |k  r|j%                         r]|j+                         j1                         D 
cg c]  }
t'        j(                  |
       }}
t3        d( t5        |      D        d       }|rn-t        j,                  d)       t        j                         |k  r|st/        d*      t7        t               d+         |j8                  |j8                  |d,   |d-   |d.   d/S c c}
w )0Nzjournal.txtwzutf-8)encodingz/usr/bin/journalctlrn   rw  z-fz-n0z
--no-pagerrx  catT)r   r@  start_new_sessionzobserver-events.jsonlzobserver-ready.jsonzlifecycle_observer_v7.pyobservez--eventsz--ready   c                *    | j                  d      dk(  S )Nr   ARMEDr   )r|   s    r/   <lambda>zstart_runtime.<locals>.<lambda>  s    quuX7r.   rm   startZ   rp  rD  activerE  runninggateway_stater   rh   state	connectedg?zgateway readiness timeoutz9data/onboarding/telegram-staff-membership-v1/events.jsonl
   c              3  J   K   | ]  }|j                  d       dk(  s|  yw)eventsubscription_armedNr   rz   s     r/   r}   z start_runtime.<locals>.<genexpr>$  s!     Z>aQUU7^EY5Y>s   ##r  z!membership subscription not armedrF  subscription_epoch_idobserved_at_utcr  )service_pidobserver_pidmonitor_pidr  subscription_armed_at_utcr  )r,  r>  Popenr   STDOUTrW   rX   r   DEVNULLr'   extendr  r   r   r  rH  r[   rV   r'  r7   r   r   r  r)   r   r   reversedr   pid)rootjournaljfmonitoreventsr   r~  r  sr  r|   r   armedr  s                 r/   start_runtimer    s&   G4W#E3HT'$uUabfglmuw  @J  @Q  @Q  dh  iG''Ft4I/Is6{3y9S/S+TU^_ijmntjuv  AD  EJ  AK  L  T^  Tf  Tf  nx  n@  n@  SW  XHOOWX&'eA78	hww78^^b H
..
8
#
)7#77U55)aeeJ.?.Ju||~jj*+Auu_%y0QUU;r5J5N5NzZ\5]5a5abi5jlw5wy~

2 ..
8
# 34
4RRJ^^b H
E
..
8
#)3)=)=)?)J)J)LM)LA$**Q-)LDMZ8D>Z[_`Ee

3 ..
8
#  CDDgi	238<<^e^i^i  CH  I`  Ca  ~C  DU  ~V  uz  {X  uY  Z  Z Ns   ;L,c                  K   dd l }t        j                  d      j                  }t        j                  d      }t	        j
                  t        dz  j                               }|j                  t        dz  j                               }	|j                  ||	      }
|
j                  |d   k7  rt        d       ||      4 d {   }|j                  ||
| |t        dz  t        dz  |d   t        t              |d	   d
|d   |d          d {   cd d d       d {    S 7 a7 7 	# 1 d {  7  sw Y   y xY ww)Nr   rh   r#   rm  r   r  zstaff inventory driftr  r  rw   r  r  )
output_pathdeployment_receipt_pathregistry_pathconfig_pathr  customer_user_idbootstrap_session_idbootstrap_generationr  r  )r   r   r   r  r7   r   r[   r   r   r  r?   r)   create_pre_activation_evidencer   r  )r  
deploymentr   runtimer   r   r  r  r  r   r  r  s               r/   r   r   *  s    
+//C		 	 !S	TDZZ!::EEGHHQUQ_Q_ahivav  aB  aB  aD  RE&  QU  Qp  Qp  qy  z@  QA  GP!>??wOfGgAg5zzS88YSZs}  MT  Un  Mn  {B  CP  {P  ]e  fs  ]t  FI  JO  FP  fn  o{  f|  RS  jq  rI  jJ  el  mH  eI8  J  J zz J zzzs[   CED(E
AD.D*D.E"D,#E*D.,E.E 4D75E <Ec                6   t        j                  d      j                  } || d      }|j                  dk7  r"t	        d|j
                  j                  z         |j
                  j                  t        |j                        t        |j                        dS )Nr$   T)receipt_directoryallow_billable_active_prober   zprovider readiness failed: )resultreceipt_sha256receipt_path)
r   r   provider_auth_checkexitr)   r  r:   rF   r  rW   )receipt_dirr  rh  s      r/   r   r   3  su    !//0SThhKTXYAvvqy =ahhnn LMMXX^^S5HX[\]\j\jXkllr.   c                  K   dd l }t        j                  d      j                  }| dz  }| dz  }|j	                         s|j	                         rt        d      d|d   z   }t        |dd	t        t        |d
   z   j                               |d   |d
   t        t        |j                               dd       |j                  t        dz  j                               }	  ||      4 d {   }	|	j                  t        t              |d       d {   }
d d d       d {    ddt'        
j(                        t'        |
j*                        t        t        |d
   z   j                               d}t        ||d       |S 7 7 u7 g# 1 d {  7  sw Y   wxY w# t         $ r9}t        | dz  ddt#        |      j$                  dd       t        d      |d }~ww xY ww)Nr   rh   zinvite-intent.jsonzinvite-result.jsonz-invite was already attempted; retry forbiddenu`   DualCoach 시작 초대입니다. 아래 링크를 눌러 본인이 직접 시작해 주세요.
r  ztask26-invite-intent-v1ATTEMPTING_NEVER_RETRYr  r  )r   r   idempotency_keyr  r  destinationmessage_sha256Tr  r   )r   r;  disable_web_page_previewzinvite-unknown.jsonztask26-invite-unknown-v1UNKNOWN_NO_RETRY)r   r   
error_typez*invite outcome unknown; no retry permittedztask26-invite-result-v1SENT_EXACTLY_ONCE)r   r   
message_idr   r   )r   r   r   r  r'  r)   r9  rB   r`  r9   r  r   r[   r   send_messager   BaseExceptionr   r*   rW   r  r   )r  r   r   r   r  intentr  messager   r  sentr   r:   s                r/   	send_oncer  9  s    
+//C$$FT2F-Ff}}&--/9h1i+iopx  zI  qJ  JG
65?Wjsuy  {C  DP  {Q  vQ  uY  uY  u[  k\  ks  tA  kB  PX  Ye  Pf  uz  LU  V]  Vd  Vd  Vf  Lg  h  sw  x>>7=0;;=>Fbu::''E
ae'ffD : .7JX[\`\k\kXlwz{  |H  |H  xI  \e  gk  lt  uA  lB  gB  fJ  fJ  fL  \M  NE
6%$' f ::: bt))4NXjx|  ~A  yB  yK  yK  +L  W[  	\  dk  lX  dY  _b  ^bbs   CG+"F& .F/F& 2%FFFF& 'F(F& ,AG+F& FF& F#FF#F& &	G(/4G##G((G+c                    t        j                  dddt        gdd       t        D ]S  }|j                         t        j                  |j                  t        j                         |j                  d       U t        j                  ddd	t        gd
       | dz  }|j                  dd       dD ]f  }t        |z  }|j                         s|j!                         r.||z  }|j"                  j                  ddd       t        j$                  ||       h t'        | dz  d|d       y # t        $ r Y w xY w# t        $ rB t        j                  |j                  t        j                         n# t        $ r Y nw xY wY ew xY w)Nrm   rn   stopT   )r<  r   r  r   zreset-failed)r<  zrollback-archiver  )r   r!  )r   rs  rt  ru  rn  ro  rp  rq  zstate.db-shmzstate.db-walrr  r  zblocked.jsonBLOCKED_CLEAN_ROLLBACK)r   reason)r>  r   r   r   r'   pollr   killpgr  signalSIGTERMwaitSIGKILLr$  r[   r'  r&  r#  renamer9  )r  r  childr   relr   qs          r/   rollbackr  I  s=   	-hvgFVZcf	g::<599V^^4ejjj6L  NN(.IY]^##GW]]t]%L {
#+88:allnckA188>>$E4>PRTR[R[\]^_R` { 4)A6RS d  'YYuyy8 &$&'sG    D2 A E2	D?>D?	F.E:9F:	FFFFFc                
   |j                         }| j                  d      D ]P  }|j                         s|j                         r%|j	                         }||v s:t        d|j                          y # t
        $ r Y _w xY w)N*z!credential leaked into evidence: )r9   rglobrd  r&  rD   r  r)   rc   )r  r   needlerE   rA   s        r/   assert_secret_absentr"  Z  sl    <<>F

3<<>$//"3__&}G.OPTPYPY{,[$\\	   $H$s   A66	BBc                   | dz  }t        |dt        t        t                    t        t        |d               dd       |j	                         D ci c]  \  }}||
 }	}}t        | dz  |	d       t        | dz  |d       t        | d	z  |d       t        j                  t              j                  d
      dz   t        j                         j                  d d z   }
d}	 t               }t        | dz  |       t               }t        | dz  |       t        |
      }|j                  d      }t        | dz  |       ||d<   t!        | dz        }t#        |       }t        | dz  |       t%        j&                  t)        | dz  | dz  |||            }|j+                  d      }|j+                  d      }t-        |t.              r|rt1        d |D              rt3        d      t-        |t.              rt1        d |D              rt3        d      t5        | dz        }t               |k7  st7               |d   k7  rt3        d      t        | dz  d|d    |d!       t9        | |       t%        j&                  t;        | ||            }d}t9        | |       d"}i d#d$d%d&d't=        t>              d(t@        d)tB        d*tD        d+|d+   d,|d,   d-tG               d.|d.   d/|d    d0|d1   d2d3d4|d5dd6dd7d}t        | d8z  |d       |S c c}}w # tH        $ r}|stK        | t=        |              d }~ww xY w)9Nz
ONE-USE-v5CLAIMED_path)r   r   permission_sha256Tr  z00-interpreter-v5.jsonz00-secret-resolution-v5.jsonz00-network-preflight-v5.jsonz%Y%m%d%H%M%S_r  Fz01-verified.jsonz02-baseline.jsonr  z03-prepared.jsonz04-deployment.jsonz05-runtime.jsonz06-membership.jsonmembership_resultsprivate_dm_resultsc              3  h   K   | ]*  }t        |t               xs |j                  d       dv , yw)r   >   leftkickedNr   r   rV   r{   re   s     r/   r}   zexecute.<locals>.<genexpr>r  s\       Nq  ap  Z]R\]`aeRfNf  OUjmjqjqrzj{  DU  kU  OU  ap   02z-fresh left/kicked membership evidence missingc              3  h   K   | ]*  }t        |t               xs |j                  d       du , yw)identity_separatedTNr-  r.  s     r/   r}   zexecute.<locals>.<genexpr>s  sH       4S  FR  B
3t8L4L4yPSPWPWXlPmuyPy4y  FRr/  z)private staff identity separation missingr   r  z&candidate/config changed after startupz07-ready.jsonREADY_TO_INVITEevidence_sha256)r   membership_evidence_sha256r   zCustomer 8527916639: open the single DualCoach invite in this private DM and tap Start yourself; do not send onboarding answers yet.r   ztask26-strict-launch-result-v5r   READY_CUSTOMER_CLAIMinterpreterrT   rU   	candidater  r  rH  r  r4  invite_message_idr  invite_countrw   first_user_instructionrM  rN  delivery_capability_issuedzREADY_CUSTOMER_CLAIM.json)&r9  rF   r   rl   r]   r   nowr   strftimer)  r*  r+  ri  r   r  r   r  r  r  r   r   rV   r   listr   r)   r   rQ  r"  r  rW   rX   r`   ra   r`  rH  r   r  )r  r6  
permissionr   r   networkmarkerr   r   r   r  invitedpinsbaser   private_linkr  r  rd   membership_rowsprivate_rowsprovider_resultinvitehandofffinalr   s                             r/   executerL  b  s   FfViTWX\]eXfTg|  AE  FP  QX  FY  AZ  }[  -\  gk  l%++-
.-31Q1Q3-E
.t<T7TUZei0j
4..x$GPTUsPst{  GK  JLLL&&~6s:4::<;K;KBQ;OOGG-?(?!EZ%7 7=!_0M<vVZ[mVmnvOw".!$334
d#VD1B,B7%K{{:d+?&?EY@YZbcjkpqr

#78ZZ 45/$/#  Nq  ap  Nq  Kq  y@  Ap  yq  sq,t,  4S  FR  4S  1S  [b  cN  [O  UO j1t#|~tG}'DGT|L}F}tO#.?]cdu]v  CR  %S  	TT%({{9T(59:DGT%( W G	x8  G	BX  G	Yfgjkqgr  G	  tO  Pf  G	  gA  BW  G	  Xc  dh  G	  iv  w  @M  wN  G	  O[  \d  eq  \r  G	  s|  }D  }F  G	  GU  V]  ^l  Vm  G	  nJ  KQ  Rc  Kd  G	  ex  y  @L  yM  G	  N\  ]^  G	  _w  x  G	  @L  MR  G	  S]  ^c  G	  d@	  A	F	  G	t//Ee|1 /2  c#h/s   L)H/L 	M(M  Mc           	         t        t              }t               }t               }t        t              }||k7  rt	        d      ddt
        ||||t        d}t        | dz  |d       |S )Nzdry-run mutated profileztask26-strict-launch-dry-run-v5PASS_ZERO_MUTATIONS)r   r   r7  r   secret_resolution_contractchecksr   planned_boundarieszdry-run.jsonTr  )tree_snapshotr[   ri  r   r)   r`  
BOUNDARIESr9  )r  r6  r   beforerC  rD  afterr:   s           r/   dry_runrV    s    !F(8(:4DS`ahSiUu}G$=>>5?Tae  {F  dl  vz  FJ  `j  kE
4ut4Ulr.   c           
     f   g }t        | j                  d            D ]  }|j                         }|j	                  |       j                         }|j                         r(|j                  |dt        j                  |      f       j|j                         r4|j                  |d|j                  |j                  t        |      f       |j                         s|j                  |dt        j                   |j"                        f        t%        t'        |            S # t        $ r Y w xY w)Nr  LFD)sortedr   lstatFileNotFoundErrorrelative_toas_posixr&  r  r   readlinkrd  rf  st_mtime_nsrF   is_dirre  S_IMODEst_moderB   r;   )r  r  r   str  s        r/   rR  rR    s    	DDJJsO$	RMM$((*<<>4;;CA'?@YY[$++s3rzz"..Q&PQXXZc#dll2::.F%GH % U4[!! !*(*s   D##	D0/D0c                  *    e Zd ZdZddZddddddZy)	BoundaryModelzHDeterministic model used to prove ordering/crash/unknown-outcome policy.c                .    d| _         d| _        d| _        y )Nr   F)index	attemptedr  )selfs    r/   __init__zBoundaryModel.__init__  s    1
UdnaDIr.   F)crash_beforecrash_afterunknownc               f   |t         | j                     k7  rt        d      |rt        d      |dk(  r| j                  rt        d      d| _        |dk(  r9| j                  st        d      |rt        d      | xj
                  d	z  c_        | xj                  d	z  c_        |rt        d
      y )Nzorder violationzcrash-beforer   zduplicate inviteTr    zmissing intentzunknown-no-retryrw   zcrash-after)rS  ri  r)   RuntimeErrorrj  r  )rk  rc   rm  rn  ro  s        r/   crosszBoundaryModel.cross  s    DJJ''w7H/I)I|N;; ~~011DN >>1A)B#Bg&899IIqLI

A
l=99;r.   N)returnNone)
rc   rW   rm  boolrn  ru  ro  ru  rs  rt  )r*   r+   r,   __doc__rl  rr  r-   r.   r/   rg  rg    s    RO05uZ_ :r.   rg  c                 J   t        j                         } | j                  dd       | j                  dt        d       | j                  dt        d       | j	                         }	 t               }t        |j                        }t        |j                        |d<   t               }|j                  d	k(  rdt               \  }}t        j                  t        |            }|j                  j!                  d
dd       t#        |j                  |||||      }n5|j                  j!                  d
dd       t%        |j                  ||      }t'        t)        j*                  |d             y# t,        $ r&}t'        d|t.        j0                         Y d }~yd }~ww xY w)Nr   )zdry-runrL  )choicesz--rootT)r   requiredz--permissionr%  rL  r  )r   r  r!  )r3   r   zBLOCKED:)file   )argparseArgumentParseradd_argumentr   
parse_argsr   r   r?  rW   r   r   r   r  r   r  r  r$  rL  rV  printr7   r8   r   r   r@  )	r   rP  r6  r?  r   r   r@  r  r   s	            r/   mainr    s   A?T!UWXWeWefntx  CGWe  XH  JK  JX  JX  Yg  mq  {  JX  J@  DE  DP  DP  DR  BCM%'4Eall4SilmnmymyizU_`gUh  FW  FY  }E66968NE('++NhinNoBp'FFLLeD$L?PQPVPVWbcmnst|  ~E  IFFFLLeD$L?PQPVPVWbckHldjj$/0LU:cszzB1Ls   )D	E3 3	F"<FF"__main__)r:   r	   rs  bytes)rA   r  rs  rW   )rE   r   rs  rW   )rb   dict[str, Any]rs  rt  )rs  r  )rE   r   rs  r  )r   r	   r   r	   rs  rW   )rs  ztuple[str, dict[str, Any]])r   r	   r   r	   rs  ztuple[int, str])r   rW   rs  r  )r  r   rA   r  rs  rt  )rE   r   r:   r	   r  ru  rs  rt  )rA  z	list[str]rB  r	   rs  z subprocess.CompletedProcess[str])rs  zdict[str, str])rs  zdict[str, bool])r  rW   rs  r  )r  r   rs  r  )rE   r   r   floatr  zCallable[[Any], bool]rs  r	   )r  r   rs  r  )r  r   r  r   r   r  r  r  r   rW   rs  r  )r  r   rs  r  )r  r   r   r  r   rW   rs  r  )r  r   r  rW   rs  rt  )r  r   r   rW   rs  rt  )r  r   r6  r  r?  r  r   rW   r   r  r@  r  rs  r  )r  r   r6  r  r   r  rs  r  )r  r   rs  rW   )rs  r   )Zrv  
__future__r   r|  r  r>   r   importlib.metadataimportlib.utilr7   r   r  re  r>  r   tempfiler   r)  r   r   r   r   r  pathlibr   typingr	   r
   ROOTr   r[   rY   rX   rZ   r   r   r`   ra   r`  ra  r^   r_   rb  rc  r  r  r   rS  	O_CLOEXECr   r0  r\   r'   __annotations__rq  r)   r;   rB   rF   rf   r   r   r   r   r   r   r  r  r9  r   rH  rQ  ri  r   r  r  r  r  r   r   r  r  r"  rL  rV  rR  rg  r  r*   
SystemExitr-   r.   r/   <module>r     s   = "        	    
     9 9   78QQ	
:
;	8	9	"	";;
0XX[ Z IIO
PPQ* R

wr<33"A5g8m)O,"A )+
% * !l !g I ?q 7:
T"
d 9> 
Kl
Oh
7	4Z8Jm6 T"]>C	": :"
M Zz$&11r.   