
    gj                    0   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mZ ddlmZ ddlmZ ddlmZmZ ej(                  j+                  d ee      j/                  d	            Zeej2                   ed
      ej(                  j7                  e      Zej2                  j;                  e       ej<                  Zej>                  Zej@                  Z  ed      Z!dZ"dZ#dZ$dZ% e&h d      Z' e&h d      Z(ddd-dZ)d.dZ*d/dZ+d0dZ,d1dZ-d2dZ.dddd3dZ/d4dZ0d5dZ1	 	 	 	 	 	 d6dZ2d7dZ3d8d Z4d9d!Z5d:d"Z6	 	 	 	 	 	 	 	 	 	 d;d#Z7d<d$Z8dddd%	 	 	 	 	 	 	 	 	 d=d&Z9d>d'Z:d?d(Z;d@d)Z<dAd*Z=dBd+Z>e?d,k(  r e@ e>             y)CzBVerify a source Golden Path from native production artifacts only.    )annotationsN)Mapping)date)Path)Anycast*golden_verifier_installed_wheel_provenanceinstalled_wheel_provenance.pyz*installed provenance helper is unavailablez:/home/cube/.cache/task26-strict-successor-1786976146/src-p)onboarding_22_clear deterministic_ambiguity_revisionpreview_isolationapproved_card_projection_gateunknown_delivery_no_retrysuccessful_lifecyclecleanup_resume_terminal)u   1990년 1월 15일입니다.u   남성입니다.u   키는 180cm입니다.u   현재 체중은 80kg입니다.u   보통 수준입니다.uX   주 3회 60분 근력 운동을 하고 평일에는 하루 8천 보 정도 걷습니다.u+   현재 체중을 유지하고 싶습니다.u?   유지가 목표라 목표 체중은 정하지 않겠습니다.u?   유지가 목표라 목표 날짜도 정하지 않겠습니다.u$   음식 알레르기는 없습니다.u!   음식 불내증은 없습니다.uE   종교적 또는 윤리적으로 제외하는 음식은 없습니다.u.   싫어해서 피하는 음식은 없습니다.u(   특별한 식단 선호는 없습니다.u$   진단받은 질환은 없습니다.u2   복용 중인 약이나 보충제는 없습니다.u2   임신 또는 수유에 해당하지 않습니다.u4   섭식장애 위험이나 과거력은 없습니다.ue   가스레인지, 전자레인지, 냉장고를 사용할 수 있고 기본 조리가 가능합니다.u!   식비 예산은 보통입니다.u   하루 세 끼를 먹습니다.uZ   평일 점심은 12시, 저녁은 운동 후 8시쯤이며 그 외 제약은 없습니다.)OBSERVER_SUBSCRIBEDINVITE_RECEIPTEDCONSENT_COMMITTEDONBOARDING_22_COMMITTEDRECONCILIATION_COMMITTEDCUSTOMER_ATTESTEDOWNER_REVIEW_PUBLISHEDREADY_DISABLED	ACTIVATEDCHECKIN_FINALIZEDGENERATION_DRAFTEDOWNER_APPROVEDAPPROVED_CARD_PROJECTEDCAPABILITY_ISSUEDCAPABILITY_CONSUMEDSENT_AUDITEDSURFACE_CAPTUREDQUIESCEDARCHIVEDCLEANUP_COMPLETESOURCE_GOLDEN_PATH_PASS@0000000000000000000000000000000000000000000000000000000000000000>   keyeventoutboxregistry	bootstrap	candidate
activation
onboarding
sent_eventowner_actioncustomer_dataservice_state>   disabledterminal
categoriesactive_countcustomer_keyorphan_countnonconsentingpending_countunknown_countarchive_verifiedjournal_committedF
ascii_onlyc               R    t        j                  | |ddd      j                         S )NT,:F)ensure_ascii	sort_keys
separators	allow_nan)jsondumpsencode)valuer@   s     /home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-native-seven-clause-installed-st_01a01574-v3/tools/verify_source_golden_path.py	canonicalrN   d   s$    ::e*Q[glmttvv    c                d    t        j                  | j                               j                         S N)hashlibsha256
read_bytes	hexdigest)paths    rM   sharW   h   s!    >>$//+,6688rO   c                    t        | t              rt        d | D              rt        | d      t	        t        t
        t        f   |       S )Nc              3  >   K   | ]  }t        |t                 y wrQ   
isinstancestr.0r(   s     rM   	<genexpr>zobj.<locals>.<genexpr>m   s     )Tesjc.B*Be   z is not an object)r[   dictany
ValueErrorr   r\   r   )rL   labels     rM   objre   l   sA    eT"c)Te)T&TE7"3455S#X&&rO   c                `    t        t        j                  | j                  d            |      S Nzutf-8)encoding)re   rI   loads	read_text)rV   rd   s     rM   	read_jsonrk   r   s#    tzz$..'.:;UCCrO   c           	     :   t        t        |       dd       }t        |t              rt	        |      t
        k7  rt        d      t        | dd       }t        | dd       }t        | dd       }t        | dd       }t        |t              st        d      t        |      }dD ci c]  }|t        | |d        }}d	D ci c]  }|t        | |d        }	}t        |t              r|rt        |      t        ust        |      t        ust	        |      t        k7  srt        d
 |D              s`t        d |j                         D              s@t        d |j                         D              s t        d |	j                         D              rt        d      t        |xr2 |xr. t        d |j                         D              xr |	d   xr |	d         }
|	d   |
urt        d      |||t        t        |j                                     d||	S c c}w c c}w )N__dataclass_fields__z$terminal inventory schema is invalidr8   r4   r:   r6   z)terminal inventory categories are invalidr7   r;   r<   r9   )r=   r>   r5   c              3  >   K   | ]  }t        |t                 y wrQ   rZ   r]   s     rM   r_   z/serialize_terminal_inventory.<locals>.<genexpr>   s     >:C:c3'':r`   c              3  L   K   | ]  }t        |      t        uxs |d k    ywr   Ntypeintr^   rL   s     rM   r_   z/serialize_terminal_inventory.<locals>.<genexpr>   s(     T@SutE{#%22@S   "$c              3  L   K   | ]  }t        |      t        uxs |d k    ywrq   rr   ru   s     rM   r_   z/serialize_terminal_inventory.<locals>.<genexpr>   s&     PutE{#%22rv   c              3  >   K   | ]  }t        |      t        u  y wrQ   )rs   boolru   s     rM   r_   z/serialize_terminal_inventory.<locals>.<genexpr>   s     F4E5tE{$&4Er`   z*terminal inventory field types are invalidc              3  &   K   | ]	  }|d k(    ywrq    ru   s     rM   r_   z/serialize_terminal_inventory.<locals>.<genexpr>   s     8u
   r=   r>   r5   z*terminal inventory verdict is inconsistent)r8   r4   r:   r6   )getattrrs   r[   ra   setTERMINAL_INVENTORY_FIELDSrc   r   r\   ry   TERMINAL_CATEGORY_FIELDSrb   valuesallsorteditems)r5   fieldsr8   r4   r:   raw_categoriesr6   namecountsbooleansexpected_terminals              rM   serialize_terminal_inventoryr   v   s9   T(^%;TBFfd#s6{6O'O?@@8^T:LxT2HHot<MX|T:Nng.DEEn%J

D 	ghd++
  

D 	ghd++
   |S)>%d*z?66>:>>T
