
    j                        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mZ ddl	m
Z
  ee      j                         j                  Zdddd	Zd
ZdZdZddZddZddZddZddZedk(  r e e             y)zCIndependent verifier for the sealed Task26 post-claim live receipt.    )annotationsN)Path)Any@4e673a965c56a1e7d6f2a9e067147cec967594987f5b38051ca1096365f0ec25@698c25663392805436218377adb39ef73c5f9333a413832bb24bb35317217ff7@0a91aba75ac4e2d65e5230e474d9ef123982a4608034a3a1fc032ead28f7252f)post_claim_adjudicator.pytest_post_claim_adjudicator.pyschema.jsoncb_PCczfFXoI4GjvCxLBs1oRA
8527916639@a9b73fcd6f46884857c14fdb94db0618f306225e9c17ed36b9a5b3a343bcdd48c                R    t        j                  | dddd      j                         S )NFT),:)ensure_ascii	sort_keys
separators	allow_nan)jsondumpsencode)values    T.omo/evidence/task26/task26-post-claim-adjudicator-st_01a007d9/independent_verify.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           	     H   t         j                         D ](  \  }}t        t        |z        |k7  st	        d|        t        j                  t        dz  j                               t        fdt         d   t         d   t         d   dj                         D              rt	        d      t        j                  | d	z  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}	t'        |j                  d      dk(  xr |j                  d      dk(  xr |j                  d      t(        k(  xr |j                  d      dk(  xrm |j                  d      dk(  xrW |j                  d      dk(  xrA |j                  d      |	gk(  xr* |j                  d      dk(  xr |j                  d       d!k(        }
|
st	        d"      t        j                  | d#z  j                               }|j                  d$      }t        |t               st	        d%      t        j                  |j                               }t#        |      dk7  rt	        d&      |d'   }t        |t*              r|j                  d(      nd }t        |t*              r$|j                  d)      d*us|t$        t$        dd+k7  rt	        d,      |j                  d-      d.k7  s|j                  d/      d0k7  rt	        d1      d2d3d4d*dd*d5d6d7S )8Nzsealed artifact mismatch: zpermission-seal.jsonc              3  L   K   | ]  \  }}j                  |      |k7    y wr   )get).0keyr   
permissions      r   	<genexpr>zverify.<locals>.<genexpr>.   s,       ;JC:>>#%' ;s   !$r	   r
   r   )harness_sha256test_sha256schema_sha256zpermission seal mismatchz:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonschemasessions)rA   rB   digestzlive ledger digest mismatch   z!live session cardinality mismatchcustomer0158)roleuser_idchat_idtopic_id
message_idstateEXPIRED
session_idcb_v4olwxbpSQatMtVLR4QLmwAWAITING_CONSENT
generation   recovery_attempt_generation   role_claimsconsent_publication_attemptconsent_card_message_id159z+successful claim positive evidence mismatchzcustomers/registry.json	customerszregistry row count UNKNOWNz9expected live normal-path disabled registry row is absentr   telegramenabledF)rI   rJ   rK   z*normal-path disabled registry row mismatchstatusFAILblockerz4required no customer registry row, observed 1 row(s)z?live adjudicator did not fail closed on contradictory predicate-task26-post-claim-independent-verification-v1PASS_VERIFIED_FAIL_CLOSEDTzOcandidate normal path creates the disabled registry row before AWAITING_CONSENT   )rA   r]   "successful_claim_positive_evidencerequested_no_registry_rowobserved_disabled_registry_rows!live_pass_successful_claim_issuedreasoncheck_count)EXPECTEDitemsr$   HERERuntimeErrorr   loads	read_textanyr9   r   r    r   r"   CURRENT_DIGEST
isinstancelistlenACTORboolSESSIONdict)profilelive_receiptnamewantedledgerpayloadrB   oldcurrentclaimpositiveregistryrowsreceiptrowr[   r<   s                   @r   verifyr   )   sz    (ftd{v%!;D6BCC ) T$::EEGHJ
 "#>? @A!-0; eg	;  
 566ZZ#__jjlmF)vj7IJGzz(w~~i.@AKKMMQWQ[Q[\dQeiwQw899zz*%Hh%X!);>??LCEeE3EI% 	<GGL!%@@	<KK%0	< KK $66	< KK%*		<
 KK56!;	< KK&5'1	< KK56!;	< KK12e;
H HIIzz7%>>IIKLH<<$DdD!788jj//12G
4yA~VWW
q'C&0d&;swwz"Hh%);5)HHUY M GHH{{8&'++i*@Dz*z\]]A-.2%*+,-2c	 	r   c                 f   t        j                  t              } | j                  dt        d       | j                  dt        d       | j                  dt        d       | j                         }	 t        |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	--receiptr   r`   r^   )rA   r]   r_   unknown_is_failurerD   r]   )r]   r   )r   )argparseArgumentParser__doc__add_argumentr   
parse_argsr   rx   ry   OSError
ValueErrorKeyError	TypeErrorrl   r   JSONDecodeErrorstrr6   r   printr   )parserargsresultcodeexcs        r   mainr   f   s    $$9F
$>
(tdC
$>Dd&7&78
 t||V$	$**x 0S=NO[_
`aK Z9lDDXDXY K"s3xtUs   4"C' '-D0D++D0__main__)r   r   returnbytes)r#   r   r   r   )r#   r   r   dict[str, Any]r   None)rx   r   ry   r   r   r   )r   int)r   
__future__r   r   r   r   r,   pathlibr   typingr   __file__resolver*   rk   ri   rv   rt   rp   r   r$   r6   r   r   __name__
SystemExit r   r   <module>r      s    I "    	  H~&&!c&hU
 &Sr9:z$ z
TV
 r   