ó
    rÏ™js”  ã                  ó6  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKJr  SSKJrJr   " S S\5      rS.S jrSS	.S/S
 jjrS0S jrSS.S1S jjrSS.S2S jjrSS.S3S jjrSS.S4S jjrSSS.S5S jjrS6S jrS7S jrS8S jrS9S jrS:S jr S;S jr!S<S jr"S=S jr#S>S jr$S?S jr%S@S jr&SAS  jr'SS!SS".           SBS# jjr(SS$.SCS% jjr)SDS& jr*SES' jr+SFS( jr,SGS) jr-SHS* jr.SIS+ jr/SJSKS, jjr0\1S-:X  a  \2" \0" 5       5      eg)La/  Seal, verify, diff, and compact BBI PStack evidence envelopes.

Collectors remain domain-owned. This module enforces a shared evidence boundary:
identity, freshness, observation-universe completeness, typed surfaces, explicit
facts/hypotheses/unknowns, canonical digests, and one next legal transition.
é    )ÚannotationsN)ÚPath)ÚAnyÚIterablec                  ó   • \ rS rSrSrSrg)ÚContractErroré   z!A fail-closed contract violation.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r
   ó    Ú>/mnt/data/pstack-tranche/scripts/ops/pstack/pstack_evidence.pyr   r      s   † Ü+r   r   c                óN   • 0 nU  H  u  p#X!;   a  [        SU 35      eX1U'   M     U$ )Nzduplicate_json_key:©r   )ÚpairsÚresultÚkeyÚvalues       r   Ú_no_duplicate_objectr      s9   € Ø€FÛ‰
ˆØ‹=ÜÐ"5°c°UÐ ;Ó<Ð<Øˆs‹ñ ð €Mr   ©Ú	max_bytesc               óÊ  •  U R                  5       nU(       d  [        SU  35      eUb)  [        U5      U:”  a  [        S[        U5       SU 35      e [        R
                  " U[        S9n[        U[        5      (       d  [        SU  35      eXB4$ ! [         a  n[        SU  35      UeS nAff = f! [        R                  [        4 a  n[        SU  35      UeS nAff = f)Nzunreadable_json:zempty_json:zjson_size_exceeded:Ú>)Úobject_pairs_hookzinvalid_json:zjson_root_not_object:)Ú