@Q@Q@STTPPPFHOO4EFFEFF 	*	*888	* '(	* () 
#44EFF$&6*"2"2"456	
   Ms   "H=Hc                    | j                  d      j                         D cg c]$  }|st        t        j                  |      |      & c}S c c}w rg   )rj   
splitlinesre   rI   ri   )rV   rd   lines      rM   linesr      sC    59^^W^5U5`5`5bk5bTfjC

4 %(5bkkks
   A!A	directoryfrozenc                  | j                         }t        j                  |j                        s!|j                  t        j                         k7  rt        d|        |rt        j                  nt        j                  } ||j                        r|s|j                  dk7  rt        d|        |r
|rddhnddhn|rdhndh}t        j                  |j                        |vrt        d|        y )	Nzunsafe artifact path:    zartifact type is invalid: i  i@       z"artifact permissions are invalid: )lstatstatS_ISLNKst_modest_uidosgeteuidrc   S_ISDIRS_ISREGst_nlinkS_IMODE)rV   r   r   infoexpected_typealloweds         rM   privater      s    ::<D||DLL!T[[BJJL%@1$899$-DLL4<<M&yT]]a=O5dV<==CIu~[dQVPWkpjqG||DLL!0=dVDEE 1rO   c                J   t        |        t        | d      }t        |      h dk7  rt        d      |d   }|d   |d}|d   dk7  sP|d   t	        j
                  t        |            j                         k7  st        |t              rt        |      d	k7  rt        d
      t        |d   d      }t        |j                  d      d      }|j                  d      }|j                  d      |k7  s&|j                  d      dk7  st        |t              r|st        d      |S )Nzbootstrap ledger>   digestschemasessionsz"bootstrap ledger schema is invalidr   r   )r   r   ztelegram-customer-bootstrap-v1r   r   z%bootstrap ledger authority is invalidr   zbootstrap sessioncustomer_draftzbootstrap customer draft
session_idr8   stateACTIVEz#bootstrap ACTIVE lineage is invalid)r   rk   r~   rc   rR   rS   rN   rU   r[   listlenre   getr\   )rV   customerledgerr   payloadsessionr   r   s           rM   verify_bootstrap_active_lineager      s   DMt/0F
6{66=>>j!H)x@Gx<<(w~~i.@AKKMM(D)x=A@AA(1+23G%568RSN\*J>*h6;;w8+*c*>??rO   c                  
 | dz  }t        |       t        |d      }|j                  d      dk7  rt        d      t	        t        |j                  dd                  

t        k7  s 
j                         s
j                         st        d      |j                  d	      }t        |t              r|st        d
      g }|D ]  }t        |d      }|j                  d      }t        |t
              r0t	        |      j                         sdt	        |      j                  v rt        d      
|z  }|j                         s-|j                         r|j                         j                   dk7  rt        d      t#        |      |j                  d      k7  s,|j                         j$                  |j                  d      k7  rt        d      |j'                  |         t)        
fd
j+                  d      D              }	||	k7  s>t-        j.                  t1        |            j3                         |j                  d      k7  rt        d      t        |d         
fS )Nsource-provenance.jsonsource provenancer   zsource-golden-provenance-v1z#source provenance schema is invalidsource_root z%source provenance root is unavailablefilesz$source provenance inventory is emptyzsource provenance rowrV   ..z!source provenance path is invalidr   z%source provenance file is unavailablerS   sizezsource provenance file changedc              3     K   | ]_  }|j                         rM|j                         s=t        d  |j                  D              s!|j	                        j                          a yw)c              3  $   K   | ]  }|d v  
 yw)>   .venv__pycache__Nr{   )r^   parts     rM   r_   z.verify_provenance.<locals>.<genexpr>.<genexpr>   s     ?xmweiH`@`mw   N)is_file
is_symlinkrb   partsrelative_toas_posix)r^   rV   sources     rM   r_   z$verify_provenance.<locals>.<genexpr>   sS      (D<<>$//"3C?xmqmwmw?x<x 	 ))+(s   A%A(z*.pytree_digestz)source provenance inventory is incomplete)r   rk   r   rc   r   r\   DEFAULT_SOURCEr   is_dirr[   r   re   is_absoluter   r   r   r   rW   st_sizeappendr   rglobrR   rS   rN   rU   )rootrV   
provenancerowsexpected_pathsrawrowrelativetargetactualr   s             @rM   verify_provenancer      s
   **DDM4!45J~~h#@@>??#jnn]B789F6#4#4#6fmmo@AA>>'"DdD!?@@ "N#./776?(C(DN,F,F,HDTXYaTbThThLh@AA("fnn&6&++-:P:PTU:UDEEv;#''(++v{{}/D/DPV/W=>>h'   LL( F
 7>>)D/#B#L#L#NR\R`R`anRo#oDEEz-()611rO   c                n	   | dz  }t        |      }t        |      h dk7  s|j                  d      dk7  rt        d      t	        |j                  d      d      j                  d      dk7  rt        d	      t        j                  t                    j                         }|j                  d
      |k7  rt        d      j                  d      |k7  rt        d      t	        j                  d      d      }|j                  d      dk7  s!|j                  d      t        t              k7  rt        d      t        t              j                         j                  }t        |dz        t        |dz        t        t        t                    t        |dz        d}t!        fd|j#                         D              rt        d      t	        j                  d      d      }t	        |j                  d      d      }	t	        |	j                  d      d      }
