
    Vjo&                    F   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mZ ddl	m
Z
 ddlmZ  e
e      j                         j                  Zej"                  d   Zedz  Zed	z  Zd
dddZd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 e!dk(  r e" e              y) z@Independent live verifier for Task26 post-claim adjudication v2.    )annotationsN)datetime)Path)Any   z>.omo/evidence/task26/task26-post-claim-adjudicator-st_01a007d9z9.omo/evidence/task26/task26-invite-harness-st_01a0056a-v3@1ee766c54ee881c4b64dc55e5484bed4871024e7d513eec1c47bc7f631ed8889@0a36713430ecbb7cf0ce3548bdd3ec36548273ee89d717eac6385a55dc3d9488@b1cf370fac1a5551a4168561bc23bae9486566b36fd1f4f2fd6c5dd50c3658f7)zpost_claim_adjudicator_v2.pyz!test_post_claim_adjudicator_v2.pyzschema-v2.json@a9b73fcd6f46884857c14fdb94db0618f306225e9c17ed36b9a5b3a343bcdd48cb_PCczfFXoI4GjvCxLBs1oRA
8527916639%task26_live_2e_r2_20260815_8527916639)zdata/customersz(data/activation-completion-notices.jsonlz$data/customer-activation-audit.jsonlz%data/customer-activation-journal.jsonz%data/customer-activation-receipt.jsonz2data/nutrition-onboarding-projection-journal.jsonlzdata/scheduled-deliveries.jsonlz$data/scheduled-deliveries-fence.jsonzdata/customer-schedule-claimszdata/recovery-auditszdata/activation-readinessc                R    t        j                  | dddd      j                         S )NFT),:)ensure_ascii	sort_keys
separators	allow_nan)jsondumpsencode)values    Z.omo/evidence/task26/task26-post-claim-adjudicator-v2-st_01a007d9/independent_verify_v2.py	canonicalr   $   s#    ::e%4Jbghooqq    c                d    t        j                  | j                               j                         S N)hashlibsha256
read_bytes	hexdigest)paths    r   shar$   (   s!    >>$//+,6688r   c                   | j                   j                  ddd       t        j                  | t        j                  t        j
                  z  t        j                  z  t        j                  z  d      }	 t        j                  |t        |      dz          t        j                  |       t        j                  |       y # t        j                  |       w xY w)Ni  T)modeparentsexist_oki     
)parentmkdirosopenO_WRONLYO_CREATO_EXCL	O_CLOEXECwriter   fsyncclose)r#   r   fds      r   
write_oncer6   ,   s    KK5$>	r{{RZZ/"));bllJE	RB
Yu%-.

s   87C Cc                    t        t        dz        dk7  rt        d      t        j                  t        dz  j                               } | j                  d      }t        |t              st        d      |j                         D ]G  \  }}t        |t              r%t        t        |z        |j                  d      k7  s;t        d|        y )Nzhashes.json@3c6d7111ac1c900fbeaa3f7f7bbd93139c60b1ec107516a6c386ce55b4e8d613zv1 inventory changed	artifactszv1 inventory is invalidr    zv1 artifact changed: )
r$   V1RuntimeErrorr   loads	read_textget
isinstancedictitems)	inventoryr9   nameproofs       r   verify_v1_immutablerE   6   s    
2"dd122

B.99;<Ik*Ii&455 (e%&#b4i.EIIh<O*O!6tf=>> )r   c                z   t         j                         D ](  \  }}t        t        |z        |k7  st	        d|        t                t        j                  t        dz  j                               }t        j                  t        dz  j                               }t        t        dz        dk7  s<|j                  d      dk7  s(|j                  d      dk7  s|j                  d      d	k7  rt	        d
      | dz  }t        j                  |j                               }|d   |d   d}	|j                  d      t        j                  t        |	            j                         k7  s|j                  d      t        k7  rt	        d      |j                  d      }
t!        |
t"              rt%        |
      dk7  rt	        d      |