read_bytesÚOSErrorr   ÚlenÚjsonÚloadsr   ÚJSONDecodeErrorÚUnicodeDecodeErrorÚ
isinstanceÚdict)Úpathr   ÚrawÚexcr   s        r   Ú
_load_jsonr+   %   só   € ð@Ø�o‰oÓˆö Ü˜k¨$¨Ð0Ó1Ð1ØÑ¤ S£¨IÓ!5ÜÐ1´#°c³(°¸1¸Y¸KÐHÓIÐIð=Ü—
’
˜3Ô2FÑGˆô �eœT×"Ñ"ÜÐ3°D°6Ð:Ó;Ð;Øˆ:Ðøô ó @ÜÐ.¨t¨fÐ5Ó6¸CÐ?ûð@ûô × Ñ Ô"4Ð5ó =Ü˜m¨D¨6Ð2Ó3¸Ð<ûð=ús/   ‚B ÁB4 Â
B1ÂB,Â,B1Â4C"ÃCÃC"c           
     óÔ   • [        U [        5      (       d  [        U S35      e[        U5      n[        U 5      nXC:w  a)  [        U S[	        X4-
  5       S[	        XC-
  5       35      eU $ )Nz:not_objectz:shape:missing=z:extra=)r&   r'   r   ÚsetÚsorted)r   ÚexpectedÚfieldÚexpected_setÚactuals        r   Ú_exact_keysr3   7   st   € Ü�eœT×"Ñ"Ü˜u˜g [Ð1Ó2Ð2Ü�x“=€LÜ�‹Z€FØÓÜØˆg�_¤V¨LÑ,AÓ%BÐ$CÀ7Ì6ÐRXÑRgÓKhÐJiÐjó
ð 	
ð €Lr   ©Ú	max_itemsc               ó¨   • [        U [        5      (       d  [        U S35      eUb+  [        U 5      U:”  a  [        U S[        U 5       SU 35      eU $ )Nz	:not_listz
:too_many:r   )r&   Úlistr   r!   )r   r0   r5   s      r   Ú_listr8   C   sW   € Ü�eœT×"Ñ"Ü˜u˜g YÐ/Ó0Ð0ØÑ¤ U£¨iÓ!7Ü˜u˜g Z´°E³
¨|¸1¸Y¸KÐHÓIÐIØ€Lr   i   ©Ú	max_charsc               ó    • [        U [        5      (       a*  U R                  5       (       a  [        U 5      U:”  d  SU ;   a  [	        U S35      eU $ )NÚ ú:invalid_string)r&   ÚstrÚstripr!   r   ©r   r0   r:   s      r   Ú_stringrA   K   sD   € ä�uœc×"Ñ"Ø�{‰{�}‰}Üˆu‹:˜	Ó!Ø�U‹?ä˜u˜g _Ð5Ó6Ð6Ø€Lr   c               ó   • U c  g [        XUS9$ )Nr9   )rA   r@   s      r   Ú_optional_stringrC   V   s   € Ø�}ØÜ�5¨9Ñ5Ð5r   c               óÂ   • [        XUS9n[        S U 5       5      (       a  [        U S35      e[        U5      [        [	        U5      5      :w  a  [        U S35      eU$ )Nr4   c              3  óœ   #   • U  HB  n[        U[        5      (       + =(       d!    UR                  5       (       + =(       d    S U;   v •  MD     g7f)r<   N)r&   r>   r?   )Ú.0Úrows     r   Ú	<genexpr>Ú"_unique_strings.<locals>.<genexpr>^   s5   é € Ð
XÒSWÈCŒz˜#œsÓ#Ô#×G¨3¯9©9«;¤×G¸&ÀC¹-ÔGÒSWùs   ‚A
Ar=   z:duplicates)r8   Úanyr   r!   r-   )r   r0   r5   Úrowss       r   Ú_unique_stringsrL   \   s]   € Ü�¨Ñ3€DÜ
Ñ
XÑSWÓ
X×XÑXÜ˜u˜g _Ð5Ó6Ð6Ü
ˆ4ƒy”Cœ˜D›	“NÓ"Ü˜u˜g [Ð1Ó2Ð2Ø€Kr   ©ÚminimumÚmaximumc               ó¶   • [        U [        5      (       d  [        U [        5      (       a  X:  a  [        U S35      eUb  X:”  a  [        U SU  SU 35      eU $ )Nz:invalid_intz:too_large:r   )r&   ÚboolÚintr   )r   r0   rN   rO   s       r   Ú_intrS   e   s\   € Ü�%œ×Ñ¤j°¼×&<Ñ&<ÀÃÜ˜u˜g \Ð2Ó3Ð3ØÑ˜u›Ü˜u˜g [°°°q¸¸	ÐBÓCÐCØ€Lr   c               ó  • [        U [        5      (       d  [        U [        [        45      (       d  [	        U S35      e[        U 5      n[
        R                  " U5      (       a  X$s=::  a  U::  d  O  [	        U S35      eU$ )Nz:not_numberz:out_of_range)r&   rQ   rR   Úfloatr   ÚmathÚisfinite)r   r0   rN   rO   Únumbers        r   Ú_numberrY   m   sj   € Ü�%œ×Ñ¤j°¼¼e¸×&EÑ&EÜ˜u˜g [Ð1Ó2Ð2Ü�5‹\€FÜ�=Š=˜× Ñ ¨Õ(D¸WÕ(DÜ˜u˜g ]Ð3Ó4Ð4Ø€Mr   c                óL   • [        U [        5      (       d  [        U S35      eU $ )Nz	:not_bool)r&   rQ   r   )r   r0   s     r   Ú_boolr[   v   s&   € Ü�eœT×"Ñ"Ü˜u˜g YÐ/Ó0Ð0Ø€Lr   c                óD   • [        XSS9nX1;  a  [        U SU 35      eU$ )Né€   r9   z:unsupported:)rA   r   )r   Úallowedr0   Ú	candidates       r   Ú_one_ofr`   |   s0   € Ü˜°Ñ4€IØÓÜ˜u˜g ]°9°+Ð>Ó?Ð?ØÐr   c                óˆ   • [        XUS9n[        U5      U:w  d  [        R                  " SU5      c  [	        U SU 35      eU$ )Nr9   z	[0-9a-f]+z:invalid_hex)rA   r!   ÚreÚ	fullmatchr   )r   Úlengthr0   r_   s       r   Ú_hexre   ƒ   sF   € Ü˜°Ñ7€IÜ
ˆ9ƒ~˜Ó¤2§<¢<°¸iÓ#HÑ#PÜ˜u˜g \°&°Ð:Ó;Ð;ØÐr   c                óv  • [        XSS9nUR                  S5      (       d  [        U S35      e [        R                  R                  US S S-   5      nUR                  b(  UR                  5       [        R                  " S5      :w  a  [        U S	35      eU$ ! [         a  n[        U S35      UeS nAff = f)
Né@   r9   ÚZz:must_be_utc_zéÿÿÿÿz+00:00z:invalid_timestampr   z:must_be_utc)
rA   Úendswithr   ÚdtÚdatetimeÚfromisoformatÚ
ValueErrorÚtzinfoÚ	utcoffsetÚ	timedelta)r   r0   r_   Úparsedr*   s        r   Ú_timers   Š   sº   € Ü˜°Ñ3€IØ×Ñ˜c×"Ñ"Ü˜u˜g ^Ð4Ó5Ð5ðCÜ—‘×*Ñ*¨9°S°b¨>¸HÑ+DÓEˆð ‡}�}Ñ × 0Ñ 0Ó 2´b·l²lÀ1³oÓ EÜ˜u˜g \Ð2Ó3Ð3Ø€Møô	 ó CÜ˜u˜gÐ%7Ð8Ó9¸sÐBûðCús   °%B Â
B8Â$B3Â3B8c                óŽ   • U c7  [         R                  R                  [         R                  R                  5      $ [        U S5      $ )NÚnow)rk   rl   ru   ÚtimezoneÚutcrs   )r   s    r   Ú
_parse_nowrx   —   s-   € Ø/4©}Œ2�;‰;�?‰?œ2Ÿ;™;Ÿ?™?Ó+ÐUÄ%ÈÈuÓBUÐUr   c                ó´  • US:X  a  [        XSS9  g US:X  a  [        X5        g US:X  a  [        XSS9  g US:X  a  [        U S	U5        g US
:X  a  [        U SU5        g US:X  a1  [        XSS9n[        R                  " SU5      c  [        U S35      eg US:X  a2  [        XSS9n[        R                  " SU5       c  [        U S35      eg [        SU 35      e)NÚstringi   r9   rR   Úpositive_inté   ©rN   Úsha40é(   Úsha64rg   Ú
repositoryé   z[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+z:invalid_repositoryÚuuidzK[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}z:invalid_uuidzcontract:unknown_identity_type:)rA   rS   re   rb   rc   r   )r   Úkindr0   r_   s       r   Ú_validate_identity_valuer…   ›   s÷   € ØˆxÓÜ�¨Ó,Ø	�‹ÜˆUÕØ	�Ó	ÜˆU 1Ó%Ø	�‹ÜˆU�B˜ÕØ	�‹ÜˆU�B˜ÕØ	�Ó	Ü˜E°CÑ8ˆ	Ü�<Š<Ð:¸IÓFÑNÜ 5 'Ð)<Ð =Ó>Ð>ð Oà	�‹Ü˜E°BÑ7ˆ	Ü�<Š<ØZØó
ð ñô   5 '¨Ð 7Ó8Ð8ð	ô Ð=¸d¸VÐDÓEÐEr   c                óî   • [         R                  " U 5      nUR                  SS 5         [        R                  " USSSSS9nUR                  S5      $ ! [
        [        4 a  n[        S5      UeS nAff = f)NÚbundle_digestFT©Ú,Ú:)Úensure_asciiÚ	allow_nanÚ	sort_keysÚ
separatorszbundle:not_canonicalizableúutf-8)	ÚcopyÚdeepcopyÚpopr"   ÚdumpsÚ	TypeErrorrn   r   Úencode)ÚbundleÚpayloadÚtextr*   s       r   Ú_canonical_without_digestr™   µ   sy   € Ü�mŠm˜FÓ#€GØ‡K�K� Ô&ð	CÜ�zŠzØØØØØ!ñ
ˆð �;‰;�wÓÐøô ”zÐ"ó CÜÐ8Ó9¸sÐBûðCús   ªA ÁA4Á#A/Á/A4c                ó\   • [         R                  " [        U 5      5      R                  5       $ ©N)ÚhashlibÚsha256r™   Ú	hexdigest)r–   s    r   r‡   r‡   Å   s    € Ü�>Š>Ô3°FÓ;Ó<×FÑFÓHÐHr   c           
     óò  • [        U SS9u  p[        U1 SkS5        US   S:w  d	  US   S:w  a  [        S	5      e[        US
   SS1S5      n[        US   SSS9  [	        US   SSS9  [        US   1 SkS5      n[        US   SSS9  S H  n[	        XE   SU 3SS9  M     [        [        US   S5      5      nUS   n[        U[        5      (       a  [        U5      U:w  a  [        S5      e1 SknUR                  5        Hj  u  pš[        U
[        5      (       a  U
(       d  [        S U	 S!35      eU
R                  5        H&  u  p¼[        US"U	 S#3SS9  [        XÈS"U	 S$U 35        M(     Ml     S% H(  n[        XE   SU 35      (       a  M  [        SU S&35      e   US'   n[        U[        5      (       a  [        U5      U:w  a  [        S(5      eUR                  5        H  u  pž[	        US)U	 3SS9  M     U$ )*Ni   r   >   r„   ÚspecÚmetadataÚ
apiVersionÚcontractr¢   z
bbi.dev/v1r„   ÚPStackEvidenceContractzcontract:identityr¡   ÚnameÚversionzcontract.metadatazcontract.metadata.namer]   r9   zcontract.metadata.versionr|   r}   r    >   ÚschemaÚ	maxClaimsÚ
claimKindsÚclaimScopesÚclaimStatesÚmaxSurfacesÚmaxUnknownsÚclaimMethodsÚmaxTextCharsÚsubjectKindsÚunknownStatesÚmaxBundleBytesÚclaimPolaritiesÚsurfaceStatusesÚtransitionTypesÚrequiredIdentityÚcompletenessStatesÚsurfaceAuthoritiesÚmaxClockSkewSecondsÚmaxEvidenceAgeSecondsÚblockingSurfacePatternszcontract.specr§   zcontract.spec.schema)r²   r¬   r¨   r­   r¯   r¹   zcontract.spec.r°   zcontract.spec.subjectKindsr¶   z$contract.spec.requiredIdentity:shape>   rR   rƒ   r~   r€   rz   r�   r{   zcontract.spec.requiredIdentity.z:invalidzcontract.identity.z.fieldÚ.)r´   r¸   r»   r©   r«   r®   r³   rª   r·   r±   rµ   z:emptyrº   z)contract.spec.maxEvidenceAgeSeconds:shapez$contract.spec.maxEvidenceAgeSeconds.)r+   r3   r   rA   rS   r-   rL   r&   r'   Úitemsr`   )r(   r£   Ú_r¡   r    r   Úsubject_kindsÚidentity_contractÚvalid_identity_typesÚsubject_kindÚfieldsr¥   Ú	type_nameÚagesÚsecondss                  r   Úload_contractrÇ   É   s7  € Ü˜T¨WÑ5�K€HÜ�ÒDÀjÔQØ�Ñ Ó-°¸&Ñ1AÐE]Ó1]ÜÐ/Ó0Ð0Ü˜8 JÑ/°&¸)Ð1DÐFYÓZ€HÜˆH�VÑÐ6À#ÒFÜˆ�)Ñ	Ð9À1ÒEäØ�Ñò	
ð. 	ó3€Dô6 ˆD�‰NÐ2¸cÒBóˆô 	ˆT‰Y˜.¨¨Ð.¸Ô:ñô œ¨¨^Ñ(<Ð>ZÓ[Ó\€MØÐ/Ñ0ÐÜÐ'¬×.Ñ.´#Ð6GÓ2HÈMÓ2YÜÐBÓCÐCÚdÐØ 1× 7Ñ 7Ö 9ÑˆÜ˜&¤$×'Ñ'®vÜÐ"AÀ,ÀÈxÐ XÓYÐYØ%Ÿ|™|ž~‰OˆDÜ�DÐ.¨|¨n¸FÐCÈsÒSÜ�IÐ7IÈ,ÈÐWXÐY]ÐX^Ð5_Ö`ó  .ñ !:óˆô ˜t™y¨N¸3¸%Ð*@×AÓAÜ .°°°VÐ <Ó=Ð=ñð  Ð'Ñ(€DÜ�dœD×!Ñ!¤S¨£Y°-Ó%?ÜÐGÓHÐHØ!%§¡¦ÑˆÜˆWÐ<¸\¸NÐKÐUVÔWñ ".à€Or   c                ó.   ^ • [        U 4S jU 5       5      $ )Nc              3  óR   >#   • U  H  n[         R                  " TU5      v •  M     g 7fr›   )ÚfnmatchÚfnmatchcase)rF   ÚpatternÚsources     €r   rH   Ú$_matches_blocking.<locals>.<genexpr>  s!   øé € ÐLÂ8¸Œw×"Ò" 6¨7×3Ð3Â8ùs   ƒ$')rJ   )rÍ   Úpatternss   ` r   Ú_matches_blockingrÐ     s   ø€ ÜÔLÁ8ÓLÓLÐLr   c           	     ó�   • [         R                  " [        R                  " U SSSS9R	                  5       5      R                  5       $ )NTrˆ   F)r�   rŽ   rŒ   )rœ   r�   r"   r“   r•   rž   )Úselectors    r   Ú_selector_digestrÓ      s5   € Ü�>Š>Ü�
Š
�8 t¸
ÈeÑT×[Ñ[Ó]óç�iƒkðr   T)ru   Úrequire_digestÚraw_sizec               óÄ  ^@• US   nUb  XES   :”  a  [        SU SUS    35      e[        U 1 SkS5        U S   US   :w  a  [        S5      e[        U S	   S
SS9  [        U S   SSS9  [        U S   SS1S5      n[        US   [	        US   5      S5      nUS   U   n[        US   [	        U5      S5      n	UR                  5        H  u  p«[        Xš   USU
 35        M     [        U S   1 SkS5      n[        US   SSS9  [        US   SSS9  [        US    S!S"5        [        U S#   1 S$kS%5      n[        US&   S'5      n[        US(   S)5        [        US*   S+S,S-9  U=(       d7    [        R                  R                  [        R                  R                  5      nUR                  c'  UR!                  [        R                  R                  S.9nXï[        R"                  " US/   S09-   :”  a  [        S15      e[        R"                  " US2   U   S09nXþU-   :”  a  [        S35      e[        U S4   1 S5kS65      nUS7   n[%        U[&        5      (       a  U(       d  [        S85      e[        US9   SS:5        US9   [)        U5      :w  a  [        S;5      eUS<   b  [        US<   S=5        [        US>   S?5        [        US@   1 SAkSB5        [+        USC   SDUSE   SF9n[        U SG   [	        USH   5      SI5      n[        U SJ   1 SKkSL5      nSESMSNSO.R                  5        H  u  nn[        UU   SPU 3S,UU   SQ9  M     SR H  n[        UU   SPU 3S,US   SQ9  M     [-        U SS   STUSE   SF9n[/        U5      USU   :”  a  [        SV5      e0 m@[1        U5       GH†  u  nnSWU SX3n
[        U1 SYkU
5      n[        USZ   U
 S[3SS9nUT@;   a  [        S\U 35      e[        US]   U
 S^3S_S9n[        US`   [	        USa   5      U
 Sb35        [        USc   [	        USd   5      U
 Se35      n[        USf   U
 Sg35        US*   n U b  [        U U
 Sh3S,S-9  [3        UUSi   5      (       a  U c  [        U
 Sj35      e[5        USk   U
 Sl3SmS9  [        USn   SU
 So35        [        USp   U
 Sq35        [7        USr   U
 Ss35      n!USt:X  a  U!(       a  [        U
 Su35      eUSr:X  a  U!(       d  [        U
 Sv35      e[%        USw   [&        5      (       d  [        U
 Sx35      eUT@U'   GM‰     [9        [	        U5      [	        T@5      -
  5      n"U"(       a  [        SyU" 35      eUSz:X  a¦  US<   c  [        S{5      eUS<   US>   :w  a  [        S|5      eUS@   S};  a  [        S~5      eU(       d  [        S5      eT@R                  5        V#Vs/ s H  u  n#nUSc   St:w  d  USr   (       d  M  U#PM     n$n#nU$(       a  [        S€[9        U$5       35      e[-        U S�   S‚USM   SF9n%[/        U%5      USƒ   :”  a  [        S„5      e0 n&S…n'0 n([1        U%5       GH  u  nnS†U SX3n
[        U1 S‡kU
5      n)[        U)SZ   U
 S[3SS9n*U*U&;   a  [        SˆU* 35      e[        U)S   [	        US‰   5      U
 SŠ35      n+[        U)S‹   [	        USŒ   5      U
 S�35      n,[        U)SŽ   [	        US�   5      U
 S�35      n-[        U)S‘   [	        US’   5      U
 S“35      n.[        U)S”   [	        US•   5      U
 S–35      n/[        U)S—   U
 S˜3US™   S9  [+        U)Sš   U
 S›35      n0U0(       d  [        U
 Sœ35      e[9        [	        U05      [	        T@5      -
  5      n1U1(       a  [        U
 S�U1 35      e[+        U)Sž   U
 SŸ35      n2[9        [	        U25      [	        T@5      -
  5      n3U3(       a  [        U
 S U3 35      eU.S¡:X  a  U2(       d  [        U
 S¢35      eU+S£:X  aQ  U,S¤:w  a  [        U
 S¥35      eU)S¦   b  [        U
 S§35      eU-S¨;  a  [        U
 S©35      e[5        U)Sª   U
 S«3US™   S9  O>[;        U)S¦   U
 S¬3S­S®SQ9  [        U)Sª   U
 S«3US™   S9  U(R=                  U,S…5      S,-   U(U,'   [        U)S¯   U
 S°35      n4U4U::  a  [        U
 S±35      eU4UU-   :”  a  [        U
 S²35      eUU4:”  a  [        U
 S³35      e[+        U)S´   U
 Sµ35      n5U*U5;   a  [        U
 S¶35      eU/S·:X  aH  U'S,-  n'USz:w  a  [        U
 S¸35      e[9        U@4S¹ jU0U2-    5       5      n$U$(       a  [        U
 SºU$ 35      eU)U&U*'   GM     U&R                  5        HA  u  n*n)[9        [	        U)S´   5      [	        U&5      -
  5      n1U1(       d  M2  [        S»U* S¼U1 35      e   [-        U S½   S¾USN   SF9n6[/        U65      US¿   :”  a  [        SÀ5      e[	        5       n7S…n8[1        U65       GH·  u  nnSÁU SX3n
[        U1 SÂkU
5      n9[        U9SZ   U
 S[3SS9n:U:U7;   a  [        SÃU: 35      eU7R?                  U:5        [        U9S‹   [	        USÄ   5      U
 S�35      n,[        U9SÅ   U
 SÆ3US™   S9  [+        U9SÇ   U
 SÈ35        [        U9SÉ   U
 SÊ3S_S9  [+        U9SË   U
 SÌ35      n;[9        [	        U;5      [	        T@5      -
  5      n1U1(       a  [        U
 SÍU1 35      eU,SÎ:X  aŽ  U8S,-  n8[        U9SÏ   1 SÐkU
 SÑ35      n<[        U<SÒ   U
 SÓ3S_S9  [        U<SÔ   U
 SÕ3US™   S9  [        U<S*   U
 SÖ3S,S-9  [        U<S×   U
 SØ3US™   S9  [+        U<SÙ   U
 SÚ35        U;(       a  [        U
 SÛ35      eGM…  U9SÏ   b  [        U
 SÜ35      eU,SÝ:X  d  GM¢  U;(       a  GM¬  [        U
 SÞ35      e   [        U Sß   1 SàkSá5      n=[        U=Sâ   [	        USã   5      Sä5      n>[        U=SÉ   SåS_S9  [+        U=Sæ   Sç5      (       d  [        Sè5      e[        U=Sé   SêS_S9  [+        U=SÙ   Së5      (       d  [        Sì5      eU Sí   n?U(       a(  [        U?SSî5        U?[A        U 5      :w  a  [        Sï5      eOU?Sð;  a  [        U?SSî5        SñU S   U S	   U S   UUS&   U[/        U5      [/        U%5      U'['        [9        U(R                  5       5      5      U8U>U(       a  U?Sò.$ [A        U 5      Sò.$ s  snn#f )óNr    r²   zbundle:size:r   >   ÚclockÚboundsÚclaimsr§   ÚprogramÚsubjectÚsurfacesÚuniverseÚunknownsÚ	bundle_idÚ	collectorÚcompletenessr‡   Únext_transitionr–   r§   zbundle:schemarß   zbundle.bundle_idr]   r9   rÚ   zbundle.programrÛ   r„   Úidentityzbundle.subjectr°   zbundle.subject.kindr¶   zbundle.subject.identityzbundle.subject.identity.rà   >   r¥   Úgit_shar¦   zbundle.collectorr¥   zbundle.collector.namer¦   zbundle.collector.versionrg   rä   r   zbundle.collector.git_shar×   >   Údeadline_msÚobserved_atÚmonotonic_nszbundle.clockræ   zbundle.clock.observed_atrç   zbundle.clock.monotonic_nsrå   zbundle.clock.deadline_msr|   r}   )ro   r¹   )rÆ   zbundle.clock.observed_at:futurerº   zbundle.clock.observed_at:stalerÝ   >   rÒ   Úterminated_byÚexpected_countÚobserved_countÚselector_sha256Úcoverage_evidencezbundle.universerÒ   z bundle.universe.selector:invalidrë   zbundle.universe.selector_sha256z(bundle.universe.selector_sha256:mismatchré   zbundle.universe.expected_countrê   zbundle.universe.observed_countrè   >   ÚdeadlineÚ
self_errorÚnatural_endÚdeclared_capÚidentity_raceÚprovider_pagination_endzbundle.universe.terminated_byrì   z!bundle.universe.coverage_evidencer¬   r4   rá   r·   zbundle.completenessrØ   >   Ú	claim_capÚsurface_capÚunknown_capÚstderr_byte_capÚstdout_byte_capzbundle.boundsr¨   r­   )rô   ró   rõ   zbundle.bounds.rM   )r÷   rö   rÜ   zbundle.surfacesrô   z%bundle.surfaces:declared_cap_exceededzbundle.surfaces[Ú]>   ÚidÚbytesÚfactsÚdigestrÍ   ÚstatusÚartifactÚ	authorityÚ	truncatedrå   Úduration_msrù   ú.idzbundle.surfaces:duplicate_id:rÍ   z.sourcer‚   rÿ   r¸   z
.authorityrý   r´   ú.statusr  z.duration_msz.deadline_msr»   z*.deadline_ms:required_for_blocking_surfacerþ   z	.artifacté   rü   z.digestrú   z.bytesr   z
.truncatedÚokz:ok_cannot_be_truncatedz:truncated_status_requires_flagrû   z.facts:not_objectz-bundle.universe.coverage_evidence:unresolved:Úcompletez4bundle.completeness:complete_requires_expected_countz"bundle.completeness:count_mismatch>   rï   rò   z'bundle.completeness:invalid_terminationz.bundle.completeness:coverage_evidence_requiredz6bundle.completeness:complete_with_incomplete_surfaces:rÙ   zbundle.claimsró   z#bundle.claims:declared_cap_exceededr   zbundle.claims[>   rù   r„   ÚscopeÚstateÚmethodÚevidenceÚpolarityÚ	falsifierÚ	statementÚ
confidenceÚ
expires_atÚ
supersedesÚnegative_control_evidencezbundle.claims:duplicate_id:r©   z.kindr  r«   z.stater	  r®   z.methodr  r³   z	.polarityr  rª   z.scoper  z
.statementr¯   r
  z	.evidencez.evidence:emptyz.evidence:unresolved:r  z.negative_control_evidencez&.negative_control_evidence:unresolved:Úabsencez":absence_requires_negative_controlÚfactÚobservedz.state:fact_must_be_observedr  z.confidence:fact_must_be_null>   Údirect_observationÚderived_computationz".method:fact_not_direct_or_derivedr  z
.falsifierz.confidenceg        g      ð?r  z.expires_atz!.expires_at:not_after_observationz%.expires_at:exceeds_subject_freshnessz:expiredr  z.supersedesz.supersedes:selfÚ	universalz#:universal_requires_complete_bundlec              3  óD   >#   • U  H  nTU   S    S:w  d  M  Uv •  M     g7f)rý   r  Nr
   )rF   ÚsidÚsurface_by_ids     €r   rH   Ú"validate_bundle.<locals>.<genexpr>ú  s(   øé € ÐdÒ(; ¸}ÈSÑ?QÐRZÑ?[Ð_cÑ?cŸ™Ò(;ùs   ƒ —	 z:universal_uses_non_ok_surface:zbundle.claims.z.supersedes:unresolved:rÞ   zbundle.unknownsrõ   z%bundle.unknowns:declared_cap_exceededzbundle.unknowns[>   rù   ÚownerÚprober  ÚblocksÚquestionÚresolution_evidencezbundle.unknowns:duplicate_id:r±   r  z	.questionr  z.blocksr  z.ownerr   z.resolution_evidencez .resolution_evidence:unresolved:Úopenr  >   ÚactionÚadapterrå   Úabort_conditionsÚexpected_discriminatorz.prober#  z.probe.adapterr"  z.probe.actionz.probe.deadline_msr%  z.probe.expected_discriminatorr$  z.probe.abort_conditionsz:open_unknown_has_resolutionz":closed_unknown_probe_must_be_nullÚansweredz":answered_unknown_needs_resolutionrâ   >   Útyper  ÚpreconditionsÚsuccess_receiptr$  zbundle.next_transitionr'  rµ   zbundle.next_transition.typezbundle.next_transition.ownerr(  z$bundle.next_transition.preconditionsz*bundle.next_transition.preconditions:emptyr)  z&bundle.next_transition.success_receiptz'bundle.next_transition.abort_conditionsz-bundle.next_transition.abort_conditions:emptyr‡   zbundle.bundle_digestzbundle.bundle_digest:mismatch)Ú NÚPASS)Úverdictr§   rß   rÚ   rÂ   ræ   rá   rÜ   rÙ   Úuniversal_claimsÚhypothesis_statesÚopen_unknownsrâ   r‡   )!r   r3   rA   r`   r-   r½   r…   re   rs   rS   rk   rl   ru   rv   rw   ro   Úreplacerq   r&   r'   rÓ   rL   r8   r!   Ú	enumeraterÐ   rC   r[   r.   rY   ÚgetÚaddr‡   )Ar–   r£   ru   rÔ   rÕ   r    rÛ   rÂ   rÀ   rã   r0   rÄ   rà   r×   ræ   Úeffective_nowÚmax_agerÝ   rÒ   rì   rá   rØ   Ú
bundle_keyÚcontract_keyr   rÜ   ÚindexrG   ÚsurfaceÚ
surface_idrÍ   rý   rí   r   Úunresolved_coverager  ÚbadrÙ   Úclaim_by_idr-  Úhypothesis_countsÚclaimÚclaim_idr„   r  r	  r  r  r
  Ú
unresolvedÚcontrolsÚunresolved_controlsr  r  rÞ   Úunknown_idsr/  ÚunknownÚ
unknown_idÚ
resolutionr  Ú
transitionÚtransition_typeÚsupplied_digestr  sA                                                                   @r   Úvalidate_bundlerK  &  s  ø€ ð �FÑ€DØÑ Ð0@Ñ+AÓ AÜ˜l¨8¨*°A°dÐ;KÑ6LÐ5MÐNÓOÐOäØò	
ð  	ô%ð( ˆhÑ˜4 ™>Ó)Ü˜OÓ,Ð,ÜˆF�;ÑÐ!3¸sÒCÜˆF�9ÑÐ/¸3Ò?ä˜& Ñ+¨f°jÐ-AÐCSÓT€GÜ˜7 6™?¬C°°^Ñ0DÓ,EÐG\Ó]€LØÐ/Ñ0°Ñ>ÐÜ˜7 :Ñ.´Ð4EÓ0FÐHaÓb€HØ-×3Ñ3Ö5ÑˆÜ  ¡°)Ð?WÐX]ÐW^Ð=_Ö`ñ 6ô ˜F ;Ñ/Ò1OÐQcÓd€IÜˆI�fÑÐ6À#ÒFÜˆI�iÑ Ð"<ÈÒKÜˆ�9Ñ	˜rÐ#=Ô>ä˜˜w™Ò)WÐYgÓh€EÜ˜˜mÑ,Ð.HÓI€KÜˆˆ~Ñ	Ð ;Ô<Üˆˆ}Ñ	Ð9À1ÒEØ×;œ2Ÿ;™;Ÿ?™?¬2¯;©;¯?©?Ó;€MØ×ÑÑ#Ø%×-Ñ-´R·[±[·_±_Ð-ÐEˆØ¤R§\¢\¸$Ð?TÑ:UÑ%VÑVÓVÜÐ=Ó>Ð>Ü�lŠl 4Ð(?Ñ#@ÀÑ#NÑO€GØ WÑ,Ó,ÜÐ<Ó=Ð=äØˆzÑÚqØó€Hð
 ˜
Ñ#€HÜ�h¤×%Ñ%®XÜÐ>Ó?Ð?ÜˆÐ#Ñ	$ bÐ*KÔLØÐ!Ñ"Ô&6°xÓ&@Ó@ÜÐFÓGÐGØÐ Ñ!Ñ-ÜˆXÐ&Ñ'Ð)IÔJÜˆÐ"Ñ	#Ð%EÔFÜØ�Ñ!ÚmØ'ôô
 (ØÐ$Ñ%Ð'JÐVZÐ[hÑViñÐô ˜6 .Ñ1´3°tÐ<PÑ7QÓ3RÐTiÓj€LÜØˆxÑÚYØó€Fð %Ø Ø$ñ%÷ �eƒgò	%Ñ ˆ
�Lô
 	ˆV�JÑ >°*°Ð!>ÈÐSWÐXdÑSeÔfñ%ó 6ˆÜˆV�C‰[˜N¨3¨%Ð0¸!ÀTÐJZÑE[Ô\ñ 6ô �V˜JÑ'Ð):ÀdÈ=ÑFYÑZ€HÜ
ˆ8ƒ}�v˜mÑ,Ó,ÜÐCÓDÐDØ/1€MÜ ×)‰
ˆˆsØ" 5 '¨Ð+ˆÜØò GØó
ˆô
 ˜W T™]¨u¨g°S¨MÀSÑIˆ
Ø˜Ó&ÜÐ"?À
¸|Ð LÓMÐMÜ˜ Ñ*¨u¨g°WÐ,=ÈÑMˆÜ�˜Ñ$¤c¨$Ð/CÑ*DÓ&EÈ%ÈÐPZÐG[Ô\Ü˜ Ñ*¬C°Ð5FÑ0GÓ,HÈUÈGÐSZÐJ[Ó\ˆÜˆW�]Ñ#¨ w¨lÐ%;Ô<Ø˜=Ñ)ˆØÑÜ�˜e˜W LÐ1¸1Ò=Ü˜V TÐ*CÑ%D×EÑEÈ(ÑJZÜ 5 'Ð)SÐ TÓUÐUÜ˜ Ñ,°°°yÐ.AÈTÒRÜˆW�XÑ  u g¨WÐ$5Ô6ÜˆW�WÑ % ¨Ð/Ô0Ü˜' +Ñ.°5°'¸Ð0DÓEˆ	Ø�T‹>žiÜ 5 'Ð)@Ð AÓBÐBØ�[Ó ®Ü 5 'Ð)HÐ IÓJÐJÜ˜' 'Ñ*¬D×1Ñ1Ü 5 'Ð):Ð ;Ó<Ð<Ø$+ˆ�jÔ!ñ; *ô> !¤Ð%6Ó!7¼#¸mÓ:LÑ!LÓMÐÞÜÐKÐL_ÐK`ÐaÓbÐbà�zÓ!ØÐ$Ñ%Ñ-ÜÐ VÓWÐWØÐ$Ñ%¨Ð2BÑ)CÓCÜÐ DÓEÐEØ�OÑ$Ð,VÓVÜÐ IÓJÐJÞ ÜÐ PÓQÐQØ#0×#6Ñ#6Ô#8ÔfÒ#8‘x�s˜C¸CÀ¹MÈTÓ<QÐUXÐYdÕUe�sÑ#8ˆÑfÞÜÐ"XÔY_Ð`cÓYdÐXeÐ fÓgÐgä�6˜(Ñ# _ÀÀ[Ñ@QÑR€FÜ
ˆ6ƒ{�V˜KÑ(Ó(ÜÐAÓBÐBØ-/€KØÐØ(*ÐÜ ×'‰
ˆˆsØ    qÐ)ˆÜØò pØó
ˆô
 ˜5 ™;¨5¨'°¨ÀÑEˆØ�{Ó"ÜÐ"=¸h¸ZÐ HÓIÐIÜ�u˜V‘}¤c¨$¨|Ñ*<Ó&=À%ÀÈ¸ÓOˆÜ˜˜g™¬¨D°Ñ,?Ó(@ÀUÀGÈ6ÐBRÓSˆÜ˜˜x™¬#¨d°>Ñ.BÓ*CÈÀwÈgÐEVÓWˆÜ˜5 Ñ,¬c°$Ð7HÑ2IÓ.JÈuÈgÐU^ÐL_Ó`ˆÜ˜˜g™¬¨D°Ñ,?Ó(@ÀUÀGÈ6ÐBRÓSˆÜ��kÑ" u g¨ZÐ$8ÀDÈÑDXÒYÜ" 5¨Ñ#4¸¸¸yÐ6IÓJˆÞÜ 5 '¨Ð 9Ó:Ð:ÜœC ›M¬C°Ó,>Ñ>Ó?ˆ
ÞÜ 5 'Ð)>¸z¸lÐ KÓLÐLÜ" 5Ð)DÑ#EÈ%ÈÐPjÐGkÓlˆÜ$¤S¨£]´S¸Ó5GÑ%GÓHÐÞÜ 5 'Ð)OÐPcÐOdÐ eÓfÐfØ�yÓ ®Ü 5 'Ð)KÐ LÓMÐMØ�6‹>Ø˜
Ó"Ü# u gÐ-IÐ$JÓKÐKØ�\Ñ"Ñ.Ü# u gÐ-JÐ$KÓLÐLØÐJÓJÜ# u gÐ-OÐ$PÓQÐQÜ˜U ;Ñ/°E°7¸*Ð1EÐQUÐVdÑQeÓfä�E˜,Ñ'¨E¨7°+Ð)>ÈÐUXÒYÜ�E˜+Ñ&¨5¨'°Ð(<ÈÈ^ÑH\Ò]Ø'8×'<Ñ'<¸UÀAÓ'FÈÑ'JÐ˜eÑ$Ü˜5 Ñ.°5°'¸Ð0EÓFˆ
Ø˜Ó$Ü 5 'Ð)JÐ KÓLÐLØ˜ gÑ-Ó-Ü 5 'Ð)NÐ OÓPÐPØ˜:Ó%Ü 5 '¨Ð 2Ó3Ð3Ü$ U¨<Ñ%8¸U¸GÀ;Ð:OÓPˆ
Ø�zÓ!Ü 5 'Ð)9Ð :Ó;Ð;Ø�KÓØ Ñ!ÐØ˜zÓ)Ü# u gÐ-PÐ$QÓRÐRÜÔd¨°8Ò(;ÓdÓdˆCÞÜ# u gÐ-LÈSÈEÐ$RÓSÐSØ %ˆ�HÔñs (ðv '×,Ñ,Ö.‰ˆ�%ÜœC  lÑ 3Ó4´s¸;Ó7GÑGÓHˆ
ßˆ:Ü .°°
Ð:QÐR\ÐQ]Ð ^Ó_Ð_ñ /ô
 �V˜JÑ'Ð):ÀdÈ=ÑFYÑZ€HÜ
ˆ8ƒ}�v˜mÑ,Ó,ÜÐCÓDÐDÜ›E€KØ€MÜ ×)‰
ˆˆsØ" 5 '¨Ð+ˆÜØÚZØó
ˆô
 ˜W T™]¨u¨g°S¨MÀSÑIˆ
Ø˜Ó$ÜÐ"?À
¸|Ð LÓMÐMØ�‰˜
Ô#Ü˜ Ñ(¬#¨d°?Ñ.CÓ*DÈÈÈvÐFVÓWˆÜ�˜
Ñ#¨ w¨iÐ%8ÀDÈÑDXÒYÜ˜ Ñ)¨e¨W°GÐ+<Ô=Ü�˜Ñ  U G¨6Ð"2¸cÒBÜ$ WÐ-BÑ%CÈÀwÐNbÐEcÓdˆ
ÜœC 
›O¬c°-Ó.@Ñ@ÓAˆ
ÞÜ 5 'Ð)IÈ*ÈÐ VÓWÐWØ�F‹?Ø˜QÑˆMÜØ˜Ñ ÚbØ�'˜Ð óˆEô
 �E˜)Ñ$¨¨¨~Ð&>È#ÒNÜ�E˜(‘O¨ w¨mÐ%<ÈÈ^ÑH\Ò]Ü��}Ñ%¨%¨Ð0BÐ'CÈQÒOÜ�EÐ2Ñ3¸°wÐ>[Ð5\ÐhlÐm{Ñh|Ò}Ü˜EÐ"4Ñ5¸%¸Ð@WÐ7XÔYÞÜ# u gÐ-IÐ$JÓKÐKò ð �wÑÑ+Ü# u gÐ-OÐ$PÓQÐQØ˜
Ö"¯:©:Ü# u gÐ-OÐ$PÓQÐQñK *ôN ØÐ Ñ!ÚQØ ó€Jô
 ˜j¨Ñ0´#°dÐ;LÑ6MÓ2NÐPmÓn€OÜˆJ�wÑÐ!?È3ÒOÜ˜: oÑ6Ð8^×_Ñ_ÜÐHÓIÐIÜˆJÐ(Ñ)Ð+SÐ_bÒcÜ˜:Ð&8Ñ9Ð;d×eÑeÜÐKÓLÐLà˜_Ñ-€OÞÜˆ_˜bÐ"8Ô9Øœm¨FÓ3Ó3ÜÐ ?Ó@Ð@ð 4à	 
Ó	*Üˆ_˜bÐ"8Ô9ð Ø˜Ñ"Ø˜KÑ(Ø˜)Ñ$Ø$Ø˜]Ñ+Ø$Ü˜“MÜ�f“+Ø,Ü!¤&Ð):×)@Ñ)@Ó)BÓ"CÓDØ&Ø*Þ,:˜ñð ô ANÈfÓ@Uñð ùóW gs   Ö:s×s©ru   c               ó„   • [         R                  " U 5      nSUS'   [        X1USS9  [        U5      US'   [        X1USS9  U$ )Nr*  r‡   F)ru   rÔ   T)r�   r‘   rK  r‡   )r–   r£   ru   Úsealeds       r   Úseal_bundlerO  W  sF   € Ü�]Š]˜6Ó"€FØ €Fˆ?ÑÜ�F¨#¸eÒDÜ+¨FÓ3€Fˆ?ÑÜ�F¨#¸dÒCØ€Mr   c                óJ   • U  Vs0 s H  n[        X!   5      U_M     sn$ s  snf r›   )r>   )rK   r   rG   s      r   Ú_indexedrQ  `  s%   € Ù*.Ó/ª$ 3ŒC�‘‹M˜3Ò©$Ñ/Ð/ùÒ/s   … c                ó  ^ ^• T S   TS   :w  a  [        S5      eSUU 4S jjnST S   T S   T S   T S   S   S	.TS   TS   TS   S   S	.U" S
S5      U" SS5      U" SS5      T S   TS   :g  T S   TS   :g  T S   TS   :g  S.
$ )NrÛ   zdiff:subject_identity_changedc           	     ó  >^^• [        TU    U5      [        TU    U5      smm[        [        T5      [        T5      -
  5      [        [        T5      [        T5      -
  5      [        UU4S j[        T5      [        T5      -   5       5      S.$ )Nc              3  ó”   >#   • U  H=  n[         R                  " TU   S SS9[         R                  " TU   S SS9:w  d  M9  Uv •  M?     g7f)Trˆ   )r�   rŽ   N)r"   r“   )rF   ÚitemÚleftÚrights     €€r   rH   Ú0diff_bundles.<locals>.changes.<locals>.<genexpr>m  sH   øé € ð â2�DÜ—:’:˜d 4™j°DÀZÑPÜ—:’:˜e D™k°TÀjÑQñR÷ ‘Ú2ùs
   ƒ8A¿	A)ÚaddedÚremovedÚchanged)rQ  r.   r-   )Úsectionr   rV  rW  ÚafterÚbefores     @@€€r   ÚchangesÚdiff_bundles.<locals>.changesh  sz   ú€ Ü˜v g™°Ó4´h¸uÀW¹~ÈsÓ6SˆˆˆeäœC ›J¬¨T«Ñ2Ó3Üœc $›i¬#¨e«*Ñ4Ó5Üõ ä ›I¬¨E«
Ò2óó ñ	
ð 		
r   zbbi.process-truth-diff/v1rß   r‡   r×   ræ   )rß   rü   ræ   rÜ   rù   rÙ   rÞ   rÝ   râ   rá   )
r§   rÛ   r^  r]  rÜ   rÙ   rÞ   Úuniverse_changedÚtransition_changedÚcompleteness_changed)r\  r>   r   r>   Úreturnúdict[str, Any]r   )r^  r]  r_  s   `` r   Údiff_bundlesrf  d  sÞ   ù€ ØˆiÑ˜E )Ñ,Ó,ÜÐ;Ó<Ð<÷
ð 
ð .Ø˜)Ñ$à Ñ,Ø˜_Ñ-Ø! '™?¨=Ñ9ñ
ð ˜{Ñ+Ø˜OÑ,Ø  ™>¨-Ñ8ñ
ñ
 ˜J¨Ó-Ù˜( DÓ)Ù˜J¨Ó-Ø" :Ñ.°%¸
Ñ2CÑCØ$Ð%6Ñ7¸5ÐARÑ;SÑSØ & ~Ñ 6¸%ÀÑ:OÑ Oñ%ð r   c                ó¾  • SU S   U S   U S   U S   U S   S   U S   U S	   S
.U S    Vs/ s H!  nUS   S:X  d  M  US   US   US   US   S.PM#     snU S    Vs/ s H0  nUS   S;   d  M  US   S:X  d  M  US   US   US   US   US   S.PM2     snU S    Vs/ s H%  nUS   S:X  d  M  US   US   US   US   US   S.PM'     snU S   S .$ s  snf s  snf s  snf )!Nzbbi.agent-handoff/v1rÚ   rÛ   rß   r‡   r×   ræ   rá   rÝ   )rß   rü   ræ   rá   rÝ   rÙ   r„   r  rù   r  r
  r  )rù   r  r
  r  >   Ú	inferenceÚ
hypothesisr  r!  r  r  )rù   r  r  r  r  rÞ   r  r  r  r  )rù   r  r  r  r  râ   )r§   rÚ   rÛ   Úobservationrû   Úopen_hypothesesr/  râ   r
   )r–   rG   s     r   Úhandoff_viewrl  ‹  sŒ  € à(Ø˜)Ñ$Ø˜)Ñ$à Ñ,Ø˜_Ñ-Ø! '™?¨=Ñ9Ø" >Ñ2Ø˜zÑ*ñ
ð ˜hÒ'ó	
ò (�Ø�6‰{˜fÑ$óØ˜$‘iØ  Ñ-Ø 
™OØ! ,Ñ/ô	ñ (ñ	
ð$ ˜hÒ'ó

ò (�Ø�6‰{Ð9Ñ9óð ?BÀ'¹lÈfÑ>TóØ˜$‘iØ˜W™Ø  Ñ-Ø! ,Ñ/Ø  Ñ-ôñ (ñ

ð& ˜jÒ)ó

ò *�Ø�7‰|˜vÑ%óØ˜$‘iØ 
™OØ˜h™-Ø˜W™Ø˜W™ôñ *ñ

ð "Ð"3Ñ4ñW,ð ,ùò	
ùò

ùò

s(   ªC»CÁCÁ,CÁ7CÂCÂ,Cc                óŽ  ^^^^• [        U 1 SkS5        U S   S:w  a  [        S5      e[        U S   SSS	9  [        U S
   SSS	9  [        U S   SS1S5      n[        US   SSSS9  [	        US   S5        [        [	        U S   S5      5      n[        U S   S5      n0 m[        U5       GH=  u  pESU S3n[        U1 SkU5      n[        US   U S3SS	9nUT;   a  [        S U 35      e[        US!   U S"3S#S	9  [        US$   U S%3S&S'S9  [        US(   U S)3SS	9  [        US*   U S+3SS	9  [        US,   X& S-35        [	        US.   U S/35        [        US0   U S13SS	9  [	        US2   U S335      (       d  [        U S435      e[        US5   U S63SS	9  [        US7   U S83S#S	9  [	        US9   U S:35      (       d  [        U S;35      e[	        US<   U S=35        UTU'   GM@     TR                  5        H@  u  p‡[        [        US.   5      [        T5      -
  5      n	U	(       d  M1  [        S>U S?U	 35      e   [        5       m[        5       mSIUUUU4S@ jjmT H  nT" U5        M     1 SAkn
TR                  5        HK  u  p‡US,   SB;   d  M  US.    Vs/ s H  nTU   S,   U
;  d  M  UPM     nnU(       d  M<  [        S>U SCU 35      e   [        T5      n[        U5       H¦  u  pïTU   nXÞS-   S   H‘  nTU   nUS,   SB;  d	  US,   SB;  a  M  [        US2   5      [        US2   5      -  nUUS.   ;   =(       d    UUS.   ;   nUS0   US0   :H  nU(       d  Md  U(       a  Mm  U(       a  Mv  [        SDU SEU SE[        U5       35      e   M¨     SFU S   [        T5      [        SG TR                  5        5       5      SH.$ s  snf )JN>   Úwipr§   Útranchesrÿ   Ú	programmeÚstatus_vocabularyÚ	workgraphr§   zbbi.pstack-program-workgraph/v1zworkgraph:schemarp  zworkgraph.programmer]   r9   rÿ   zworkgraph.authorityr  rn  Úmutation_slotsÚclasseszworkgraph.wipzworkgraph.wip.mutation_slotsr|   é   rM   zworkgraph.wip.classesrq  zworkgraph.status_vocabularyro  zworkgraph.trancheszworkgraph.tranches[rø   >   rù   Útitlerý   ÚpriorityÚ	non_goalsÚ
owner_roleÚowned_pathsÚdependenciesÚmutation_classr)  r$  Úcoordination_keyÚfirst_legal_actionrù   r  rg   zworkgraph:duplicate_id:rv  z.titler‚   rw  z	.priorityr   é	   ry  z.owner_roler|  z.mutation_classrý   r  r{  z.dependenciesr}  z.coordination_keyrz  z.owned_pathsz.owned_paths:emptyr~  z.first_legal_actionr)  z.success_receiptr$  z.abort_conditionsz.abort_conditions:emptyrx  z
.non_goalsz
workgraph.z.dependencies:unknown:c                óÐ   >• U T;   a  g U T;   a  [        SU  35      eTR                  U 5        TU    S    H  nT" U5        M     TR                  U 5        TR                  U 5        g )Nzworkgraph:dependency_cycle:r{  )r   r3  Úremove)ÚtidÚ
dependencyÚby_idÚvisitÚvisitedÚvisitings     €€€€r   r…  Ú!validate_workgraph.<locals>.visité  sf   ø€ Ø�'‹>ØØ�(‹?ÜÐ"=¸c¸UÐ CÓDÐDØ�‰�SÔØ ™* ^Ô4ˆJÙ�*Öñ 5à�‰˜ÔØ�‰�CÕr   >   ÚCLOSEDÚMERGEDÚSOAKEDÚREALIZEDÚVERIFIEDÚ
SUPERSEDED>   ÚREADYÚACTIVEz%:ready_with_unsatisfied_dependencies:z,workgraph:uncoordinated_active_path_overlap:rŠ   r+  c              3  ó@   #   • U  H  u  pUS    S:X  d  M  Uv •  M     g7f)rý   r�  Nr
   )rF   r‚  Útranches      r   rH   Ú%validate_workgraph.<locals>.<genexpr>  s(   é € ð 
â -‘�Ø�xÑ  GÑ+÷ ‰CÚ -ùs   ‚•	)r,  rp  ro  Úfrontier)r‚  r>   rd  ÚNone)r3   r   rA   rS   rL   r-   r8   r1  r`   r½   r.   r7   r!   )Úgraphrn  Ústatusesro  r8  rG   r0   r’  r‚  ÚmissingÚterminalÚdepÚ
blocked_byÚidsÚ
left_indexÚleft_idrV  Úright_idrW  ÚoverlapÚ	sequencedÚcoordinatedr„  r…  r†  r‡  s                         @@@@r   Úvalidate_workgraphr£  »  s–  û€ Ü�ÒcÐepÔqØˆX�Ð;Ó;ÜÐ.Ó/Ð/ÜˆE�+ÑÐ 5ÀÒEÜˆE�+ÑÐ 5ÀÒFÜ
�e˜E‘lÐ%5°yÐ$AÀ?Ó
S€CÜˆÐÑ	Ð >ÈÐSTÒUÜ�C˜	‘NÐ$;Ô<Ü”? 5Ð)<Ñ#=Ð?\Ó]Ó^€HÜ�U˜:Ñ&Ð(<Ó=€HØ')€EÜ ×)‰
ˆØ% e W¨AÐ.ˆÜØò OØó
ˆô
 �g˜d‘m¨ w¨c ]¸bÑAˆØ�%‹<ÜÐ"9¸#¸Ð ?Ó@Ð@Ü�˜Ñ  U G¨6Ð"2¸cÒBÜˆW�ZÑ  U G¨9Ð"5¸qÈ!ÒLÜ�˜Ñ%¨%¨°Ð'<ÈÒLÜ�Ð(Ñ)¨e¨W°OÐ+DÐPSÒTÜ�˜Ñ! 8¨w°gÐ->Ô?Ü˜ Ñ/°E°7¸-Ð1HÔIÜ�Ð*Ñ+°¨wÐ6GÐ-HÐTWÒXÜ˜w }Ñ5¸%¸ÀÐ7M×NÑNÜ 5 'Ð);Ð <Ó=Ð=Ü�Ð,Ñ-°%°Ð8KÐ/LÐX\Ò]Ü�Ð)Ñ*¨u¨gÐ5EÐ,FÐRUÒVÜ˜wÐ'9Ñ:¸u¸gÐEVÐ<W×XÑXÜ 5 'Ð)@Ð AÓBÐBÜ˜ Ñ,°°°zÐ.BÔCØˆˆcŒ
ñ1 *ð4 Ÿ™ž‰ˆÜœ˜W ^Ñ4Ó5¼¸E»
ÑBÓCˆßˆ7Ü *¨S¨EÐ1GÈÀyÐ QÓRÐRñ &ô
 ›€HÜ›€G÷	ò 	ó ˆÙˆcŽ
ñ ò T€HØŸ™ž‰ˆØ�8ÑÐ 3Õ3Ø)0°Ò)@ÓiÒ)@ #ÀEÈ#ÁJÈxÑDXÐ`hÑDhŸ#Ñ)@ˆJÐißˆzÜ# j°°Ð5ZÐ[eÐZfÐ$gÓhÐhñ	 &ô ˆu‹+€CÜ(¨ž~Ñˆ
Ø�W‰~ˆØ¨™NÐ,Ó-ˆHØ˜(‘OˆEØ�H‰~Ð%8Ó8¸EÀ(¹OÐSfÓ<fÙÜ˜$˜}Ñ-Ó.´°U¸=Ñ5IÓ1JÑJˆGØ 5¨Ñ#8Ñ8×\¸HÈÈ^ÑH\Ñ<\ˆIØÐ1Ñ2°eÐ<NÑ6OÑOˆKßˆw§	 	¯[¨[Ü#Ð&RÐSZÐR[Ð[\Ð]eÐ\fÐfgÔhnÐovÓhwÐgxÐ$yÓzÐzó .ñ  .ð Ø˜;Ñ'Ü˜“JÜñ 
à %§¡¤ó
ó 
ñ		ð 	ùò# js   ÊOÊ-Oc                óÔ   • [         R                  " U SSSSS9S-   nUc   [        R                  R	                  U5        g UR
                  R                  SSS9  UR                  USS9  g )	Né   TF)Úindentr�   r‹   rŒ   Ú
)ÚparentsÚexist_okr�   )Úencoding)r"   r“   ÚsysÚstdoutÚwriteÚparentÚmkdirÚ
write_text)r   r(   r˜   s      r   Ú_write_jsonr±    s]   € Ü�:Š:�e A°ÀEÐUZÑ[Ð^bÑb€DØ�|Ü�
‰
×Ñ˜Õà�‰×Ñ $°ÐÑ6Ø�‰˜ wˆÒ/r   c                ó    • [        XS   S   S9$ )Nr    r²   r   )r+   )r(   r£   s     r   Ú_read_bundler³     s   € Ü�d¨vÑ&6Ð7GÑ&HÑIÐIr   c           
     ó  ^• [         R                  " [        S9nUR                  SSS9mS U4S jjnU" S5      nUR	                  SS[
        S9  U" S	5      nUR	                  S[
        S
9  U" S5      nUR	                  S[
        S
9  TR                  S5      nUR	                  SS[
        S9  UR	                  SS[
        S9  UR	                  SS[
        S9  UR	                  SSS9  UR	                  S[
        S
9  TR                  S5      nUR	                  SS[
        S9  UR	                  S[
        S
9  UR                  U 5      n UR                  S:X  a6  [        UR                  SS9u  pš[        [        U	5      UR                  5        g[        UR                  5      n[!        [#        USS 5      5      nUR                  S:X  a7  [%        UR                  U5      u  pÚ[        ['        XÛUS9UR                  5        gUR                  S	:X  aA  [%        UR                  U5      u  pÞ[        [)        XÛU[+        U5      S9UR                  5        gUR                  S:X  aL  [%        UR                  U5      u  pÞ[)        XÛU[+        U5      S9  [        [-        U5      UR                  5        gUR                  S:X  az  [%        UR.                  U5      u  nn[%        UR0                  U5      u  nn[)        XûU[+        U5      S9  [)        UX¼[+        U5      S9  [        [3        UU5      UR                  5        g! [4         aK  n[6        R8                  R;                  [<        R>                  " S[A        U5      S.SS9S-   5         S nAgS nAff = f)!N)ÚdescriptionÚcommandT)ÚdestÚrequiredc                óž   >• TR                  U 5      nUR                  SS[        S9  UR                  SS[        S9  UR                  SSS9  U$ )Nú
--contractT©r¸  r'  ú--inputú--nowú'deterministic UTC timestamp ending in Z©Úhelp)Ú
add_parserÚadd_argumentr   )r¥   rU  Úsubs     €r   ÚcommonÚmain.<locals>.common(  sT   ø€ Ø�~‰~˜dÓ#ˆØ×Ñ˜,°¼DÐÑAØ×Ñ˜)¨d¼ÐÑ>Ø×Ñ˜'Ð(QÐÑRØˆr   Úsealz--outputr»  Úverify)r'  ÚhandoffÚdiffrº  z--beforez--afterr½  r¾  r¿  zverify-workgraphr¼  i   r   r   ru   rL  )ru   rÕ   Ú
SELF_ERROR)r,  Úreason)r�   r§  r¥  )r¥   r>   rd  zargparse.ArgumentParser)!ÚargparseÚArgumentParserr   Úadd_subparsersrÂ  r   rÁ  Ú
parse_argsr¶  r+   Úinputr±  r£  ÚoutputrÇ   r£   rx   Úgetattrr³  rO  rK  r!   rl  r^  r]  rf  r   r«  Ústderrr­  r"   r“   r>   )ÚargvÚparserrÄ  rÆ  rÇ  rÈ  rÉ  r–  Úargsrr  r¾   r£   ru   r–   r)   r^  Ú
before_rawr]  Ú	after_rawr*   rÃ  s                       @r   ÚmainrÙ  $  s  ø€ Ü×$Ò$´Ñ9€FØ
×
Ñ
 Y¸Ð
Ð
>€C÷ñ �&‹>€DØ×Ñ�j¨4´dÐÑ;Ù�HÓ€FØ
×Ñ˜
¬ÐÑ.Ù�YÓ€GØ×Ñ˜¬$ÐÑ/à�>‰>˜&Ó!€DØ×Ñ�l¨T¼ÐÑ=Ø×Ñ�j¨4´dÐÑ;Ø×Ñ�i¨$´TÐÑ:Ø×Ñ�gÐ$MÐÑNØ×Ñ�j¤tÐÑ,à�N‰NÐ-Ó.€EØ	×Ñ�y¨4´dÐÑ;Ø	×Ñ�z¬ÐÑ-à×Ñ˜TÓ"€DðØ�<‰<Ð-Ó-Ü% d§j¡j¸IÑF‰LˆIÜÔ*¨9Ó5°t·{±{ÔCØä  §¡Ó/ˆÜœ  u¨dÓ3Ó4ˆØ�<‰<˜6Ó!Ü$ T§Z¡Z°Ó:‰IˆFÜœ F¸#Ñ>ÀÇÁÔLð" ð! �\‰\˜XÓ%Ü& t§z¡z°8Ó<‰KˆFÜœ¨¸cÌCÐPSËHÑUÐW[×WbÑWbÔcð ð �\‰\˜YÓ&Ü& t§z¡z°8Ó<‰KˆFÜ˜F°#ÄÀCÃÒIÜœ VÓ,¨d¯k©kÔ:ð ð �\‰\˜VÓ#Ü!-¨d¯k©k¸8Ó!DÑˆF�JÜ+¨D¯J©J¸ÓAÑˆE�9Ü˜F°#ÄÀJÃÒPÜ˜E 8¼sÀ9»~ÒNÜœ V¨UÓ3°T·[±[ÔAð øô ó Ü�
‰
×ÑœŸš°ÌÈCËÑ$QÐ]aÑbÐeiÑiÔjÜûðús6   ÅAL7 ÆA1L7 Ç?AL7 ÉAL7 Ê,B
L7 Ì7
NÍANÎNÚ__main__)r   zlist[tuple[str, Any]]rd  re  )r(   r   r   ú
int | Nonerd  útuple[dict[str, Any], bytes])r   r   r/   zIterable[str]r0   r>   rd  re  )r   r   r0   r>   r5   rÛ  rd  z	list[Any])r   r   r0   r>   r:   rR   rd  r>   )r   r   r0   r>   r:   rR   rd  ú
str | None)r   r   r0   r>   r5   rÛ  rd  ú	list[str])
r   r   r0   r>   rN   rR   rO   rÛ  rd  rR   )
r   r   r0   r>   rN   rU   rO   rU   rd  rU   )r   r   r0   r>   rd  rQ   )r   r   r^   zset[str]r0   r>   rd  r>   )r   r   rd   rR   r0   r>   rd  r>   )r   r   r0   r>   rd  údt.datetime)r   rÝ  rd  rß  )r   r   r„   r>   r0   r>   rd  r•  )r–   re  rd  rú   )r–   re  rd  r>   )r(   r   rd  re  )rÍ   r>   rÏ   rÞ  rd  rQ   )rÒ   re  rd  r>   )r–   re  r£   re  ru   údt.datetime | NonerÔ   rQ   rÕ   rÛ  rd  re  )r–   re  r£   re  ru   rà  rd  re  )rK   zlist[dict[str, Any]]r   r>   rd  zdict[str, dict[str, Any]])r^  re  r]  re  rd  re  )r–   re  rd  re  )r–  re  rd  re  )r   re  r(   zPath | Nonerd  r•  )r(   r   r£   re  rd  rÜ  r›   )rÔ  zlist[str] | Nonerd  rR   )3r   Ú
__future__r   rÌ  r�   rl   rk   rÊ   rœ   r"   rV   rb   r«  Úpathlibr   Útypingr   r   rn   r   r   r+   r3   r8   rA   rC   rL   rS   rY   r[   r`   re   rs   rx   r…   r™   r‡   rÇ   rÐ   rÓ   rK  rO  rQ  rf  rl  r£  r±  r³  rÙ  r   Ú
SystemExitr
   r   r   Ú<module>rå     sl  ðñõ #ã Û Û Û Û Û Û Û 	Û 
Ý ß  ô,�Jô ,ôð 7;÷ ô$	ð >B÷ ð 9=÷ ð BF÷ 6ð HL÷ ð 45ÈD÷ ôôôôô
ôVôFô4 ô IôPôfMôð #ØØñnØðnàðnð 
ð	nð
 ðnð ðnð õnðb	 `d÷ ô0ô$ôN-ô`Yôx0ôJö9ðx ˆzÓÙ
‘T“VÓ
Ðð r   