t	        |	j                  d       d!      }t%        t        t        |j                  d"d#                  t        t        |j                  d$d#                  t        t        |
j                  d%d#                  t        t        |j                  d%d#                  &      }||k7  rt        d'      t'        d( |
|fD              }|j                  d)      }t)        |t*              r|st        d*      g }|D ]w  }t	        |d+      }|j                  d,      }t)        |t              r,|d-k(  s2|j-                  d.      s!|d/k(  s|j-                  d0      st        d1      |j/                  |       y |t1        t        |            k7  rt        d2      i }|D ]]  }t2        j4                  j7                  |      }|d n|j8                  }t)        |t              st        d3|       t        |      ||<   _ t;        ||4      }||k7  rt        d5      |j                  d6      }t)        |t              r3t        |      j                  d78      t        t        |d$               k7  rt        d9      |t        |      fS ):Nzinstalled-provenance.json>   r   bindingloaded_modulescandidate_digestr   zinstalled-golden-provenance-v1z&installed provenance schema is invalidr   zinstalled candidate bindingz%installed-golden-candidate-binding-v1z-installed candidate binding schema is invalidr   z-installed candidate digest binding is invalidsource_provenancez,installed source metadata binding is invalidconfigzinstalled config bindingruntime_mode	installedprofile_source_metadata_onlyz#installed config binding is invalidzsource_golden_path.pyr
   ztask26_evidence_contract.py)harness_sha256provenance_helper_sha256verifier_sha256task26_contract_sha256c              3  L   K   | ]  \  }}j                  |      |k7    y wrQ   r   )r^   r(   rL   r   s      rM   r_   z.verify_installed_provenance.<locals>.<genexpr>  s&     
N7Me7;;su$7Ms   !$z,installed harness or verifier digest changedruntimezinstalled runtimedistributionszinstalled distributionsprofilezinstalled profile distributionhermeszinstalled Hermes distributionvenvr   site_packages
wheel_path)r   r   profile_wheelhermes_wheelz6installed runtime receipt differs from installed bytesc              3     K   | ]:  }t        t        t           |j                  d             D ]  }t	        |        < yw)package_rootsN)r   r   r\   r   r   )r^   distribution	root_paths      rM   r_   z.verify_installed_provenance.<locals>.<genexpr>%  s?      -Ld3i)9)9/)JKI 	YK 	-s   A Ar   z0installed loaded-module receipts are unavailablezloaded module receiptmodulecheckin_clizcheckin_cli.gatewayzgateway.z'installed loaded-module name is invalidz.installed loaded-module receipt set is invalidz/installed loaded-module origin is unavailable: )allowed_rootsz?installed loaded-module declarations differ from import realityprofile_package_authorityTstrictz.installed profile package authority is invalid)read_private_jsonr~   r   rc   re   rR   rS   rN   rU   r\   r   r   __file__resolveparentrW   rb   r   collect_installed_runtimetupler[   r   
startswithr   r   	importlibutil	find_specoriginloaded_module_receipts)r   r   rV   documentexpected_candidater   scriptsexpected_toolsr   r   r   r   
recomputedrootsdeclarationsdeclared_namesr   r   r   actual_modulesspecr  actual_receipts	authorityr   s                           @rM   verify_installed_provenancer     sQ    --D &H
8}SSW_WcWcdlWm  rR  XRABB(,,y)+HIG{{8 GGHII 	'(:;EEG||&'+==HII{{&'+<<GHHX&(BCFzz.![0FJJ?]4^beftbu4u>??8n$$&--Gg(??@$'2Q(Q$RtH~."%g0M&M"N	N 
N~7K7K7M
NNGHH'++i(*=>GO46OPM-##I.0PQG""8,.MNF*#gkk&"-./3w{{?B?@A3w{{<<=>#fjjr:;<	J WQRR $f- E
 << 01LlD)KLL "N#./wwx $$T]-BdooVdFeimqziz  C  N  N  OY  ZFGGd#  N 344IJJ&(N~~''-4;;&#&NtfUVV#F|t  -^5QO,&Z[[

67Ii%i)@)@)@)MQUVYZabqZrVsQt)tIJJtI..rO   c           	     \   | dz  }t        |       t        |d      }t        |      dk  s|d   j                  d      dk7  rt	        d      t
        }g }|D ]  }|j                  d      |k7  rt	        d	      |j                         D ci c]  \  }}|d
k7  s|| }	}}t        j                  t        |	            j                         }
|j                  d
      |
k7  rt	        d      |
}|j                  d      dk(  s|j                  d      }t        |      t        urt	        d      |j                  |        |d   }|j                  d      |k7  s2|t        t        dt        |      dz               k7  st        |      dk  rt	        d      t        |      |dS c c}}w )Nzobserver-receipts.jsonlzobserver receipt   r   kindsubscription_armedz&observer was not armed before mutationpredecessorz!observer receipt chain is invalidreceipt_hashz observer receipt hash is invalidcommit_observedsequencezobserver sequence is invalidcandidate_idr      z(observer subscription binding is invalid)receipt_counthead)r   r   r   r   rc   ZEROr   rR   rS   rN   rU   rs   rt   r   r   range)r   r-   rV   receiptsprevious	sequencesr   r(   rL   bodycurrentr  armeds                rM   verify_observerr+  F  s   ++DDMT-.H
8}qHQKOOF37KKABBHI77=!X-@AA-0YY[R[zsEC><QU
[R..41;;=77>"g-?@@776?//wwz*HH~S( !?@@X&  QKEyy I-d5CPYN]^L^C_>`1`dghqdruvdvCDD ]H== Ss   F(F(c                
   | d| dz  }t        |       t        |d      }g d}|D cg c]  }|j                  d       c}|k7  rt        d      t        }|d   j                  d      }|D ]c  }|j                  d      |k7  s|j                  d	      |k7  rt        d
      t        j                  t        |d            j                         }e | dz  t        |      z  }t        |dd       |dz  }	t        |	d       t        |	      |d   j                  d      k7  rt        d      t        |	d      }
