
    jc                       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      Z7dEd'Z8dFd(Z9dGd)Z:dHd*Z;dId+Z<dJd,Z=dKd-Z>d.d/dLd0Z?dMd1Z@dNd2ZAdOd3ZBdId4ZCdId5ZDdPd6ZEdQd7ZFdRd8ZGdSd9ZHdTd:ZIdUd;ZJdVd<ZKdWd=ZLdXd>ZMdYd?ZNdZd@ZO G dA dB      ZPd[dCZQeRdDk(  r eS eQ             y)\z7One-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.servicez@.omo/evidence/task26/task26-strict-launch-controller-st_01a00f53@2e6ba8fb71d34d766082a08f59b8d8d704523fd3671cda29eb97aee8fb00be44@227de3df3854d8a2867a50697c21b405539d13edc1f27931024f97e1109154ec@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_v4.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v3_controller_seal_sha256zv3 controller seal driftv3_clean_run_seal_sha256zv3 clean run seal drift)getstrPYTHONr)   HERMESSITE_PACKAGESPROFILEMODULE_MEMBERSitems
HERMES_SHAPROFILE_SHAV3_CONTROLLER_SEAL_SHAV3_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-v4-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-v3.jsonz&run-20260817-strict-a-v3/RUN-SEAL.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	{	  |	d
  p	d
  l	e
  f
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_V4)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v4 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                    t        |      }|rNt        j                  | |      }t        |      t        us|dk  s|t        |      kD  rt        d      ||d  }|rMy y )Nr   zincomplete write)
memoryviewoswritetypeintlenr)   )fdrA   viewns       r/   	write_allr   s   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/   atomicr   z   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)   stderrstrip)commandkwps      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/   servicer      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   config.yaml	platformsrh   extraadaptive_nutritiondelivery_enabled
activationdeliveryr   r   r   )yaml	safe_loadr[   r   )r   r|   r   as       r/   config_flagsr      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   rr  s         @r/   verify_candidater     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 )N0inactivedead)r   r   r   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   Fr   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   )r   flagsunexpected_live_bytes)r   r)   r[   r   rW   r7   r   r   rV   appendjoinr   r   r   getuidr   r   r   )	forbiddenr   
unexpectedr!  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_v4_r  r   )r   rw   r  )user_idchat_idtopic_idordinary_v1)versionowner	customersregistry_modediagnostic_session_digestTr   r&   r"   zTask26 strict A v4   r   i     )meal_1meal_2meal_3z08:00)bot_usernameowner_id)customer_id
session_idsid_hash
generationcustomer_link)r[   r   r   OWNERr   r   r   r   todayregister_customerCustomerDraftACTORdaytime	isoformatRoomBootstrapStoreroom_bootstrap_state_dir!prepare_rehearsal_customer_inviteBOT_USERNAMEsessionrE  rF  rH  )	lineagecustomerregistryinitialadmin	bootstraprJ  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-v4rN   )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
  r  r  r   )
outhwpwcodeproofr   wantgotloadedreceipts
             r/   deployrq     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   timeout	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   r"  z-fz-n0z
--no-pagerr#  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   r  r   activer   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   ##rs  z!membership subscription not armedr   subscription_epoch_idobserved_at_utcstaff_chat_inventory_sha256)service_pidobserver_pidmonitor_pidr  subscription_armed_at_utcr  )r   r   Popenr   STDOUTrW   rX   r   DEVNULLr'   extendr{  r   r   rt  r   r[   rV   r   r7   r   r   rw  r)   r   r   reversedr   pid)rootjournaljfmonitoreventsr   r)  rz  sr  r|   r   armedrowss                 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      |d   d   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#   r  r   r  zstaff inventory driftr   tokenrD  rE  rw   r  r  )
output_pathdeployment_receipt_pathregistry_pathconfig_pathrD  customer_user_idbootstrap_session_idbootstrap_generationr  r  )r   r   r   Botr7   r   r[   r   r   build_staff_chat_inventoryr?   r)   create_pre_activation_evidencer   rM  )rp  
deploymentr   runtimer   r  gaterW  config	inventoryr  bots               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

j
)'
2E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D3EAD9D5D9!E-D7.E5D97E9E?E 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  r  s      r/   r   r      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                               }	  ||d   d   d         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 시작 초대입니다. 아래 링크를 눌러 본인이 직접 시작해 주세요.
rH  ztask26-invite-intent-v1ATTEMPTING_NEVER_RETRYrE  rD  )r   r   idempotency_keyrD  rE  destinationmessage_sha256Tr   r   r   r  )r5  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_idr5  r  )r   r   r   r  r   r)   r   rB   r
  r9   rM  r   r[   r   send_messager   BaseExceptionr   r*   rW   r  r5  )r  r   r   r  intentr  messager  r  sentr   r:   s               r/   	send_oncer    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vk*:6w?@@C''E
