
    0Ȃj3"                    4   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	m
Z
 ddlmZ  e
e      j                  Zej                  dz  Z e
d      Zedz  Zd	Zd
ZdZdZddZddZddZddZddZddZddZddZddZe dk(  r e! e             y) z5Independent read-only verifier for Task26 cleanup v5.    )annotationsN)Path)Anyz5task26-post-lifecycle-cleanup-v4-4a6c7ee5-st_01a00e68z)/home/cube/.hermes/profiles/dualcoachtestzEdata/post-lifecycle-cleanup-archives/task26-current-4a6c7ee5-20260817z$hermes-gateway-dualcoachtest.service@188e9e630b53e9329ae185fc8c007aecb7988c16d174d325d68e8e004edb38e9@9f5d72840b4cc1fcb57720a61ebc53529fa00202d9201615e4ebdbb3e047a635)zgateway_start_observer.pyzlifecycle_observer.pyzobserver_v2.pyzobserver_v3.pyzobserver_v4.pyzobserver_v5.pyzobserver_v6.pyzobserver_v61.pyzobserver_v62.pyzobserver_v63.pyzobserver_v64.pyc                T    t        j                  | dd      dz   j                         S )NT,:	sort_keys
separators
)jsondumpsencode)values    `.omo/evidence/task26/task26-post-lifecycle-cleanup-v5-4a6c7ee5-st_01a00ed7/independent_verify.pycanonr      s#    JJuDtKSSUU    c                H    t        j                  |       j                         S N)hashlibsha256	hexdigest)raws    r   shar      s    >>#((**r   c                    | st        |      y r   )RuntimeError)	conditionmessages     r   checkr"   !   s    7## r   c                    g } t        j                  t        d      D ]  \  }}}|j                          |j                          |D ]  }t	        |      |z  }|j                         }t        t        j                  |j                        d|        | j                  |j                  t              j                         dt        j                  |j                        dd        |D ]  }t	        |      |z  }|j                         }t        t        j                  |j                        d|        | j                  |j                  t              j                         dt        j                  |j                        dt        |j!                               d	         t        t#        |             t%        |       fS )
NF)followlinkszunsafe archive directory: D04o)pathtypemodezunsafe archive entry: F)r'   r(   r)   r   )oswalkARCHIVEsortr   lstatr"   statS_ISDIRst_modeappendrelative_toas_posixS_IMODES_ISREGr   
read_bytesr   len)rowsbasedirsfilesnamer'   sts          r   archive_inventoryr@   &   s   !#DWWW%@@dE		

D:$DB$,,rzz*.H,OPKK!1!1'!:!C!C!Es_c_k_klnlvlv_wx{^|~	 
 D:$DB$,,rzz*.DTF,KLKK!1!1'!:!C!C!Es_c_k_klnlvlv_wx{^|  JM  NR  N]  N]  N_  J`  a  b	  A uT{SY&&r   c                   	 | j                  d      j                         j                  dd      \  }}|j                  dd      \  }}|j                         }t	        t        |      |k(  xr t        |      dk\  d       t        |d         t        |d         t        |d         fS # t        t        f$ r}t        d	| d
      |d }~ww xY w)Nasciiz)    z (   z
stat shape      zmalformed /proc/z/stat)
decodestriprsplitsplitr"   intr9   UnicodeDecodeError
ValueErrorr   )r   pidprefixsuffixclaimed_commfieldsexcs           r   
parse_statrU   8   s    CG,224;;D!DdA.c'lc!7c&kR&7F6!9~s6!9~s6":>>
+ C-cU%89sBCs   B'B* *C9C		Cc                   | sg S dj                  |       j                         t        | d         j                  j                         }t        v xs t        t              v xs
 dv xs dv }g }t        v r|j                  d       t        t              v r|j                  d       t        fdt        D              sdv rd	v r|j                  d
       t        d | dd  D              }|dk(  r|r|r|j                  d       |dk(  r|r|j                  d       dv r%t        fddD              r|j                  d       |S )N r   dualcoachtesttask26serviceprofilec              3  &   K   | ]  }|v  
 y wr    ).0r>   joineds     r   	<genexpr>zreasons.<locals>.<genexpr>O   s     