|
j                  d      dk7  s(|
j                  d      |k7  s|
j                  d      |k7  rt        d      |
j                  d      }t        |t              r|st        d      i }|D ]  }t        |d      }|j                  d      }t        |t              r4t        |      j!                         sdt        |      j"                  v s||v rt        d      |dz  |z  }t        |d       |j%                         j&                  |j                  d      k7  st        |      |j                  d       k7  rt        d!      |||<    |
j                  d"      }t        |t              rt)        |      d#k7  rt        d$      t        |d   d%      }d&}d'| }| |z  }||z  }t        |       t        |d       |j                  d(      |k7  s|j                  d)      |k7  s|j                  d*      d+k7  sz|j                  d,      t        |      k7  s]|j                  d-      |j%                         j&                  k7  s1|j                  d.      d/k7  s|j                  d0      t        |      k7  rt        d1      t        |d2      }t        |d3      }t+        |j-                               D ci c]D  \  }}t        |t              r/|r-t        |d   t.              r|d   j                  d      |k(  r||F }}}d4||d5}|j1                         D cg c]7  }|D ]0  }t        j                  t        |d            j                         2 9 }}}||k7  sR|j3                         t        |d      d6z   k7  s1|j                  d7      t)        |      k7  s|j                  d8      |k7  rt        d9      |||<   ||t)        |      t        |	      t        |      t)        |      t        |      d:fS c c}w c c}}w c c}}w );Nzdata/customer-cleanup/z.journal.jsonlzcleanup journal)preparedcopied_verifiedsource_pruned	committedphasez0cleanup journal is not terminal and forward-onlyr   operation_idprevious_digestz cleanup journal chain is invalidTr?   zdata/customer-cleanup/archivesr   zmanifest.jsonr   manifest_sha256z cleanup manifest digest mismatchzcleanup manifestschema_versionzcustomer-cleanup-archive-v2r8   z%cleanup manifest authority is invalid	inventoryzcleanup inventory is emptyzcleanup inventory rowrelative_pathr   z!cleanup inventory path is invalidr   r   rS   zcleanup archive bytes mismatchshared_ledger_projectionsr   z7cleanup shared-ledger projection cardinality is invalidz shared-ledger projection bindingz)data/owner-actions/draft-generations.jsonzprojections/source_relative_pathprojection_archive_pathselector_versionzdraft-generations-customer-v1source_sha256source_sizesource_moder   projection_sha256z<cleanup shared-ledger source preservation binding is invalidzshared draft-generation sourcezdraft-generation projection0customer-cleanup-draft-generations-projection-v1)r6  r8   	histories   
selected_record_countordered_record_digestszIcleanup archive projection is not the exact target-only source projection)r2  inventory_countr5  r@  projection_record_countpreserved_source_sha256)r   r   r   rc   r#  rR   rS   rN   rU   r\   rW   rk   r[   r   re   r   r   r   r   r   r   r   r   ra   r   rT   )r   r   journalr   phasesr   r&  	operationarchivemanifest_pathmanifestr7  	artifactsr   r   r   sharedr   source_relativeprojection_relativer   
projectionsource_document	projectedtokenhistoryselectedexpected_projectionrecord_digestss                                rM   verify_cleanupr[  a  s@   -hZ~FFGG+,DJF$()DSD)V3KLLHQN+I77>"i/377;L3MQY3Y?@@>>)CD"ABLLN  55IFGGtD1o-MM$'
=T!W[[):;;;<<(:;H||$%)FF(,,WeJfjrJrv~  wC  wC  DR  wS  W`  w`@AA[)Ii&i566!#I#./77?+(C(DN,F,F,HDTXYaTbThThLhlt  yB  mB@AA7"X-t$;;=  CGGFO3s6{cgghFW7W=>>$	(  \\56Ffd#s6{a'7RSS&)?@GAO((9:O#F..JFOJt$*+>;;015HH;;)*.MM;;'3v;6;;}%)>)>>;;}%.;;*+s:>WXX(HIO*&CDI %_%:%:%<==NE7gt$wqz4(AJNN>*h6 	w=   M   ((GC 	y67AAC 	D(   	((  "i0CPT&UX]&]];;./3~3FF;;/0NBdee%/I!"!y>}- _#&~#6#&v;  _ *js   T>;A	U <U	c                    | j                         D cg c]  \  }}|j                  |      s| }}}t        |      dk7  rt        d|       |d   S c c}}w )Nr   z6required native artifact is unavailable or ambiguous: r   )r   endswithr   rc   )rO  suffixr   rV   matchess        rM   requiredr`    sb    *3//*;Y*;$x?P?PQW?Xt*;GY
7|qQRXQYZ[[1: Zs
   AAc                   t        | d       t        | d      }	 ddlm} |D cg c]  }|j	                  |       }}t        d t        ||d      D              rt        d	      |D cg c]  }|j                   }}|D cg c]  }|j                   }	}t        |      t        t        |            k7  s t        |	      t        t        |	            k7  rt        d
      |D cg c]  }|j                  j                  dk(  s|  }
}t        |
      dk7  s-|
d   j                  r|
d   j                  |
d   j                   t        d      d}|D ch c]  }|j                  j                   c}dh|k7  rt        d      i }d }|D ]  }|D cg c]  }|j                  j                  |k(  s|  }}t        |      dk7  rt        d      |d   }|j"                  }|t        d      |j$                  j&                  }|j(                  r8|d| d| k7  s-|j                  | d| d|j(                   k7  s|j                  t        d      ||j(                  }n|j(                  |k7  rt        d      |||<    |t        |      t        |      k7  rt        d      |
d   j                  |fS c c}w # t
        $ r}t        d      |d }~ww xY wc c}w c c}w c c}w c c}w c c}w )NTr4  zwizard eventr   )Eventz(canonical wizard event schema is invalidc              3  N   K   | ]  \  }}|j                  d d      |k7    yw)rI   T)modeexclude_noneN)
model_dump)r^   r)   r   s      rM   r_   z2verify_canonical_journey_events.<locals>.<genexpr>  s1      AJE3 	f48C?As   #%r   z/canonical wizard event serialization is invalidz-canonical wizard event identity is duplicatednutrition_checkinr   z,check-in finalization cardinality is invalid)draft_createddraft_approved
draft_sentz+canonical journey event type set is invalidz&draft lifecycle cardinality is invalidzpilot:rD   z+draft lifecycle customer binding is invalidz(draft lifecycle identity is inconsistentzdraft lifecycle is incomplete)r   r   checkin_cli.modelsrb  model_validate	Exceptionrc   rb   zipevent_id
dedupe_keyr   r~   
event_typerL   
supersedescheck_indraftr   
source_refdraft_id)rV   r   raw_rowsrb  r   parsed_rowsexcr)   	event_idsdedupe_keyscheckinslifecycle_typesdraft_eventsrv  rq  r_  r   ru  s                     rM   verify_canonical_journey_eventsr    s%   DT>*HN,<DEHSu++C0HE  k8DA  JKK-89[E[I91<=5##K=I#c)n--{s3{#344HII&&%%*:*:*@*@DW*W;   	H{##A;!!-A;'GHHGO,78K5K8=	=  FGG#%LH%
&1ZkUU5E5E5K5Kz5Y5kZw<1EFF
++?EFF%%00
  vhZq==j\8*Ag>N>N=O#PP+JKK''H)GHH#(Z ) &* 3|,O0DD899A;))q F NCD#MN := 9 [sQ   
K J>K ,K K%)K*K*K/K47K4>K 	KKKc                   t        | d      }t        |      |hk7  rt        d      ||   }t        |t              r|st        d      |D cg c]  }t        |d       }}|d   j                  d      dk7  st        fd|D              rt        d      d }|D ]d  }|j                  d	      }	|j                  d
      |k7  s0t        |	t              r t        |	      dk7  st        d |	D              rt        d      |	}f |S c c}w )Nzgeneration projection historiesz)generation lineage cardinality is invalidzgeneration lineage is invalidzgeneration rowr   sent_auditedc              3  r   K   | ].  }|j                  d       k7  xs |j                  d      k7   0 yw)r8   checkin_event_idNr   )r^   r   