ae'ffD A@ .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%$' Af A@@@ bt))4NXjx|  ~A  yB  yK  yK  +L  W[  	\  dk  lX  dY  _b  ^bbs   CG4"F/ 7F8F/ ;%F F!F%F/ 0F1F/ 5AG4F/ FF/ F, F#!F,(F/ /	G184G,,G11G4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   rx  r  )rx  zreset-failed)r   zrollback-archiver   )r   r   )r:  r  r  r   r  r  r  r  zstate.db-shmzstate.db-walr  r   zblocked.jsonBLOCKED_CLEAN_ROLLBACK)r   reason)r   r   r   	Exceptionr'   pollr   killpgr  signalSIGTERMwaitSIGKILLr   r[   r   r   r   renamer   )r  r  childr   relr   qs          r/   rollbackr    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                   | dz  }t        |dt        t        t                    t        t        |d               dd       |j	                         D ci c]  \  }}||
 }}}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       t%        j&                  t9        | |            }d}d }i d!d"d#d$d%t;        t<              d&t>        d't@        d(tB        d)|d)   d*|d*   d+tE               d,|d,   d-|d   d.|d/   d0d1d2|d3dd4dd5d}t        | d6z  |d       |S c c}}w # tF        $ r}|stI        | t;        |              d }~ww xY w)7NzONE-USECLAIMED_path)r   r   permission_sha256Tr   z00-interpreter.jsonz%Y%m%d%H%M%S_r=  Fz01-verified.jsonz02-baseline.jsonrH  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>2  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>3  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-v4r   READY_CUSTOMER_CLAIMinterpreterrT   rU   	candidaterD  rE  r   r  r  invite_message_idr  invite_countrw   first_user_instructionr   r   delivery_capability_issuedzREADY_CUSTOMER_CLAIM.json)%r   rF   r   rl   r]   r   nowr   strftimer   r   r   r  r   r\  poprq  r  asyncior   r   rV   r   listr   r)   r   r   r  rW   rX   r`   ra   r
  r   r  r  )r  r  
permissionmarkerr   r   rl  rU  invitedpinsbaser   private_linkr  r  rd   membership_rowsprivate_rowsprovider_resultinvitehandofffinalr   s                          r/   executer  #  s~   	>F6&9QTUYZbUcQdy|  ~B  CM  NU  CV  ~W  zX  *Y  dh  i%++-
.-31Q1Q3-E
.t<Q7QRWbf0gLL&&~6s:4::<;K;KBQ;OOGG-?(?!EZ%7 7=!_0M<vVZ[mVmnvOw".!$334
d#VD1B,B7%K{{:d+?&?EY@YZbcjkl

#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{{9T(34dg 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|+ /,  c#h/s   KHK# #	L	,LL	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-v4PASS_ZERO_MUTATIONS)r   r   r  r   checksr   planned_boundarieszdry-run.jsonTr   )tree_snapshotr[   r  r   r)   r
  
BOUNDARIESr   )r  r  beforer  r  afterr:   s          r/   dry_runr  ?  sy    !F(8(:4DS`ahSiUu}G$=>>5?Tae  {F  PT  `d  zD  E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)N*LFD)sortedrgloblstatFileNotFoundErrorrelative_toas_posixr   r,  r   readlinkr  r  st_mtime_nsrF   is_dirr  S_IMODEst_moderB   r;   )r  r  r   str  s        r/   r  r  E  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__R  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)r  r+  r)   RuntimeErrorr,  r  )r-  rc   r/  r0  r1  s        r/   crosszBoundaryModel.crossS  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   r/  boolr0  r7  r1  r7  r5  r6  )r*   r+   r,   __doc__r.  r4  r-   r.   r/   r)  r)  P  s    RO05uZ_ :r.   r)  c                    t        j                         } | j                  dd       | j                  dt        d       | j                  dt        d       | j	                         }	 t               }t        |j                        }t        |j                        |d<   |j                  j                  d	dd
       |j                  dk(  rt        |j                  |      nt        |j                  ||      }t        t        j                   |d             y# t"        $ r&}t        d|t$        j&                         Y d }~yd }~ww xY w)Nr   )dry-runr  )choicesz--rootT)r   requiredz--permissionr  r   )r   r   r   r:  )r3   r   zBLOCKED:)file   )argparseArgumentParseradd_argumentr   
parse_argsr   r   r  rW   r  r   r   r  r  printr7   r8   r  r   r   )r   r   r  r  r  r   s         r/   mainrD  a  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	%d;cdciciktctGAFFS^D_  {B  CD  CI  CI  JU  V`  {aV  ch  im  is  is  tz  EI  iJ  cK  TULU:cszzB1Ls   )B1D 	E
$EE
__main__)r:   r	   r5  bytes)rA   rF  r5  rW   )rE   r   r5  rW   )rb   dict[str, Any]r5  r6  )r5  rG  )rE   r   r5  rG  )r   r   rA   rF  r5  r6  )rE   r   r:   r	   r   r7  r5  r6  )r   z	list[str]r   r	   r5  z subprocess.CompletedProcess[str])r5  zdict[str, str])r5  zdict[str, bool])rU  rW   r5  rG  )rh  r   r5  rG  )rE   r   rx  floatry  zCallable[[Any], bool]r5  r	   )r  r   r5  rG  )
rp  r   r  r   r   rG  r  rG  r5  rG  )r  r   r5  rG  )r  r   r   rG  r5  rG  )r  r   r  rW   r5  r6  )r  r   r  rG  r  rG  r5  rG  )r  r   r  rG  r5  rG  )r  r   r5  rW   )r5  r   )Tr8  
__future__r   r?  r  r>   r   importlib.metadataimportlib.utilr7   r   r  r  r   r   tempfiler   r   r   r   r   r   rN  pathlibr   typingr	   r
   ROOTr   r[   rY   rX   rZ   r   r   r`   ra   r
  r  r^   r_   r  r  rM  rI  rS  r  	O_CLOEXECr   r   r\   r'   __annotations__r3  r)   r;   rB   rF   rf   r   r   r   r   r   r   r   r  r   r\  rq  r{  r  r   r   r  r  r  r  r  r)  rD  r*   
SystemExitr-   r.   r/   <module>rS     s   = "        	    
     9 9   78QQ	
:
;	8	9	"	";;
0UU[ Z IIO
PPQ* R

wr<33"A5g8m)O,"A )+
% * !l !g I ?q 7: 9> 
Kl
Oh
7	4Z8Jm6 T"8C	": :"M Zz$&11r.   