\  }}dt&        t&        ddd}|j                  d      dk(  r|j                  d      dk(  r|j                  d      t(        k(  r|j                  d      dk(  ry|j                  d      dk(  re|j                  d      dk(  rQ|j                  d       d!k(  r=|j                  d"      |gk(  r(|j                  d#      d!k(  r|j                  d$      d%k(  st	        d&      | d'z  }t        j                  |j                               }|j                  d(      }t!        |t"              r!t%        |      d!k7  st!        |d   t*              st	        d)      |d   }|j                  d*      t,        k(  r|j                  d+      d,u rx|j                  d-      t&        t&        dd.k(  rX|j                  d/      d,d d d0k(  r@t!        |j                  d1      t*              r!t%        |d1   j                  d2g             d3k(  st	        d4      t/        j0                  |d5         j3                         }t/        j0                  |d6         j3                         }||j5                         j6                  cxk  r|k  st	        d7       t	        d7      t8        D cg c]  }| |z  j;                         s| }}|rt	        d8d9j=                  |      z         t?        j@                  g d:d;d;d,<      }t+        d= |jB                  jE                         D              }|jF                  s;|j                  d>      d?k7  s'|j                  d@      dAk7  s|j                  dB      dCv rt	        dD      tI        dE      dFdGdHdI}tK        fdJ|j                         D              rt	        dK      t        j                  t        dLz  j                               }|j                  dM      }t!        |tL              st	        dN      g }|jO                  dO      D ]d  }|jQ                         s|jS                         r%	 |jU                         |jW                         v r|jY                  |j[                                f |t        dLz  j[                         gk7  rt	        dP      t        j                  |j                               }|j                  dQ      }|j                  dR      dSk7  sLt!        |t*              r<|j                  dT      d!k7  s(|j                  dR      dUk7  s|j                  dV      dk7  rt	        dW      dXdYd;d;d;d;dd;d,d;dZd[S c c}w # t\        t^        f$ r Y Qw xY w)\Nzsealed v2 artifact mismatch: z'task26-live-2e-r2-dry-run.redacted.jsonz+task26-live-2e-r2-preparation.redacted.json@cda348a3a9500a541d9d8851ec8ebad51be4738dd6a6e8d5c629ec1e65e64a4cregistry_customer_countr   accepted_claim_countledger_sha256@c7c53db41858d53a6860baa98a1bc03f33e19a82048501c2a4b7c25dfddd3855z(zero-row preparation provenance mismatchz:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonschemasessions)rL   rM   digestzcurrent ledger digest mismatch   zsession cardinality mismatchcustomer0158)roleuser_idchat_idtopic_id
message_idstateEXPIRED
session_idcb_v4olwxbpSQatMtVLR4QLmwsid_hash@53b4f95b5b4db9a611128976a7b951bbe22d9619e05b2ff07fadf5b02f9a5380AWAITING_CONSENT
generation   recovery_attempt_generation   role_claimsconsent_publication_attemptconsent_card_message_id159z#claim or consent authority mismatchzcustomers/registry.json	customersz'canonical registry cardinality mismatchcustomer_keyenabledFtelegram)rT   rU   rV   ai_processing_consent)grantedrecorded_onnotice_versionplanweeks   zdisabled registry row mismatch
created_at
updated_atz&registry provenance timestamp mismatchzdownstream authority exists: r   )
	systemctlz--usershowz$hermes-gateway-dualcoachtest.service-pActiveStaterv   SubStaterv   MainPIDT)textcapture_outputcheckc              3  J   K   | ]  }d |v s|j                  d d        yw)=rb   N)split).0lines     r   	<genexpr>zverify.<locals>.<genexpr>   s'     \1LPSW[P[$**S!$1Ls   	##rw   activerx   runningry   >   NrQ   z'service is not active candidate runtimez]/home/cube/projects/richard/hermes-agent/.venv/lib/python3.12/site-packages/gateway/platforms@145515d5e110dcebb94fcaa554bcee29544b3a75dcfe058fae944ea3b70042b2@cc0e4b697633150f3626daa8cf5bb4825bc96243f1a3dfadb6c9f540cad9906c@b41060dea28eb3bbb83217068f5218d5df2c879dba00e73c9ca4e577a6049dad)ztelegram_customer_bootstrap.pyz+telegram_customer_bootstrap_registration.pyztelegram.pyc              3  F   K   | ]  \  }}t        |z        |k7    y wr   )r$   )r   rC   wantedsites      r   r   zverify.<locals>.<genexpr>   s&     