checkin_idr   s     rM   r_   z,verify_generation_lineage.<locals>.<genexpr>  sE      6 C 	8+ 	577%&*4	5   47record_digestpredecessor_digest@   c              3  $   K   | ]  }|d v 
 yw0123456789abcdefNr{   r^   	characters     rM   r_   z,verify_generation_lineage.<locals>.<genexpr>!  s     V99$66r   z"generation digest chain is invalid)	re   r~   rc   r[   r   r   rb   r\   r   )
generationsr   r  rv  r
  rW  r   r   r&  r  s
    ``       rM   verify_generation_lineager    s    ; ABH
8}
"DEEx Ggt$G89929:'3C%&'D:Bx||G.# 6 6 3
 899H0GG()X5mS1=!R'VVVABB   K% ;s   Dc                   t        |        t        | d      }t        |      h dk7  rt        d      |j	                  d      }|j	                  d      |d}|j	                  d      dk7  sNt        |t              r>|j	                  d      t        j                  t        |            j                         k7  rt        d	      |j                         D ]  \  }}t        |t              r|st        d
      t        |d      }|j	                  d      }	 t        |t              xr& t        j                  |      j!                         |k(  }	t        |      h dk7  s>|j	                  d      dvs+t#        |j	                  d            t$        us|d   dk  s|	rt        d       |j	                  |      }
t        |
t              r|
j	                  d      dk7  rt        d      |
d   |
d   |
d   dS # t        $ r d}	Y w xY w)Nzservice state>   r   statespayload_digestz%service state ledger shape is invalidr  r   )r   r  zcustomer-service-state-v1r  z)service state ledger authority is invalidz%service state customer key is invalidzservice state row
updated_onF>   r   revisionr  r   >   activepausedr  r   zservice state row is invalidr  z"customer quiescence is unavailable)r   r  r  )r   rk   r~   rc   r   r[   ra   rR   rS   rN   rU   r   r\   re   r   fromisoformat	isoformatrs   rt   )rV   r   r
  r  unsignedr8   raw_rowr   r  
valid_daterX  s              rM   verify_customer_quiescencer  (  s   DM/H
8}>>@AA\\(#F",,x0FCHX"==&$'<<()>>)H-.88:; DEE!'g,,LDEE'./WW\*
	:s+ M&&z2<<>*L  H;;www';;CGGJ'(3:";<<' "0( zz(#Hh%g)>()J=>>'"Z(|,   	J	s   8G77HHr-   nativecleanupc               H  < | dz  }	 t        |d       |dz  }t        |       t        |d      }t	        |      t	        t
              k7  rt        d      dht        t
        d	      D 	ch c]  \  }}	|d
d|	 d c}	}z  }
|j                         D ch c]  }|j                   c}|
k7  rt        d      t        }d}i }t        t        t
        |d      d	      D ]R  \  }\  }	}t        |      h dk7  rt        d      |j                         D ci c]  \  }}|dk7  s|| }}}t        j                  t        |            j!                         }|j#                  d      }|j#                  d      dk7  s|j#                  d      |k7  s|j#                  d      |	k7  su|j#                  d      |k7  sa|j#                  d      |k7  sMt%        |t&              r=t	        |      dk7  s/t)        d |D              s|||k7  s||j#                  d      |k7  rt        d      |}|d