5nd46>n   zlive-vz-events.jsonlobserverc              3     K   | ]9  }|d k(  xs. |j                  d      xr |j                  d       xr d|dd v  ; yw)z--follow-z--frC   N)
startswithr^   args     r   r`   zreasons.<locals>.<genexpr>Q   sT       Awps
"ks~~c':'j3>>RVCW?W'j\_cfghgicj\jkws   ?ArC   
journalctljournal_followerinotifywaitinotify_watcherc              3  &   K   | ]  }|v  
 y wr   r]   )r^   wordlowers     r   r`   zreasons.<locals>.<genexpr>V   s      f;e4;era   )monitorwatchfollowrb   task_monitor)
joinro   r   r>   SERVICEstrPROFILEr3   anyOBSERVER_NAMES)argvexecontextfoundrr   r_   ro   s        @@r   reasonsr~   C   sC   	YYt_FLLNE
tAw-


"
"
$Cj3w<6#9j_PU=UjYaejYjGE&Y
7|vY

5n
55(e:KP_chPhZ   Aw{|}|~w  A  AF
lv''(
m&'5S f;e ff^$Lr   c            	        g } g }t        d t        j                  d      D        t              D ]+  }t        |      }t	        d      |z  }	 |j                         j                  t        j                         k7  rNt        |dz  j                         |      }|dz  j                         }t        |dz  j                         |      }t        |d   |d   k(  d	|        t        | xs |j                  d
      d|        |sg n1|d d j                  d
      D cg c]  }|j!                  dd       c}}	| j                  ||d   |d   |d   |	d       . | D 
ci c]  }
|
d   |

 }}
t#               }t        j$                         }||v r&||vr"|j'                  |       ||   d   }||v r||vr"g }g }| D ]  }
|
d   t        j$                         k(  xs |
d   |v xr t)        d |
d   D              }|r|j                  |
d   |
d   d       Zt+        |
d         }|sk|j                  i |
d|i        t-        |       |||dS # t        $ r |j                  |dd       Y Dt        $ r Y Ow xY wc c}w c c}
w )Nc              3  B   K   | ]  }|j                         s|  y wr   )	isdecimal)r^   items     r   r`   z#process_snapshot.<locals>.<genexpr>^   s     Q)<@P)<s   z/proc)keyr0   cmdlinedisappeared)rN   race   zPID reuse:     zmalformed cmdline: zutf-8surrogateescaper   rC   )rN   ppid
session_idstart_time_ticksr   rN   r   c              3  R   K   | ]  }t        t              j                  |v  ! y wr   )r   __file__r>   rg   s     r   r`   z#process_snapshot.<locals>.<genexpr>y   s3       TJ  {IsvTXYaTbTgTgknTn  {Is   %'r   )rN   r   r~   )same_uid_countraces
violationsexcluded_verifier_identities)sortedr+   listdirrK   r   r0   st_uidgetuidrU   r8   FileNotFoundErrorr3   PermissionErrorr"   endswithrJ   rG   setgetpidaddrx   r~   r9   )r:   r   r>   rN   rootbeforer   afterpartrz   rowby_pid	ancestorscursorr   excludedis_verifierr}   s                     r   process_snapshotr   [   s   !#D"$EQG)<QWZ[[$iG}t#
	yy{!!RYY[0 : : <cBF)#//1Cv99;SAE 	fQi58#{3%%89#g,e,0CC5.IJrWZ[^\^W_WeWefkWl"mWlt4;;w8I#JWl"mCqq_def_gtxyz# \$ *..#c%j#oF.%IYY[F
F
vY6f' F
vY6 (*J%'H%jBIIK/  KCJ)4K  5JPS  TJz}  H  {I  TJ  QJOOCJCHZD[\]I'77i78  "$i%zs{||3 ! 	LLm<= 		 #n.s+   /I>AI J#JJ 4J ?J c                    t        j                  t        dz  j                               } g }t        j                  |       D cg c]/  }t        |t         j                  t         j                  f      s.|1 }}t        j                  |       D ]  t        t         j                        st        j                  t         j                        sCt        j                  j                  t         j                        srj                  j                  j                  dk(  sj                  j                  dk(  s|j                  t!        fd|D        d              t#        |dgk(  d|        y c c}w )Ncleanup_controller.pyr+   writec              3  f   K   | ](  }t        j                  |      v s|j                   * y wr   )astr,   r>   )r^   functionnodes     r   r`   z'verify_write_surface.<locals>.<genexpr>   s*     fi(4SVS[S[\dSeKeis   11module	write_allzunexpected writes: )r   parseROOT	read_textr,   
isinstanceFunctionDefAsyncFunctionDefCallfunc	Attributer   Nameidattrr3   nextr"   )treeownersr   	functionss     ` r   verify_write_surfacer      sT   99d44??ABDF"%((4.n.$JtcooWZWkWkEl4m.IndCHH%*TYY*NS]^b^g^g^m^morowowSx  ~B  ~G  ~G  ~M  ~M  ~P  ~P  TX  ~X  ]a  ]f  ]f  ]k  ]k  ov  ]vMM$fifhpqr  
&[M
!%8#AB	 os   /E:5E:c                 *   t        t        t        dz  j                               t        k(  d       t
        dz  j                         } t        j                  |       }t        j                  t
        dz  j                               }t        |d   dk(  d       t        |d   d	   t        k(  d
       t        |d   du d       t        |d   t        |       k(  d       t        |d   t        t
        dz  j                               k(  d       t               \  }}t        |t        k(  d       dD ]'  }t        t        |z  j                          d|        ) t        j                  dddt        dgddd      }t!        d |j"                  j%                         D              }t        |ddddd k(  d!       t'               }t'               }	t        |d"    xr |	d"    d#|d"   |	d"   z           t        j                  t
        d$z  j                               }