N:M,$3td{v%:Ms   !z&active candidate source bytes mismatchz-task26-live-2e-r2-invite-handoff.private.jsonstart_tokenzprivate token binding UNKNOWN*zraw token leakage mismatchdisabled_registration_proofstatus/PASS_SUCCESSFUL_CLAIM_AND_DISABLED_REGISTRATIONcustomer_registry_rowszdisabled/not_activated'checkin_generation_delivery_authoritieszv2 live receipt mismatch-task26-post-claim-independent-verification-v2PASS_INDEPENDENTLY_VERIFIED   )rL   r   claim_and_sid_bindingdisabled_registration_exact+zero_row_to_one_disabled_row_candidate_pathconsent_card_159_exactly_oncedownstream_authority_countservice_candidate_bytes_exactraw_token_leakagev1_artifacts_unchangedcheck_count)0EXPECTEDrA   r$   HEREr;   rE   r   r<   V3r=   r>   r   r    r   r"   CURRENT_DIGESTr?   listlenACTORSESSIONr@   CUSTOMER_KEYr   fromisoformat	timestampstatst_mtimeABSENTexistsjoin
subprocessrunstdout
splitlines
returncoder   anystrrglobis_file
is_symlinkr   r!   appendresolveOSErrorPermissionError)profilelive_receiptevidence_rootrC   r   drypreparationledger_pathledgerpayloadrM   oldcurrentclaimregistry_pathregistryrowsrowcreatedupdatedpresentservicevaluessource_pinshandofftokenhitsr#   receiptregistrationr   s                                 @r   verifyr   B   sz    (ftd{v%!>tfEFF ) 
**bDDOOQ
RC**b#PP[[]^KB::;  @B  	B77,-277)*a/???+/qqEFFXXKZZ--/0F)vj7IJGzz(w~~i.@AKKMMQWQ[Q[\dQeiwQw;<<zz*%Hh%X!);9::LCEeQTdijEI%GGL!%@@KK%0KK
#'iiKK $66KK%*KK56!;KK&5'1KK56!;KK12e;@AA77Mzz-1134H<<$DdD!SY!^:d1gt;TDEE
q'C</GGI%'GGJuTW#XXGG+,ERVjn0ooswwv-F,-3;<<$$W\%:;EEGG$$W\%:;EEGG]'')22<W<CDD =CDD &D7T>*A*A*CtGD:SXXg=NNOOnn 	H$eG \1J1J1L\\FVZZ6(BfjjQ[F\`iFimsmwmw  yB  nC  GR  nRDEEopD*l7yYK
 
N+:K:K:M
NNCDDjj"NNYY[\GKK&EeS!:;;D##C(<<>$//"3<<>T__%66KK/	 ) EENNPQQ788jj//12G;;<=LH!RR,-45:H%)AAEF!K566A/!%'+7;)-&')-""& U E8 _- s   ,\"\"?\''\:9\:c                    t        j                  t              } | j                  dt        d       | j                  dt        d       | j                  dt        d       | j                  dt        d       | j                         }	 t        |j                  |j                  |j                        }d}t%        |j&                  |       t)        t        j*                  |d   t#        |j&                        dd             |S # t        t        t        t        t        t        j                   f$ r}d	d
t#        |      dd}d}Y d }~d }~ww xY w)N)descriptionz	--profileT)typerequiredz--live-receiptz--evidence-rootz	--receiptr   r   FAIL)rL   r   blockerunknown_is_failurerO   r   )r   r   )r   )argparseArgumentParser__doc__add_argumentr   
parse_argsr   r   r   r   r   
ValueErrorKeyError	TypeErrorr;   r   JSONDecodeErrorr   r6   r   printr   )parserargsresultcodeexcs        r   mainr      s   $$9F
$>
(tdC
)tD
$>Dd&7&79K9KL
 t||V$	$**x 0S=NO[_
`aK Z9lDDXDXY KW] XTCs   -D
 
-E7EE__main__)r   r   returnbytes)r#   r   r   r   )r#   r   r   dict[str, Any]r   None)r   r   )r   r   r   r   r   r   r   r   )r   int)#r   
__future__r   r   r   r   r,   r   r   pathlibr   typingr   __file__r   r*   r   r'   ROOTr:   r   r   r   r   r   r   r   r   r$   r6   rE   r   r   __name__
SystemExit r   r   <module>r      s    F "    	    H~&&||A	LL	GG$f)kX
 T
%6
r9	?nb& z
TV
 r   