d|	 d}|j#                  d      |k7  rt        d      ||z  }t        |       t+        |      |j#                  d      k7  rt        d      t-        |d       }t        |      h d!k7  s_|j#                  d      d"k7  sK|j#                  d      |k7  s7|j#                  d      |j#                  d      k7  s|j#                  d      |	k7  rt        d#      t/        |j#                  d$      d%|	 d&      ||	<   |}U d'd(lm} d'd)lm} d'd*lm} d'd+lm} |d,   }|j#                  d-      }|j#                  d.      tA        |      k7  s0t%        |t@              r t	        |      d/k7  st	        tB              d/k7  rt        d0      i }t        t        |tB        |d            D ]?  \  }\  } }!}"t/        |"d1      }# || |!      }$|#|| |!|$||d	z   dd'd2k7  rt        d3      |$|| <   A |j#                  d4      |k7  rt        d5      |d6   }%t/        |%j#                  d7      d8      }&t/        |%j#                  d9      d:      }'	 tE        jF                  t'        |%j#                  d;                  }( ||&|(=      }) ||&|(=      }* ||'|(=      }+ ||&|)jH                  d>d?i|(@      },t/        |%j#                  dA      dB      }-t/        |%j#                  dC      dD      }.|.j#                  dE      }/t%        |/t&              r0tK        |/      jM                         sdFtK        |/      jN                  v rt        dG      | |/z  }0t        |0       t-        |0dH      }1|D  cg c]'  } |&j#                  |       |'j#                  |       k7  r| ) }2} |%j#                  dI      |)jQ                  dJK      k7  s|%j#                  dL      |*jQ                  dJK      k7  s|)|*k7  st	        |)jR                        d	k7  s|)jR                  d'   jT                  dMk7  sp|-|)jR                  d'   jV                  dM|jY                  dM      |)jH                  |)jZ                  dNk7  s*|-dO   d'k(  s!|2dMgk7  s|%j#                  dP      |+jQ                  dJK      k7  s|+jR                  s|.j#                  dQ      t+        |0      k7  s|.j#                  dR      dSk7  st/        |.j#                  d>      dT      j#                  dU      dVk7  s|.j#                  dW      |,k7  sx|.j#                  dX      |1j#                  dY      k7  sUt/        |.j#                  dX      dZ      j#                  dU      d[k7  s(|.j#                  d\      |'k7  s|1j#                  d\      |'k7  rt        d]      |d^   }3|3j#                  d_      d`k7  sa|3j#                  da      g k7  sM|3j#                  db      d/k7  s9|3j#                  dc      dVk7  s%|.|3j#                  dd      |j#                  de      k7  rt        df      |dg   }4|4j#                  dh      dusR|4j#                  di      djk7  s>|4j#                  dk      i k7  s*t'        |4j#                  dldm            j]                  dn      st        do      |dp   }5ddqdrds}6t/        |5j#                  dt      du      }7tA        |7j_                               }8|5j#                  dv      |6k7  s|5j#                  dw      |6k7  s||5j#                  dx      d'k7  sht	        |8      d	k7  sZt%        |8d'   t`              rG|8d'   j#                  d>      dqk7  s0t/        |8d'   j#                  dy      dz      j#                  d>      d{k7  rt        d|      |d}   }9| d~z  }:|9j#                  d      dk7  s|9j#                  d      dk7  s|9j#                  d      dk7  s|9j#                  d      dus|9j#                  d      dk7  sl|9j#                  d      dk7  sX|9j#                  d      dk7  sD|9j#                  d      d	k7  s0|9j#                  d      dus|9j#                  d      t+        |:      k7  rt        d      |d   <| dz  };<j#                  d      dk7  s<j#                  d      dus}<j#                  d      dk7  si<j#                  d      dusVt)        <fddD              sB<j#                  d      t+        |;      k7  s%|.<j#                  d      |j#                  d      k7  rt        d      t	        t
              ||dS # t        $ r}t        d      |d}~ww xY wc c}	}w c c}w c c}}w # t        $ r}t        d<      |d}~ww xY wc c} w )zEDerive every Task26 branch verdict from raw, hash-bound API outcomes.ztask26-evidenceTr   zreceipts.jsonlzTask26 receiptz'Task26 evidence contract is unavailableNz&Task26 evidence contract is incompleter   02d-z.jsonz&Task26 evidence inventory is not exactr   >	   clauser   artifactr  invocation_idreceipt_sha256artifact_sha256previous_sha256r   z Task26 receipt schema is invalidr  r  r   ztask26-native-receipt-v1r  r  r      c              3  $   K   | ]  }|d v 
 ywr  r{   r  s     rM   r_   z)verify_task26_contract.<locals>.<genexpr>  s     [HZ99$66HZr   r   z5Task26 receipt chain or invocation binding is invalidr  z"Task26 artifact binding is invalidr  z'Task26 artifact hash binding is invalidzTask26 artifact>   r  r   r   r  r   ztask26-native-artifact-v1z*Task26 native artifact envelope is invalidr   zTask26 z payloadr   )QUESTION_FIELDS)compile_clarification_policy)build_reconciliation)parse_answerr   observationsquestion_fields   z.Task26 22-answer native evidence is incompletezTask26 answer observation)indexfieldr   rN   before_countafter_counthandledreask_countz4Task26 clear answer was re-asked or miscanonicalizedproduction_answersz;Task26 production answers differ from raw canonical resultsr   ambiguous_answerszambiguous answersrevised_answerszrevised answersreference_datez*Task26 ambiguity reference date is invalid)r  statusunavailable)answersanswers_digestadvisoryr  revision_bindingzrevision bindingnative_branchznative ambiguity branchworkflow_pathr   z0Task26 native ambiguity workflow path is invalidznative ambiguity workflowfirst_resultrI   )rd  second_resultschedule_constraints)issue_idr  field_indexr  reconciliation_digestr  revised_resultworkflow_sha256field_zero_rejectionz(reconciliation revision binding is staleznative revised statusr   customer_attestationinitial_reconciliationrevised_reconciliationreconciliationznative revised reconciliationresolvedr  z=Task26 deterministic ambiguity or revision binding is invalidr   preview_phase
confirmingpreview_clarificationsproduction_answer_countproduction_stateproduction_session_idr   z9Task26 preview evidence was used as production acceptancer   projection_fault_seenprojection_errorz,source-golden-approved-card-projection-faultdelivery_rows_after_failurecapability_errorr   zIDraftGenerationTransitionError: delivery capability target is unavailablez=Task26 projection failure did not prevent capability issuancer   unknown_provider_outcomeF)acceptedr  transport_requireddelivery_ledgerzunknown delivery ledgerfirstsecondtransport_calls_before_senddelivery_capabilityzunknown capabilityconsumedz-Task26 unknown delivery outcome was retryabler   (data/owner-actions/draft-deliveries.jsonattestation_stateowner_reviewowner_review_statereadyactivation_stater   checkin_finalizedapproval_statusapproveddelivery_statusr  surface_schema$telegram-customer-surface-receipt-v2transport_callsduplicate_rejecteddelivery_ledger_sha256z5Task26 successful lifecycle native binding is invalidr   z.data/customer-cleanup/client_001.journal.jsonlfault_phaser.  
fault_seenterminal_phaser0  r5   c              3  F   K   | ]  }j                  |      d k7    ywrq   r   )r^   r(   r5   s     rM   r_   z)verify_task26_contract.<locals>.<genexpr>;  s"     t1s#x||C A%1s   !rn   journal_sha256r2  z=Task26 cleanup did not resume forward to one terminal receipt)clause_count
chain_headr  )1r   r   OSErrorrc   r   TASK26_CLAUSES	enumerateiterdirr   r#  rn  r~   r   rR   rS   rN   rU   r   r[   r\   rb   rW   rk   re    checkin_cli.nutrition_onboardingr  5checkin_cli.nutrition_onboarding_clarification_policyr  /checkin_cli.nutrition_onboarding_reconciliationr  4gateway.platforms.telegram_nutrition_onboarding_copyr  r   TASK26_ANSWERSr   r  r  r   r   r   rf  issuesr  r  r  result_digestr  r   ra   )=r   r-   r  r  evidence_root
chain_pathr%  ry  r  r  expected_filesrV   r&  r  rO  r  receiptr(   rL   r(  computedcurrent_invocationartifact_nameartifact_pathr  r  r  r  r  r/   r  canonical_answersr  r   raw_observationobservationparsed	ambiguityr  r  r  r  r  revisedfirst_recordr   r  workflow_relativer  workflowchanged_fieldspreviewrS  unknownexpected_unknownunknown_ledgerunknown_rows
successfuldelivery_pathrI  r5   s=                                                               @rM   verify_task26_contractr"  T  s~    ,,MM."%55

%56 8}N++ABB&'&~q9+9ME6 +Qvhe$9+ N ,33565d		56.HABBH $M+-I'0NHT2A(##67 w< 
 

 ?@@-4]]_X_zsEGW@WU