|
d%   d&   }t        |
d'   d(k(  xr |d)   d*k(  xr |d+    d,       t)                d-d(t        |||d*d.|	d/   |d0   |	d0   z   ddd.d1}t+        t        j,                  |dd23             y.)4Nz	SEAL.jsonzv4 seal driftzschema-contract-v5.jsonzpermission-seal-v5.jsonschemaz)task26-post-lifecycle-cleanup-contract-v5zcontract schemapredecessorv4_seal_sha256zpredecessor bindingexecute_allowed_onceFzexecute permissioncontract_sha256zpermission contractcontroller_sha256r   zpermission controllerzarchive root)
	customerszdata/customerszdata/onboardingzdata/owner-actionszgateway.lockzgateway.pidzgateway_state.jsonzstate.dbzstate.db-shmzstate.db-walzlive residue: z/usr/bin/systemctlz--usershowz2--property=ActiveState,SubState,MainPID,ControlPIDT)capture_outputtextr"   c              3  J   K   | ]  }d |v s|j                  d d        yw)=rC   N)rJ   )r^   lines     r   r`   zmain.<locals>.<genexpr>   s%     Z2J$cUYk4::c1%2Js   	##0inactivedead)MainPID
ControlPIDActiveStateSubStatezservice stater   zsession processes: z$controller-verification-receipt.json	poststatesession_process_proofstatusPASSpassesr   target_processeszcontroller receiptz1task26-post-lifecycle-independent-verification-v5r   r   r   )r   r   r   archive_root_sha256archive_entriesrZ   process_passesprocess_violationssame_uid_processes_second_passprocess_raceswrite_all_onlycleanup_replayedlive_mutationsr	   r   )r"   r   V4r8   V4_SEALr   r   loadsr   r@   ARCHIVE_ROOTrw   exists
subprocessrunru   dictstdout
splitlinesr   r   printr   )contract_rawcontract
permissionarchive_rootr   relr   rZ   firstsecondreceiptproofresults                r   mainr      s   	#rK++-
.'
9?K44@@BLzz,'HT$==HHJKJ	(8
 K
KM^_	(=
!"2
3w
>@UV	*+
,
57KL	*&
'3|+<
<>ST	*(
)S$9P2P1\1\1^-_
_axy$5$7!L/	,,
&7 y7S=((**nSE,BC y>>/67  MA  B  SW  ^b  jn  oDZ$++2H2H2JZZG	'C
`fg
gixyEF	eL!
!
>&*>&>BUV[\hVilrs  mA  WA  VB  AC  Djj$!GGRRTUGK !89E	'(
v
%
`%/Q*>
`uM_G`C`bvwKW]qx  R^  sB  OV  jk  CD  hn  o  h@  SX  Y`  Sa  dj  kr  ds  Ss  GK  af  z{  |F	$**Vt

CDr   __main__)r   r   returnbytes)r   r   r   rv   )r    boolr!   rv   r   None)r   ztuple[str, int])r   r   rN   rK   r   ztuple[int, int, int])rz   	list[str]r   r  )r   zdict[str, Any])r   r  )r   rK   )"__doc__
__future__r   r   r   r   r+   r0   r   pathlibr   typingr   r   parentr   r   rw   r-   ru   r   r   ry   r   r   r"   r@   rU   r~   r   r   r   __name__
SystemExitr]   r   r   <module>r
     s    ; " 
   	    H~	[[JJ
:
;
[
[
0
LQ nV+$
'$C0%}PC: z
TV
 r   