_X>>)D/2<<>$[[9KK!%??{{:&(2{{8$.{{,-9{{+,80#6%&",[HZ[[).@M.Q%'++6H*IY*VTUU*#C.&7;;z"m3ABB%5}->!??FGG],=>Maa||H%)DD||O,=||./7;;?Q3RR||H%/IJJY 776((9ST	&W(Z AbTQ01J>>.1L()T/-BB,-|"~"$IJJ+-09O^\$G1,,sO /+FGeS)! 19	
 	
 STT#)% !1" ~~*+/@@VWW<=IIMM*=>@ST)--(9:<MNOP++C	>N0O,PQ )):>ZE)*;N[F*?>ZG'!++M*%	L )-- 235GHG	o68QRM%))/:(#.!"..04)*000KLL,,MM(CDH**%  '?+>+>u+EE 	?  
 	n%)9)9v)9)FF==)V->->F->-KKF?u||!<<?  $::Q00+*001GH#22%*%8%8
 
 =!Q&455==)*g.@.@f.@.MM>>./3}3EE348bb}  *,CDHHQUkk56,F56(,,GW:XX}  !9:<[\``ahimwwY'?:<<	"o5XYY+,GO$4;;/0B6;;01R7;;)*.DD7;;/F#G6::VbKc#cTUU:;J./t;>>,-1__>>78B>:>>"4b9:EEW
 XYY34G,#
 %679RSN--/0LG 00;;x $44;;45:|!,q/40?x(,FF|A""#89;OPTTU]^bllHII12JEEM*+~=>>./7:>>,-9>>-.d:>>+,
:>>+,>>>*+/UU>>+,1>>./t;>>23s=7IIPQQ23HEEG]#'88<<%T1<<()[8<<
#4/t1stt<<()S\9HLL$@GKKP^D_$_XYY/xZghh}  MBCLM+ 7 YX  PEFCOP.sM   )m ,m1m7m<'m<8-n ,n	m.m))m.	nnnc                X  "# | dz  j                         rt        d      t        | dz  d      }|j                  dg       D cg c]*  }t	        |t
              s|j                  d      |k(  s)|, }}t        |      dk7  sE|d   j                  d	      d
us/t        |d   j                  d      d      j                  d      d
urt        d      t        | dz  d      }|j                  d      dk7  s|j                  d      |k7  rt        d      | dz  }t        ||      #t        t        |d      d      }	t        t        |d      d      "t        t        |d      d      }
t        t        |d      d      }|	j                  d      dk7  s:|	j                  d      |k7  s&|j                  d      d
us|j                  d       d
urt        d!      "j                  d      |k7  sC"j                  d"      d#k7  s."j                  d$      d%k7  s"j                  d&      d'k7  s"j                  d(      d)k7  s"j                  d*      d+k7  s܉"j                  d,      ˉ"j                  d-      "j                  d.      d/k7  s"j                  d0      t        d1   k7  st        "fd2d3D              sw"j                  d4      d
usdt	        "j                  d5      t              rEt	        "j                  d6      t              r&t        t        "j                  d6                  d7k7  rt        d8      "d9f|
d:f|dffD ]{  \  }}|j                  d;      }|t        j                  t        |j!                         D ci c]  \  }}|d;k7  s|| c}}            j#                         k7  sot        | d<       t%        t        |d=      |      \  }}t        t        |d>      d?      }|j                  d@      dAk7  s|j                  d      |k7  rt        dB      t'        |j                  dC      |||      }| dDz  }t)        |       t        |dE      }t        |      dk7  rt        dF      t+        t-        |j/                                     }t        |j                  dG      dH      }t        |j                  dI      dJ      }|j                  dK      |k7  sP|j                  d      |k7  s<|j                  dL      dMk7  s(|j                  dL      dNk7  s|j                  dO      |k7  rt        dP      t1        | dQz  dR      }t        |      dk7  s|d   j                  dS      |j                  dT      k7  s_|d   j                  dU      t        j                  t        |j                  dVdW            j3                               j#                         k7  rt        dX      | dYz  }t)        |       t1        |dZ      }t        |      dk(  r|d   ni }|j                  d[      d\k7  s|j                  dK      |k7  s|j                  dS      |j                  dT      k7  s|j                  d      |k7  s|j                  d]      |j                  d^      k7  so|j                  d_      |j                  d`      k7  sL|j                  da      |d1   j                  d^      k7  s&|j                  db      |d1   j                  dc      k7  rt        dd      | dez  }t5        ||       | dfz  }t)        |       t        |dg      } | j                  dh      }!t	        |!t6              r|!rt        #fdi|!D              rt        dj      |#|t        |!      t        |      dkS c c}w c c}}w )lNlifecycle-events.jsonl7self-authored lifecycle/PASS declarations are forbiddenzcustomers/registry.jsonr+   	customersr8   r   r   enabledFai_processing_consentconsentgrantedz,terminal registry authority is not withdrawnz%data/customer-activation-journal.jsonzactivation journalr   r0  customer_idz activation commit is unavailablez:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonznutrition-onboarding/ready.jsonzonboarding readyz%nutrition-onboarding/baseline-v1.jsonzonboarding baselinez+nutrition-onboarding/readiness-current.jsonzreadiness pointerz.nutrition-onboarding/readiness-receipt-v1.jsonzreadiness receiptr  delivery_enabledactivation_enabledz!native readiness state is invalidequation_sex_basismale	height_cmg     f@	weight_kgg      T@activity_categorymoderate	goal_typemaintaintarget_weight_kgtarget_date
meal_count   r  r  c              3  F   K   | ]  }j                  |      g k7    y wrQ   r   )r^   r  baselines     rM   r_   z verify_native.<locals>.<genexpr>b  s+      
 LL2%r  )	allergiesintolerancesreligious_ethical_exclusionsdisliked_foodsdietary_preferences
conditionsmedicationspregnancy_breastfeedingcustomer_attested_at_kstowner_review_receiptr  zKnative onboarding baseline does not prove the canonical answers and reviewsr;  	readinessr   z digest is invalidzwizard/events.jsonlz5projections/data/owner-actions/draft-generations.jsonzgeneration projectionr6  rA  z'generation projection schema is invalidrB  r  zdelivery ledgerzdelivery cardinality is invalidr  zdelivery capabilitybindingszdelivery capability bindingsrv  r  r  r  r   z&delivery capability lineage is invalidz"raw-customer-transport-calls.jsonlzraw customer callprovider_message_id
message_idtext_sha256textr   z7raw transport cardinality or receipt binding is invalidz>data/owner-actions/customer-surface-receipts-v2/receipts.jsonlzsurface receiptr   r  approved_generation
generation!approved_generation_record_digestgeneration_record_digestterminal_generation!terminal_generation_record_digestr  z6customer surface receipt descendant binding is invalidz.data/owner-actions/customer-service-state.jsonz:data/onboarding/telegram-publication-outbox-v1/ledger.jsonzpublication outboxrecordsc              3  r   K   | ].  }|j                  d       k7  xs |j                  d      dk7   0 yw)r   r   	COMMITTEDNr   )r^   r   r   s     rM   r_   z verify_native.<locals>.<genexpr>  s\       ;V  NU  GJ377<;PT^;^  <Bbebibijqbr  wB  cB  <B  NUr  z&publication receipt lineage is invalid)r8   r   rv  publication_countgeneration_count)existsrc   rk   r   r[   ra   r   re   r   r`  r  rb   r\   rR   rS   rN   r   rU   r  r  r   nextiterr   r   rK   r  r   )$r   rO  r   r-   r+   r   r_  r.   bootstrap_pathr  rF  r  r
  rd   claimedr(   rL   r  rv  r  rW  deliveries_path
deliveriesdelivery
capabilityrG  	raw_callssurface_pathsurfacessurfaceservice_pathoutbox_pathr*   rR  r;  r   s$                                     @@rM   verify_nativerf  C  s1   ''//1RSS 99:FH&ll;;};sz#t?TY\Y`Y`aoYpt|Y|s;G}
7|qGAJNN95UBc'RS*..YpJqs|F}  GB  GB  CL  GM  UZ  GZGHH4"IIK_`J~~g+-1NRZ1Z;<<XXN0JJhy*KLN`aE)-TUWlmH(9.[\^qrI,\]_rsGyyW$		.(AX(MQXQ\Q\]oQpx}Q}  BI  BM  BM  Nb  Bc  kp  Bp<==^$0<<,-7<<$-<<$,<<+,
:<<$
2<<*+7<<&2<<%*<<./>"3EE 

 
 <<12%?(,,'ABCH(,,'=>Ds8<< 6789R?fgg%z2Y4LwXkNlm%,,x(gnnYX^^M]/qM]zsEadhpapU
M]/q%rs}}w&89:: n
 ;12HJ HY0gh  kB  CK'(,^^bmbqbq  sA  cB  FN  cNBCC'$h
HG GGOO?,=>J
:!:;;D**,-.HX\\"78:OPJ:>>*-/MNH||J8+x||N/Kx/W[c[g[ghp[q  vD  \D  HR  HV  HV  W_  H`  dn  Hn  rz  r~  r~  Q  rR  V_  r_ABBdAACVWI
9~il../DEVbIccgpqrgsgwgw  yF  hG  KR  KY  KY  Z]  ^f  ^j  ^j  kq  su  ^v  Zw  Z~  Z~  Z@  KA  KK  KK  KM  hMRSSZZLL\#45H ]a/hqkRGH!GG;;z"h.;;,-l1KK;;~&(2;;,-l1KK;;:;<<234;;,-1NN;;:;2;???+, QRRJJL|X6UUKK{$89Fjj#Ggt$Gs  ;V  NU  ;V  8VABB$JHknovkw  NQ  RY  NZ  [  [ ~T 0rs   ^!^!/^!^&^&c           
     j   | j                         } t        | d       | dz  j                         rt        d      t	        |       \  }}t        | dz  d      }t        | dz  d      }|j                  d	d
      }|dk(  rt        | |      \  }}nR|d
k(  rB||}}t        |      }|t        j                  vr,t        j                  j                  d|       nt        d      t        | |      }	|j                  d      }
|j                  d      |k7  st        |
t              st        d      t        | |
      \  }}ddlm}  || |
      }t#        |      }|j$                  r>t'        d |j(                  |j*                  |j,                  |j.                  fD              rt        d      ||d<   t1        | ||
|      }t3        | |||      }t5        j6                  t9        ||	d   |d   ||d   d            j;                         }|dk(  rdnd}||||t        |      t        |      |	d   |d||S )NTr  r$  r%  r   r   zdriver-input.jsonzdriver inputr   r   r   r   zdriver runtime mode is invalidr8   r   zdriver input binding is invalid) post_cleanup_authority_inventoryc              3  &   K   | ]	  }|d k7    ywrq   r{   ru   s     rM   r_   zverify.<locals>.<genexpr>  s       $
E 	

r|   z0post-cleanup authority inventory is not terminalterminal_inventoryr  r"  r5  r  )r-   observerrN  r  task26_contract_head!ACTUAL_INSTALLED_GOLDEN_PATH_PASSACTUAL_SOURCE_GOLDEN_PATH_PASSr!  )r  r   r   r  r   package_authorityobserver_receipt_counttask26_contract)absoluter   rW  rc   r   rk   r   r  r\   sysrV   insertr+  r[   r[  checkin_cli.customer_cleanuprh  r   r5   rb   r7   r;   r<   r9   rf  r"  rR   rS   rN   rU   )r   source_candidater   rT  	input_docr   r-   authority_rootsource_textrk  r   rO  r  rh  r5   rj  r  rq  r  r  s                       rM   verifyrz    s   ==?DDD!''//1RSS06f'? ?ATUO$!44nEI==:L{"$?o$V!	>		!$4f>	&kchh&HHOOA{+9::tY/H}}^,H}}'(I5ZRU=V:;;'h7IwM/h?H5h? $ !!""""!!	
$ ! KLL$6G !4Hi@F,	&'O 	V$-. / =+ !  		  5AK4O0UuFlPYis  @C  DJ  @K  be  ft  bu  QY  Zi  Qj  N  d  RY  d  ]c  d  drO   c                     t        d      )Nz&declaration, not a production artifact)rc   )_args_kwargss     rM   verify_enveloper~    s    
=
>>rO   c                    j                  d      }| dk(  r=j                  d      dk7  st        |t              rt        |      dk7  rt	        d      | dk(  r t        fdd	D              rt	        d
      y y )Nr  r!   r   r  r   z5sent audit is not bound to exactly one transport callr%   c              3  x   K   | ]1  }t        j                  d       d      j                  |      dk7   3 yw)r7  zcleanup inventoryr   N)re   r   )r^   r(   r   s     rM   r_   z'verify_phase_payload.<locals>.<genexpr>  sC       +q  xpps3w{{;/GI\+]+a+abe+fjk+k  xps   7:)pendingr  orphanresidual_authoritieszcleanup inventory is not empty)r   r[   r   r   rc   rb   )r1  r   callss    ` rM   verify_phase_payloadr    s    KK)*EG.%&u:?PQQ""s  +q  xp  +q  (q9:: (q"rO   c            	        t        j                         } | j                  dt               | j	                         }	 t        t        j                  t        |j                        dd             y# t        t        t        j                  f$ rF}t        t        j                  dt        |      dd      t        j                  	       Y d }~y
d }~ww xY w)Nbundle)rs   TrB   )rF   rG   SOURCE_GOLDEN_PATH_FAIL)r  reason)rF   )filer   r   )argparseArgumentParseradd_argumentr   
parse_argsprintrI   rJ   rz  r  r  rc   JSONDecodeErrorr\   rs  stderr)parserargsry  s      rM   mainr    s    $$&F
t,Ddjj,TU  Z!5!56 djj$=SR^bcjmjtjtus   4A2 2C<CC__main__)rL   objectr@   ry   returnbytes)rV   r   r  r\   )rL   r  rd   r\   r  dict[str, Any])rV   r   rd   r\   r  r  )r5   r  r  dict[str, object])rV   r   rd   r\   r  list[dict[str, Any]])rV   r   r   ry   r   ry   r  None)rV   r   r   r\   r  r\   )r   r   r  tuple[str, Path])r   r   r   r  r  r  )r   r   r-   r\   r  r  )r   r   r   r\   r  z&tuple[dict[str, Path], dict[str, Any]])rO  dict[str, Path]r^  r\   r  r   )rV   r   r   r\   r  ztuple[str, str])
r  r  r   r\   r  r\   rv  r\   r  r  )rV   r   r   r\   r  r  )
r   r   r-   z
str | Noner  Mapping[str, object] | Noner  r  r  r  )
r   r   rO  r  r   r\   r-   r\   r  r  )r   r   r  r  )r|  r  r}  r  r  z(tuple[dict[str, object], dict[str, str]])r1  r\   r   r  r  r  )r  rt   )A__doc__
__future__r   r  rR   r  importlib.utilrI   r   r   rs  collections.abcr   datetimer   pathlibr   typingr   r   r  spec_from_file_locationr   	with_name_PROVENANCE_SPECloaderRuntimeErrormodule_from_spec_PROVENANCE_MODULEexec_moduler  r	  r   r   r  r  PHASESr#  	frozensetr   r   rN   rW   re   rk   r   r   r   r   r   r  r+  r[  r`  r  r  r  r"  rf  rz  r~  r  r  __name__
SystemExitr{   rO   rM   <module>r     sK   H "      	  
 #   >>990N<=  /66>
C
DD^^445EF     # #$6 7.HH +BB &88 RS"
 $   & " 49 w9'D8vl .35 	F62DE/
E/#1E/E/P>6[|>*B  	
 B)^ !*.+/li
li li (	li
 )li li^c[L2dj?	;	 z
TV
 rO   