+
    4:j	                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHtHt ^ RIHtHt ^ RIHtHt ]! ]4      P1                  4       P2                  ^,          t]R,          R,          t]R,          R,          t]R,          R	,          R
,          t]R,          R,          R,          t0 Rmt0 Rmt 0 Rmt!RR0t"R^R^R^-/t#]$! ^^4       U u0 uF	  p RV R 2kK  	  up t% ! R R]&4      t'R R lt(R R lt)R R lt*RR R llt+R R  lt,R! R" lt-R#R$/R% R& llt.R' R( lt/R) R* lt0R+ R, lt1R- R. lt2R/ R0 lt3R1 R2 lt4R3 R4 lt5RR5 R6 llt6RR7 R8 llt7R9RR:R/R; R< llt8R= R> lt9R? R@ lt:RA RB lt;RC RD lt<RE RF lt=RG RH lt>RI RJ lt?RK RL lt@RM RN ltARO RP ltBRQ RR ltCRS RT ltDRU RV ltERW RX ltFRY RZ ltGR[ R\ ltHR] R^ ltIR_ R` ltJRa Rb ltKRc Rd ltLRe Rf ltMRg Rh ltNRi Rj ltORk Rl ltPRm Rn ltQRo Rp ltRRq Rr ltSRs Rt ltTRu Rv ltURw Rx ltVRy Rz ltWR{ R| ltXR} R~ ltYR R ltZR R lt[R R lt\R R lt]R R lt^R R lt_/ R]<bR]=bR]>bR]?bR]@bR]AbR]BbR]CbR]EbR]FbR]GbR]HbR]IbR]JbR]LbR]MbR]NbR]OR]PR]QR]_R]UR]RR]SR]TR]VR]ZR][R]\R]]R]^RR /Ct`R R ltaR R ltbR R ltcRR R lltdRR R llteRR$/R R lltfRR R lltgRR R llthR R ltiR R ltjRR R lltkRR R lltlR R ltm]nR8X  d    ]o! ]m! 4       4      hR# u up i   ]' d%   tp]q! R]p 2]
P                  R7       ]o! ^4      hRtpApii ; i)    )annotationsN)Counterdefaultdict)PathPurePosixPath)AnyIterablecizthemefactory-tests.jsonlpolicy.yamlschemasztheme-test.schema.json.github	workflowszthemefactory-verify.ymlstaticruntimelowmediumhighzTF-META-03dc                      ] tR t^ tRtR# )VerificationError N)__name__
__module____qualname____firstlineno____static_attributes__r       A/home/user/tmp/united-pets-verifier-portability/tools/theme_ci.pyr   r       s    r   r   c                    V ^8  d   QhRRRR/# )   messagestrreturnNoner   )formats   "r   __annotate__r&   $   s     % %# %$ %r   c                    \        V 4      hN)r   )r!   s   &r   failr)   $   s    
G
$$r   c                    V ^8  d   QhRRRR/# )r    pathr   r#   r   r   )r%   s   "r   r&   r&   (   s     Y Yt Y Yr   c                     \         P                  ! V P                  4       4      #   \         d   p\	        R T  24      ThRp?i\         P
                   d   p\	        T  RT 24      ThRp?ii ; i)zmissing file: Nz : invalid JSON-compatible YAML: )jsonloads	read_textFileNotFoundErrorr   JSONDecodeError)r+   excs   & r   load_jsonishr3   (   sn    Yzz$..*++ B. 78cA Y4&(H NOUXXYs&   #& A.A  A.A.A))A.c                    V ^8  d   QhRRRR/# )r    r+   r   r#   r"   r   )r%   s   "r   r&   r&   1   s      d s r   c                &  a \         P                  ! 4       pV P                  R 4      ;_uu_ 4       o\        V3R lR4       F  pVP	                  V4       K  	  RRR4       VP                  4       #   + '       g   i     TP                  4       # ; i)rbc                 &   < S P                  R4      # )i   i   )read)fs   r   <lambda>sha256_file.<locals>.<lambda>4   s    !&&"5r   r   N)hashlibsha256openiterupdate	hexdigest)r+   hchunkr9   s   &  @r   sha256_filerD   1   sd    A	4A5s;EHHUO < 
 ;;= 
 ;;=s   )A11B	c               $    V ^8  d   QhRRRRRR/# )r    rootr   ignorezIterable[str]r#   r"   r   )r%   s   "r   r&   r&   9   s!     	 	d 	M 	3 	r   c                J  a \         P                  ! 4       p\        V4      p\        R  V P	                  R4       4       R R7       F  pVP                  V 4      P                  4       o\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   Kd  VP                  SP                  4       R,           4       VP                  \         P                  ! VP                  4       4      P                  4       4       K  	  VP                  4       # )c              3  T   "   T F  qP                  4       '       g   K  Vx  K   	  R # 5ir(   )is_file.0ps   & r   	<genexpr>tree_digest.<locals>.<genexpr><   s     B?aiik?s   (
(*c                >    V P                  4       P                  4       # r(   as_posixcasefoldrM   s   &r   r:   tree_digest.<locals>.<lambda><   s    RSR\R\R^RgRgRir   keyc              3  R   <"   T F  p\         P                   ! SV4      x  K  	  R # 5ir(   )fnmatch)rL   patrels   & r   rN   rO   >   s     <GSwsC((Gs   $'TF    )r<   r=   tuplesortedrglobrelative_torS   anyr@   encode
read_bytesdigestrA   )rF   rG   rB   ignoredr+   r\   s   &&   @r   tree_digestrg   9   s    AFmGB4::c?BHijt$--/3<G<333<G<<<	%&	 1299;< k ;;=r   c                   V ^8  d   QhRR/# )r    r#   list[dict[str, Any]]r   )r%   s   "r   r&   r&   E   s      ) r   c                    . p  \         P                  4       P                  4       p\        T^4       Fj  w  r4TP                  4       '       g   K   \        P                  ! T4      p\        T\        4      '       g   \        RT R24       T P                  T4       Kl  	  T #   \         d   p\	        R \          24      ThRp?ii ; i  \        P                   d   p\	        RT RT 24      ThRp?ii ; i)zmissing ledger: Nzledger line : z: expected object)LEDGERr/   
splitlinesr0   r   	enumeratestripr-   r.   r1   
isinstancedictr)   append)rowslinesr2   nlinerows         r   load_ledgerrx   E   s    !#DF  "--/ UA&zz||	H**T"C #t$$<s"345C ' K  F"26( ;<#EF ## 	H#l1#Ru$=>CG	Hs/   "B" C"C-C  CC4C//C4c                    V ^8  d   QhRRRR/# )r    valuer"   r#   Path | Noner   )r%   s   "r   r&   r&   X   s      s { r   c                f    V '       g   R # V P                  R^4      ^ ,          p\        V,          pV# )N:)splitROOT)rz   	file_partr+   s   &  r   implementation_filer   X   s,    C#A&I)DKr   require_completeFc                    V ^8  d   QhRRRR/# r    r   boolr#   dict[str, Any]r   )r%   s   "r   r&   r&   `   s     T Td T~ Tr   c           	     l   \        4       pV Uu. uF  q"P                  R 4      NK  	  pp\        R \        V4      P	                  4        4       4      pV'       d   \        RV 24       . pV EFi  pR Uu. uF  qwV9  g   K  VNK  	  ppV'       d)   VP                  VP                  R R4       RV 24       KM  VR,          \        9  d%   VP                  VR ,           R	VR,           24       VR,          \        9  d%   VP                  VR ,           R
VR,           24       VR,          R8X  dZ   \        \        VR,          4      4      p	V	e   V	P                  4       '       g%   VP                  VR ,           RVR,           24       V '       g   EK+  VR,          '       g   EK=  VR,          R8w  g   EKN  VP                  VR ,           R24       EKl  	  V'       d"   \        RRP                  V4      ,           4       R\        V4      R\        \        R V 4       4      4      /# u upi u upi )idc              3  <   "   T F  w  rV^8  g   K  Vx  K  	  R# 5i)   Nr   )rL   kvs   &  r   rN   check_ledger.<locals>.<genexpr>c   s     D&:daa!e&:s   
zduplicate ledger IDs: runnerrequiredstatusimplementation?
: missing z: invalid status z: invalid runner completez': complete but implementation missing: z: required test is not completezledger invalid:

testsc              3  2   "   T F  qR ,          x  K  	  R# 5i)r   Nr   rL   rs   & r   rN   r   x   s     6QDq{{Ds   )r   titlephaser   r   blockingr   r   )rx   getr_   r   itemsr)   rr   VALID_STATUSESVALID_RUNNERSr   r"   existsjoinlenrq   )
r   rs   r   ids
duplicatesbadrw   r   missingimpls
   $         r   check_ledgerr   `   s   =D $
%155;C
%Dgcl&8&8&:DDJ%j\23
Ct  Ft  BE  yE11t  FJJ#''$s+,Jwi@Ax=.JJ#d)$5c(m_EFx=-JJ#d)$5c(m_EFx=J&&s3/?+@'ABD|4;;==

c$i[(OPSTdPeOfghJCMZ4OJJ#d)$CDE   499S>12SY$w6QD6Q/Q*RSS- & Fs   H,5H1H1c                   V ^8  d   QhRR/# )r    r#   	list[str]r   )r%   s   "r   r&   r&   {   s     s s sr   c                     \         R ,          p \        V P                  4        Uu. uFI  qP                  4       '       g   K  VP                  P                  R4      '       d   K=  VP                  NKK  	  up\        P                  R7      # u upi )themes.rW   )r   r_   iterdiris_dirname
startswithr"   rT   )baserM   s     r   discover_themesr   {   sW    (?D4<<>_>aXXZ6HYHYZ]H^6166>_eheqeqrr_s   BB$Bc                    V ^8  d   QhRRRR/# r    themer"   r#   r   r   )r%   s   "r   r&   r&      s     7 7 7 7r   c                8    \         R ,          V ,          R,          # )r   theme-test.yaml)r   )r   s   &r   contract_pathr      s    (?U"%666r   c               $    V ^8  d   QhRRRRRR/# r    r   r"   contractr   r#   r$   r   )r%   s   "r   r&   r&      s&     !o !oS !oN !ot !or   c                4   VP                  R 4      ^8w  d   \        V  R24       VP                  R4      \        9  d!   \        V  RVP                  R4      : 24       VP                  R4      \        9  d!   \        V  RVP                  R4      : 24       \	        VP                  R4      \
        4      '       g   \        V  R24       VP                  R4      p\	        V\
        4      '       d   R	V9  d   \        V  R
24       VP                  R	4      pVR8X  g%   \	        V\        4      '       g   \        V  R24       \	        V\        4      '       d   V'       g   \        V  R24       VP                  R4      pVP                  R4      R9   dd   V'       g   \        V  RVR,           R24       \        R,          \        V4      ,          pVP                  4       '       g   \        V  RV 24       VP                  R4      pVe_   \	        V\        4      '       d;   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        V  R24       VP                  R/ 4      P                  R4      '       d   VP                  R4      p\	        V\
        4      '       g   \        V  R24       VP                  R4      p\	        V\        4      '       d   VP                  4       '       g   \        V  R24       R# R# R# )schemaz: contract schema must be 1architecturez: invalid architecture workflowz: invalid workflow featuresz: features must be an objectr   routesz: runtime.routes is requiredautoz): runtime.routes must be 'auto' or a listz%: runtime.routes list cannot be empty	referencerk   z requires referencez: reference does not exist: 	viewportsNc              3  ~   "   T F3  p\        V\        4      ;'       d    ^Tu;8*  ;'       d    R8*  Mu x  K5  	  R# 5i)   i   N)rp   intrL   xs   & r   rN   $validate_contract.<locals>.<genexpr>   sC       MI  HyzZXY[^M_MtMtdgkldtdtptdtMt  Hs   ===FTz: invalid runtime.viewportsdemo_importz3: demo_import feature requires demo_import contractbutton_selectorzR: demo_import.button_selector is required to avoid ambiguous admin submit controls   mockup-to-themesource-preserving-conversion)r   r)   
VALID_ARCHVALID_WORKFLOWrp   rq   listr   r"   r   allro   )	r   r   r   r   r   refr   demoselectors	   &&       r   validate_contractr      s   ||H"w123||N#:5w-hll>.J-MNO||J~5w)(,,z*B)EFGhll:.55w234ll9%Ggt$$(?w234[["Ff
64 8 8w?@A&$w;<=[)I||J#VVE7"Xj122EFG[ 3y>1zz||E76se<=K(IjD&A&A  MI  H  MI  MI  H  MI  JI  JIw123||J#''66||M*$%%E7MNO88-.(C((0@0@E7lmn 1A 7r   c                    V ^8  d   QhRRRR/# )r    r   r"   r#   r   r   )r%   s   "r   r&   r&      s        r   c                    \        V 4      p\        V4      p\        V\        4      '       g   \	        V  R 24       \        W4       V# )z: contract must be object)r   r3   rp   rq   r)   r   )r   r+   rz   s   &  r   load_contractr      s@    DEeT""w/01e#Lr   c                   V ^8  d   QhRR/# r    r#   r   r   )r%   s   "r   r&   r&      s     < < <r   c                     \        4       p . pV  F  p\        V4       VP                  V4       K!  	  R VR\        V4      /# )r   count)r   r   rr   r   )r   
contractedr   s      r   check_contractsr      sD    FJe%   j'3z?;;r   c                    V ^8  d   QhRRRR/# )r    r   r   r#   set[str]r   )r%   s   "r   r&   r&      s      ^  r   c                   R \        V R,          4      \        V R,          4      0pV P                  R/ 4      P                  4        FA  w  r#V'       g   K  VP                  VP	                  RR4      4       VP                  V4       KC  	  V# )corer   r   r   _-)r"   r   r   addreplace)r   tokensr   enableds   &   r   profile_tokensr      sq    c(>23S*9M5NOF!j"5;;=7JJt||C-.JJt > Mr   c               (    V ^8  d   QhRRRRRRRR/# )r    rw   r   r   moder"   r#   r   r   )r%   s   "r   r&   r&      s(      N n C D r   c                  aa V P                  R 4      R8X  d
   VR8w  d   R# V P                  R 4      R8w  d!   VR8X  d   V P                  RR4      '       g    V P                  R4      ;'       g    . pV'       d   VR,          V9  d   R# V P                  R4      ;'       g    . pVP                  R/ 4      oV'       dC   \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       g   R# V P                  R	4      ;'       g    . pV'       dU   R
V9  dN   \        V4      o\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       g   R# R# )r   	scheduledFr   Tr   r   r   c              3     <"   T F@  p\        SP                  VSP                  VP                  R R4      R4      4      4      x  KB  	  R# 5i)r   r   FN)r   r   r   )rL   r9   	cfeaturess   & r   rN   applicable.<locals>.<genexpr>   s>     pgobcDq)--		#s@SUZ2[!\]]gos   AAprofilesr   c              3  f   <"   T F&  qS9   ;'       g    VP                  R R4      S9   x  K(  	  R# 5i)r   r   N)r   )rL   rM   r   s   & r   rN   r      s.     RA;??!))C"5"??s   11)r   r   r   rb   )rw   r   r   r   r   r   r   r   s   &&&   @@r   
applicabler      s   
www;&4;+>
www;&4;+>swwz[_G`G`$**IXj):wwz"((bHZ,Ipgoppgopppwwz"((bHF(*)sRRsssRRRRr   c               $    V ^8  d   QhRRRRRR/# )r    r   r"   r   r#   r   r   )r%   s   "r   r&   r&      s!       3 . r   c                   \        V 4      p\        4       pV Uu. uF  p\        WBV4      '       g   K  VNK  	  ppV Uu. uF  qDR ,          NK  	  pp\        V4      \        \	        V4      4      8w  d   \        V  R24       \        \        4      pV F(  pWxR,          ,          P                  VR ,          4       K*  	  R^RT RTRVR,          RVR,          R\        \        V4      4      R	TR
\        VP                  4       4       U	U
u/ uF  w  rWbK	  	  up
p	R\        V4      R\        \        R,          V ,          4      R\        \        V 4      4      R\        \         4      /pV# u upi u upi u up
p	i )r   z$: planner emitted duplicate test IDsr   r   r   r   r   r   r   r   phasesexpectedtreer   contract_sha256ledger_sha256)r   rx   r   r   setr)   r   r   rr   r_   r   r   rg   r   rD   r   rl   )r   r   r   rs   r   selectedr   r   rw   r   r   results   &&          r   planr     sJ   U#H=DA4a:a4#@4HA$
%HqT77HC
%
3x3s3x= w:;<#.t#4F7|##CI.  	!0HZ(F>(34F6<<>$:;$:DA14$:;CHD8Oe34;}U';<V,F M+ B
% <s   E)E)E.
E3$c               (    V ^8  d   QhRRRRRRRR/# )r    r   r"   r   
max_shardsz
int | Noner#   ri   r   )r%   s   "r   r&   r&      s)     " " "3 ": "Qe "r   c                d  aa \        W4      p\        4        Uu/ uF  qDR ,          VbK  	  upoVR,           Uu. uF3  pSV,          R,          R8X  g   K  SV,          R,          R9   g   K1  VNK5  	  pp\        \        4      pV F]  pSV,          p\	        VP                  R4      ;'       g    VP                  R4      ^,          4      p	Wy,          P                  V4       K_  	  . p
VP                  4        F6  w  r\        V3R lV 4       4      pV
P                  W\        V4      34       K8  	  V
P                  R R	7       V
'       g   . # Vf9   \        \        \        4      P                  R/ 4      P                  R
^4      4      p\        ^\!        V\#        V
4      4      4      p\%        V4       Uu. uF  pR^ R. R. /NK  	  upoV
 Fz  w  rp\!        \%        V4      V3R lR	7      pSV,          R;;,          V,          uu&   SV,          R,          P                  V	4       SV,          R,          P'                  V4       K|  	  . p\)        S4       FR  w  ppVR,          '       g   K  VP                  RRV^,           R 2RV RVR,          RVR,          RVR,          /4       KT  	  V UUu. uF  pVR,           F  pVNK  	  K  	  ppp\#        V4      \#        \+        V4      4      8w  g   \+        V4      \+        V4      8w  d   \-        V  R24       V# u upi u upi u upi u uppi )r   r   r   r   r   domainr   c           	   3     <"   T F;  p\         P                  \        SV,          P                  R R4      4      ^4      x  K=  	  R# 5i)costr   N)COST_WEIGHTr   r"   )rL   r   
rows_by_ids   & r   rN   build_shards.<locals>.<genexpr>   s8     aX`ST[__SA):):65)I%JANNX`s   AAc                (    V ^ ,          ) V ^,          3# )r   r   )r   s   &r   r:   build_shards.<locals>.<lambda>  s    !A$!r   rW   max_browser_shardsweightgroupsc                (   < SV ,          R ,          V 3# )r  r   )ibinss   &r   r:   r  	  s    $q'(2CQ1Gr   shard_ids02dr   z: invalid shard union>   releaser   r   )r  rx   r   r   r"   r   r~   rr   r   sumr_   sortr   r3   POLICYmaxminr   rangeextendrn   r   r)   )r   r   r  rM   r   tidruntime_idsr  rw   rX   weightedtest_idsr  r   r   targetr  r  entryshardr   claimedr  r
  s   &&&                   @@r   build_shardsr'     s   UA&1m4mD'1*m4J"#G*  \*3
30IY0V3[efi[jkr[s  x[  \[33*K  \#.t#4Fo#''(#88syy~a'893	 
 HaX`aafX&678 ( MM-M.	f-11)R@DDEY[\]^
3z3x=12E>CElKlXq(B4lKD!)XU5\'GHVX&(VX%%c*VW$$X.	 "*
 FdO5W~~zQqs3i='5(ERZO]dfklsftv~  AF  GO  AP  Q  	R $ %=fUeGnnqnqfG=
7|s3w<((CLC<L,Lw+,-MA 5 \" L >s"   LL"L"-L"8L'4L,cwdinput_bytesc               (    V ^8  d   QhRRRRRRRR/# )	r    cmdr   r(  r{   r)  zbytes | Noner#   z"subprocess.CompletedProcess[bytes]r   )r%   s   "r   r&   r&     s/     B BY B B BY{ Br   c          	         \         P                  ! Y;'       g    \        V\         P                  \         P                  R R7      # )F)r(  inputstdoutstderrcheck)
subprocessrunr   PIPESTDOUT)r+  r(  r)  s   &$$r   r2  r2    s5    >>#;;$k*//blbsbs  |A  B  Br   c                    V ^8  d   QhRRRR/# r   r   )r%   s   "r   r&   r&     s      c d r   c                v    \         R ,          V ,          pVP                  4       '       g   \        RV  24       V# )r   zunknown theme: )r   r   r)   )r   r+   s   & r   
theme_rootr7    s/    (?U"D;;==ug&'Kr   c               $    V ^8  d   QhRRRRRR/# )r    r   r   suffixzstr | tuple[str, ...]r#   z
list[Path]r   )r%   s   "r   r&   r&   #  s'     q qT q#8 qZ qr   c           
        \        V P                  R 4       Uu. uFV  q"P                  4       '       g   K  VP                  P	                  4       \        V\        4      '       d   V3MT9   g   KT  VNKX  	  upR R7      # u upi )rP   c                >    V P                  4       P                  4       # r(   rR   rU   s   &r   r:   iter_files.<locals>.<lambda>$  s3      YZ  Yc  Yc  Ye  Yn  Yn  Ypr   rW   )r_   r`   rJ   r9  lowerrp   r"   )r   r9  rM   s   && r   
iter_filesr>  #  sw    djjo  Io1AQcmntvyczczW]V_  AG  BH11o  I  Op  q  q  Is   A?5A?/A?c               $    V ^8  d   QhRRRRRR/# )r    	conditionr   r!   r"   r#   r$   r   )r%   s   "r   r&   r&   '  s!         r   c                0    V '       g   \        V4       R # R # r(   )r)   )r@  r!   s   &&r   	assertionrB  '  s    W r   c               $    V ^8  d   QhRRRRRR/# r    r   r"   r   r   r#   r$   r   )r%   s   "r   r&   r&   ,  s&     G G G GD Gr   c                x    \        V 4      pR F(  p\        W#,          P                  4       V  RV 24       K*  	  R# )	style.cssr   N)rF  	index.php)r7  rB  rJ   )r   r   r   r   s   &&  r   static_required_filesrH  ,  s6    eD*4;'')eWJtf+EF +r   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   2  s&      s ~ $ r   c           	         \        V 4      R ,          P                  RR7      R,          pR FC  p\        \        P                  ! R\        P
                  ! V4       R2V4      RJV  RV 24       KE  	  R# )	rF  r   errors:Ni    Nz	(?mi)^\s*z\s*:\s*\S.+$Nz: style.css missing )z
Theme NameVersionzRequires at leastzRequires PHP)r7  r/   rB  researchescape)r   r   textrX   s   &&  r   static_style_headerrR  2  sl    u+66i6HODM"))y3(8EtLTXX]b\ccwx{w|Z}~ Nr   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   8  s&     D DS D^ D Dr   c                   \        \        V 4      R 4       Fh  p\        RR\        V4      .4      p\	        VP
                  ^ 8H  V  RVP                  \        4       RVP                  P                  RR7       24       Kj  	  R# ).phpphp-lz: PHP syntax failed r   r   rK  N
r>  r7  r2  r"   rB  
returncodera   r   r.  decoder   r   r+   cps   &&  r   static_php_syntaxr]  8  s    :e,f5%s4y)*"--1$/CDDTDTUYDZC[[]^`^g^g^n^nv^n  _A  ^B  'C  	D 6r   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   >  s&     C CC CN Ct Cr   c                   \        \        V 4      R4       Fh  p\        RR\        V4      .4      p\	        VP
                  ^ 8H  V  RVP                  \        4       RVP                  P                  RR7       24       Kj  	  R# )	.jsnodez--checkz: JS syntax failed r   r   rK  N)r`  z.mjsz.cjsrX  r[  s   &&  r   static_js_syntaxrb  >  s    :e,.EF&)SY/0"--1$/B4CSCSTXCYBZZ\]_]f]f]m]mu~]m]  ]A  'B  	C Gr   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   D  s&     K Ks K~ K$ Kr   c           	        \        \        V 4      R 4       F(  p \        P                  ! VP	                  4       4       K*  	  R#   \        P
                   d2   p\        T  RTP                  \        4       RT 24        Rp?Ko  Rp?ii ; i).jsonz: invalid JSON rk   N)	r>  r7  r-   r.   r/   r1   r)   ra   r   )r   r   r+   r2   s   &&  r   static_jsonrf  D  ss    :e,g6	KJJt~~'( 7 ## 	KE7/$*:*:4*@)AC5IJJ	Ks   $AB
&BB
c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   L  s&     ` `S `^ ` `r   c                   \        V 4      R ,          p\        VP                  4       V  R24       \        V4      p\        \	        V\
        4      V  R24       \        VP                  R4      R9   V  RVP                  R4       24       R	 F1  pWC9   g   K  \        \	        W4,          \
        4      V  RV R24       K3  	  R# )
z
theme.jsonz: missing theme.jsonz : theme.json root must be objectversionz!: unsupported theme.json version z: theme.json z must be objectN>   r       )settingsstyles)r7  rB  rJ   r3   rp   rq   r   )r   r   r+   datarX   s   &&   r   static_theme_jsonrn  L  s    e|+Ddlln';<=Djt$/O&PQdhhy!V+w6WX\X`X`ajXkWl-mn%;jD1eWM#o3^_ &r   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   W  s!     	 	 	 	D 	r   c                   \        V 4      pVP                  R 4       Uu. uF  q3P                  4       '       g   K  VNK  	  pp\        4       pV F  p\	        V4      p\        V\        4      '       d   VP                  R4      MRp\        \        V\        4      ;'       d    RV9   V  RV 24       \        W9  V  RV 24       VP                  V4       K  	  R# u upi )z
block.jsonr   N/z&: block.json missing namespaced name: z: duplicate block name )r7  r`   rJ   r   r3   rp   rq   r   rB  r"   r   )	r   r   r   rM   block_jsonsnamesr+   rm  r   s	   &&       r   static_block_metadatart  W  s    eD"jj6F6))+116KFeED!#-dD#9#9txxt*T3'77C4KE7Bhimhn9op$#w.EdV%LM		$  Gs
   CCc               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   d  s&     h h3 h> hd hr   c                   \        V 4      P                  R 4       Uu. uF  q"P                  4       '       g   K  VNK  	  pp\        V'       * T  RV Uu. uF!  p\	        VP                  \        4      4      NK#  	  up 24       R# u upi u upi )rP   z: symlinks not allowed: N)r7  r`   
is_symlinkrB  r"   ra   r   )r   r   rM   linkss   &&  r   static_symlinksry  d  ss    "5)//4G41QQ4EG%iE7":^c;d^cYZCd@S<T^c;d:efg H;ds   BB'B
c                    V ^8  d   QhRRRR/# )r    r   r"   r#   r   )r%   s   "r   r&   r&   i  s        r   c                D   . p\        V 4      P                  R 4       F^  pVP                  4       '       g   K  VP                  P	                  4       R9   g   K<   VP                  VP                  RR7      4       K`  	  RP                  V4      #   \         d     K  i ; i)rP   r   rK  r   >   r`  .md.cssrU  .txt.htmlre  )	r7  r`   rJ   r9  r=  rr   r/   OSErrorr   )r   chunksrM   s   &  r   combined_textr  i  s    F$$S)99;;188>>+/ggakkk;< * 99V  s   !BBBc               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   t  s&     [ [# [. [T [r   c                    \        V 4      p. ROpV Uu. uF#  p\        P                  ! WB4      '       g   K!  VNK%  	  pp\        V'       * V  RV 24       R# u upi )1-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----z1: possible committed secret/private key markers: N)r  zgh[pousr]_[A-Za-z0-9]{20,}zsk-[A-Za-z0-9]{20,})r  rN  rO  rB  )r   r   rQ  patternsr[   hitss   &&    r   static_secretsr  t  sQ    D|H#<8Cryy';CC8D<$h5'!RSWRXYZ =s
   AAc               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   {  s&     Z Zc Zn Z Zr   c                    \        V 4      p. ROpV Uu. uF  qDV9   g   K  VNK  	  pp\        V'       * V  RV 24       R# u upi )/home/user/z0: shipped source contains local/buildbox paths: N)r  z
/home/oai/z
/mnt/data/debian1debian2debian3)r  rB  )r   r   rQ  	forbiddenr   r  s   &&    r   static_local_pathsr  {  sJ    D\I .y!IAAyD.$h5'!QRVQWXY /s
   AAc               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     G G G G4 Gr   c                   VP                  R 4      '       d   R# . p\        V 4      P                  R4       F  pVP                  \        V 4      4      P	                  4       P                  4       pVP                  4       '       g   KQ  RV9   g1   VP                  R4      '       g   VP                  R4      '       g   K  VP                  V4       K  	  \        V'       * V  RV 24       R# )allow_legacy_runtimeNrP   	phpmailerzsendmail.phpz
mailer.phpz: bundled legacy mail runtime: )
r   r7  r`   ra   rS   r=  rJ   endswithrr   rB  )r   r   r   rM   r\   s   &&   r   static_legacy_runtimer    s    ||*++
C$$S)mmJu-.779??A99;;K3.#,,~2N2NRUR^R^_kRlRlJJsO * #g% ?uEFr   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&     s&     t ts t~ t$ tr   c                   \        V 4      R ,          P                  RR7      p\        P                  ! RV4      p\	        \        P
                  ! R\        V 4      4      4      pV'       d]   \        VRJV  R24       V'       d    VP                  ^4      P                  4       MRp\        WE08*  V  R\        V4       R	V 24       R# R# )
rF  r   rK  z#(?mi)^\s*Text Domain\s*:\s*([^\s]+)zV(?:__|_e|esc_html__|esc_html_e|esc_attr__|esc_attr_e)\s*\([^,]+,\s*['\"]([^'\"]+)['\"]Nz8: translation calls exist but Text Domain header missing z: translation domains z do not match )r7  r/   rN  rO  r   findallr  rB  groupro   r_   )r   r   stylemdomainsdeclareds   &&    r   static_i18nr    s    ,77y7IE
		8%@A"**v  yF  GL  yM  N  OG!4-E7*b!cd)*1771:##%'Z'E72HPWHYYghpgq)rs r   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&     s&     O Os O~ O$ Or   c                n   . p\        \        V 4      R 4       F  pVP                  RR7      p\        P                  ! RV4      '       g    \        P                  ! RV4      '       g   KQ  VP                  VP                  \        4      P                  4       4       K  	  \        V'       * V  RV 24       R# )rU  r   rK  z\b(var_dump|print_r)\s*\(z	\bdd\s*\(z%: debug output calls in shipped PHP: N)
r>  r7  r/   rN  rO  rr   ra   r   rS   rB  )r   r   r  rM   rQ  s   &&   r   static_debug_outputr    s    	D
5)62[[	[*991488BIIlTX<Y<YKKd+4467 3 $h5'!FtfMNr   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     R Rc R^ R Rr   c                    VP                  R . 4      p\        \        V\        4      V  R24       V F<  p\        \        V\        4      V  R24       R F  p\        WC9   V  RV 24       K  	  K>  	  R# )pluginsz: plugins must be listz": plugin dependency must be objectz: plugin dependency missing N)slugri  r   purpose)r   rB  rp   r   rq   )r   r   r  pluginrX   s   &&   r   static_dependency_contractr    sp    ll9b)Gj$'E72H)IJ*VT*ug5W,XY=Ccmw.J3%%PQ > r   c                    V ^8  d   QhRRRR/# )r    r   r"   r#   r{   r   )r%   s   "r   r&   r&     s     1 13 1; 1r   c                    \        \        V 4      P                  R 4      4      \        \        V 4      P                  R4      4      ,           pV'       d
   V^ ,          # R# )z#*SOURCE*PRESERVATION*MANIFEST*.jsonz#verification/*source*manifest*.jsonN)r   r7  glob)r   
candidatess   & r   source_manifestr    s[    j',,-RSTW[\fgl\m\r\r  tY  ]Z  X[  [J&:a=0D0r   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     b b# b bD br   c                    \        V 4      p\        VR J;'       d    VP                  4       V  R24       \        V4      p\        \	        V\
        4      V  R24       \        VP                  R4      V  R24       R # )Nz&: source-preservation manifest missingz : source manifest must be objectr   z-: source conversion contract has no reference)r  rB  rJ   r3   rp   rq   r   )r   r   r+   rm  s   &&  r   static_source_manifestr    so    5!Dd$114<<>eW<b3cdDjt$/O&PQhll;'E72_)`ar   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     c c# c cD cr   c                X   VP                  R 4      pVR,          R9   dE   \        T;'       d,    \        R ,          \        V4      ,          P	                  4       V  R24       R# VR,          R8X  d9   \        V 4      R,          R,          p\        VP	                  4       V  R24       R# R# )	r   r   z$: visual authority reference missing	new-themeverificationvisual-baseline.jsonz2: new theme requires approved visual-baseline.jsonNr   )r   rB  r   r"   r   r7  )r   r   r   baselines   &&  r   static_visual_baseliner    s    [)I
RR)NN!3c)n!D L L NSXRYY}P~	*		,e$~58NN(//#w.`%ab 
-r   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&     s&     g gs g~ g$ gr   c                D   \        V 4      p\        \        P                  ! R V4      '       * V  R24       \        P                  ! RV4      '       dO   \        \        P                  ! RV4      RJV  R24       \        \        P                  ! RV4      RJV  R24       R# R# )z\beval\s*\(|\bassert\s*\(\s*\$_z: dangerous eval/assert patternzadmin_post_|wp_ajax_zcurrent_user_can|user_canNz6: admin/AJAX handler without capability check evidencez6check_admin_referer|check_ajax_referer|wp_verify_noncez1: admin/AJAX handler without nonce check evidence)r  rB  rN  rO  )r   r   rQ  s   && r   static_wp_security_patternsr    s    D"))>EE%PoGpq	yy($//"))8$?tKPUw  WM  NN  	O"))UW[\dhhmrls  te  kf  	g 0r   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     
h 
hC 
h> 
hd 
hr   c                   VP                  R / 4      pV'       g   R# \        V 4      p. pVP                  4        F6  w  rVV F+  p\        V4      V9  g   K  VP	                  V RV 24       K-  	  K8  	  \        V'       * V  RV 24       R# )editable_fieldsNr   z8: editable field identities absent from implementation: )r   r  r   r"   rr   rB  )r   r   r   rQ  r   	componentfieldsfields   &&      r   static_editable_coverager    s    ||-r2HDG%^^-	E5z%)AeW56  . 'keW$\]d\efgr   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     E ES EN Et Er   c                   VP                  R / 4      pVP                  R/ 4      P                  R4      '       d   \        \        V\        4      ;'       d    TV  R24       VP	                  4        FH  w  r4\        \        V\
        4      ;'       d    \        VP                  4       4      ^8  V  RV 24       KJ  	  R# R# )custom_block_justificationsr   custom_blocksz3: custom blocks require custom_block_justificationsz&: weak custom block justification for N)r   rB  rp   rq   r   r"   r   ro   )r   r   justr   reasons   &&   r   !static_custom_block_justificationr    s    <<5r:D||J#''88*T4(11TeW<o3pq JJLLDj-KK#flln2E2KPUwV|  ~B  }C  ND  E ) 9r   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     E EC E> Ed Er   c                  a VP                  R . 4      p\        \        V\        4      V  R24       V F  o\        \        S\        4      V  R24       \        SP                  R4      R
9  V  R24       \        \
        ;QJ d    V3R lR 4       F  '       d   K   RM	  RM! V3R lR 4       4      V  R24       K  	  R	# )source_deviationsz : source_deviations must be listz!: source deviation must be objectr   z0: wildcard/whole-page source deviation forbiddenc              3  F   <"   T F  pSP                  V4      x  K  	  R # 5ir(   r   )rL   r   items   & r   rN   +static_source_deviations.<locals>.<genexpr>  s     J+Iadhhqkk+Is   !FTz-: source deviation needs selector/reason/typeN>   rP   bodyhtml)r   r  type)r   rB  rp   r   rq   r   )r   r   
deviationsr  s   && @r   static_source_deviationsr    s    126JjT*ug5U,VW*T4(UG3T*UV$((:&.CCwN~E  	A##J+IJ###J+IJJug  VC  MD  	E r   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     ` `C `> `d `r   c                    \        V 4      p\        VR ,          P                  4       V  R24       VP                  R. 4       F(  p\        W#,          P	                  4       V  RV 24       K*  	  R# )rG  z$: classic fallback index.php missingclassic_templatesz%: declared classic template missing: N)r7  rB  r   r   rJ   )r   r   r   r   s   &&  r   static_classic_hierarchyr    se    	E	DtK'')eW4X+YZ0"549%%'E72WX\W])^_ 6r   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     X XS XN Xt Xr   c           	     
   \        VP                  R 4      R8H  V  R24       \        \        ;QJ d,    R VP                  R. 4       4       F  '       g   K   RM!	  RM! R VP                  R. 4       4       4      V  R24       R# )	r   	elementorz2: Elementor contract on non-Elementor architecturec              3  H   "   T F  qP                  R 4      R8H  x  K  	  R# 5i)r  r  Nr  rK   s   & r   rN   ,static_elementor_contract.<locals>.<genexpr>  s     T8S1%%-;.8Ss    "r  TFz6: Elementor architecture must declare elementor pluginN)rB  r   rb   r   r   s   &&r   static_elementor_contractr    st    hll>*k9eWDv;wxccTYPR8STcccTYPR8STTY^X_  `V  WW  Xr   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&     s&     R R R~ R$ Rr   c                    \        V 4      R ,          pVP                  4       '       g   R# \        VR4       F8  p\        RR\	        V4      .4      p\        VP                  ^ 8H  V  RV 24       K:  	  R# )woocommerceNrU  rV  rW  z: invalid WooCommerce override )r7  r   r>  r2  r"   rB  rY  )r   r   r   rM   r\  s   &&   r   static_woo_overridesr    sd    	E	=	(D;;==f%d3q6"#"--"ug-LQC$PQ &r   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&     s&     ` `S `^ ` `r   c           	     ,   \        V 4      pVR ,          P                  4       '       d"   \        VR ,          P                  R4      4      M. p\	        W0 R24       Y2R,          P                  4       '       d"   \        VR,          P                  R4      4      M. ,            Fp  pVP                  RR7      p\	        VP                  R4      VP                  R4      VP                  R4      ,           8*  V  R	VP                  \        4       24       Kr  	  R
# )	templatesz*.htmlz%: block-fse requires templates/*.htmlpartsr   rK  z<!-- wp:z	<!-- /wp:z /-->z$: likely unbalanced block markup in N)	r7  r   r   r  rB  r/   r   ra   r   )r   r   r   r  rM   rQ  s   &&    r   static_fse_markupr    s   	E	D:>{:J9R9R9T9TdD$**845Z\Ii7"GHIw,AVAVAXAX$W228<=^`aa[[	[*$**Z(DJJ{,CdjjQXFY,YY^c]d  eI  JK  JW  JW  X\  J]  I^  \_  	` br   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&     s&     	b 	b3 	b> 	bd 	br   c                   \        V 4      p\        R ,          R,          p\        P                  ! 4       ;_uu_ 4       p\	        V4      R,          qUP                  4        \        P                  ! W%V ,          4       \	        V4      R,          p\	        V4      R,          pWg3 Ft  p\        \        P                  \        V4      R\        V4      \        V4      .4      p	\        V	P                  ^ 8H  V  RV	P                  P                  RR7       24       Kv  	  \        \!        V4      \!        V4      8H  V  R	24       R
R
R
4       R
#   + '       g   i     R
# ; i)toolstheme_factory.py	containerza.zipzb.zippackz: deterministic pack failed: r   rK  z$: repeated pack is not deterministicN)r7  r   tempfileTemporaryDirectoryr   mkdirshutilcopytreer2  sys
executabler"   rB  rY  r.  rZ  rD   )
r   r   r   scripttdr  abdestr\  s
   &&        r   check_deterministic_zipr    s   	E	D<**F		$	$	&	&"r(;&	(96??4Z_P_;`
r(7
d2hw.AEDCNN3v;vc)nSYOPBbmmQ&5'1NryyO_O_gpO_OqNr(st  	+a.+a.0UG;_2`a 
'	&	&	&s   DE		E	c                    V ^8  d   QhRRRR/# )r    r+   r   r#   dict[str, str]r   )r%   s   "r   r&   r&     s      4 N r   c                   / p\         P                  ! V 4      ;_uu_ 4       pVP                  4        F  pVP                  4       '       d   K  \	        VP
                  4      P                  p\        V4      ^8  d   RP                  VR,          4      MV^ ,          p\        P                  ! VP                  V4      4      P                  4       W&   K  	  RRR4       V#   + '       g   i     T# ; i)r   rq  :r   NNN)zipfileZipFileinfolistr   r   filenamer  r   r   r<   r=   r8   rA   )r+   r  zinfor  r\   s   &     r   zip_treer    s    F			!JJLD{{}}h.44E'*5z!|r#qCqvvd|4>>@FK	 ! 
 M 
	 Ms   B5C  C1	c                   V ^8  d   QhRR/# )r    r#   r   r   )r%   s   "r   r&   r&     s     9 9( 9r   c                    \        \        R ,          R,          4      p \        V \        4      '       d   V P	                  R. 4      M. p\        \        V\        4      ;'       d5    \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      R4       V Uu0 uF  p\        V4      P                  4       kK  	  up# u upi )r
   r   non_shipping_theme_filesc              3     "   T F]  p\        V\        4      ;'       dA    T;'       d7    VP                  R 4      '       * ;'       d    R\        V4      P                  9  x  K_  	  R# 5i)rq  z..N)rp   r"   r   r   r  r   s   & r   rN   +non_shipping_theme_files.<locals>.<genexpr>  s       /Z  SY  NOz!S/A  0I  0Ia  0I  0IPQP\P\]`PaLa  0I  0Ifjr  AB  sC  sI  sI  gI  0I  SYs   A'	A'A'!A'FTz'invalid non_shipping_theme_files policy)
r3   r   rp   rq   r   rB  r   r   r   rS   )policyvaluesr   s      r   r
  r
    s    $+56F;Efd;S;SVZZ2B7Y[Fj&  Z  Z33  /Z  SY  /Z333  /Z  SY  /Z  ,Z  \E  F178AM!%%'888s   ""Cc                    V ^8  d   QhRRRR/# )r    r   r   r#   r  r   )r%   s   "r   r&   r&   "  s     
 
d 
} 
r   c                    \        4       p/ pV P                  R 4       FO  pVP                  4       '       g   K  VP                  V 4      P	                  4       pWA9   d   KB  \        V4      W$&   KQ  	  V# )rP   )r
  r`   rJ   ra   rS   rD   )r   excludedr  rM   r\   s   &    r   source_treer  "  s`    ')HFZZ_yy{{MM$((*?N  Mr   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   /  s&     X X# X. XT Xr   c                  aa \         R ,          V  R2,          p\        VP                  4       V  R24       \        V4      o\	        \        V 4      4      o\        SS8H  V  R\        \        S4      \        S4      ,
          4      R,           R\        \        S4      \        S4      ,
          4      R,           R\        VV3R l\        S4      \        S4      ,           4       4      R,           24       R# )	dist.zipz: dist ZIP missingz;: dist ZIP tree differs from canonical theme tree: missing=:N   Nz extra=z	 changed=c              3  V   <"   T F  pSV,          SV,          8w  g   K  Vx  K   	  R # 5ir(   r   )rL   r   r  r  s   & r   rN   )check_tree_equivalence.<locals>.<genexpr>3  sa       hP  tA  op  EF  GH  EI  KL  MN  KO  EO  ij  ij  tAs   )
)N)r   rB  rJ   r  r  r7  r_   r   )r   r   r  r  r  s   && @@r   check_tree_equivalencer  /  sF   	fwd^	#Ddlln'9:;tnAJu$56aadugXY_`cde`fgjklgm`mYnorYsXtt{  }C  DG  HI  DJ  KN  OP  KQ  DQ  }R  SV  }W  |X  Xa  bh  hP  tw  xy  tz  {~  @  {A  tA  hP  bP  QT  bU  aV  W  Xr   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&   6  s!     , ,c ,^ , ,r   c                    \        W4       R # r(   )r  r  s   &&r   check_dist_currentr  6  s
    5+r   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&   :  s&     B BC B> Bd Br   c                   \        V 4      R ,          p\        VP                  4       V  R24       VP                  4       R,          p\        VR,          R8H  ;'       d    \	        V4      ^8  V  R24       \
        P                  VR,          R4      p\
        P                  VR,          R4      pVP                  R	/ 4      P                  R
RR.4      p\        WE.V8H  V  RV RV RV^ ,           RV^,           2	4       R# )zscreenshot.pngz: screenshot.png missing:N   N:N   Ns   PNG

z: screenshot.png is not PNG:   r  Nbig:r  r   N
screenshot
dimensionsi  i  z: screenshot dimensions r   z, expected N)r7  rB  rJ   rd   r   r   
from_bytesr   )r   r   r+   rm  widthheightr   s   &&     r   check_screenshotr)  :  s    	E	+	+Ddlln'?@A		3	Dd2h,,>>TB5'Id@ef
..eU
+ECNN4;u4UV\\,+//tCjIHunh&5'1I%PQRXQYYdemnoepdqqrs{|}s~r  )A  Br   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   E  s&     L L L LD Lr   c                   a 0 Rmo. p\        V 4      P                  R4       F  pVP                  \        V 4      4      p\        ;QJ d)    V3R lVP                   4       F  '       g   K   RM	  RM! V3R lVP                   4       4      '       g,   VP                  4       '       g   K  VP                  R	9   g   K  VP                  VP                  4       4       K  	  \        V'       * V  RVR,           24       R# )
node_modulesrP   c              3  ,   <"   T F	  qS9   x  K  	  R # 5ir(   r   )rL   partr  s   & r   rN   (check_package_hygiene.<locals>.<genexpr>J  s     7YTy Ys   TFz: forbidden package artifacts: :N2   NN>   tmpcacher   __pycache__r,  .git.pytest_cache>   .log.map)
r7  r`   ra   rb   r  rJ   r9  rr   rS   rB  )r   r   r   rM   r\   r  s   &&   @r   check_package_hygiener8  E  s    YI
C$$S)MM*U+,37SYY73337SYY777AIIKKAHHXhLhJJs||~& * #g% ?CzJKr   c               $    V ^8  d   QhRRRRRR/# rD  r   )r%   s   "r   r&   r&   O  s&     m m m m4 mr   c           	     &   \         R ,          V  R2,          p\        \        P                  \	        \         R,          R,          4      R\	        V4      .4      p\        VP                  ^ 8H  V  RVP                  P                  RR7       24       R# )	r  r  r  r  validatez: archive validation failed: r   rK  N)	r   r2  r  r  r"   rB  rY  r.  rZ  )r   r   r  r\  s   &&  r   check_archive_limitsr<  O  ss    	fwd^	#D
CNN3tG|,>>?
3t9UVBbmmQ5')FryyGWGW_hGWGiFj klr   c               $    V ^8  d   QhRRRRRR/# r   r   )r%   s   "r   r&   r&   U  s&     Y Y Y~ Y$ Yr   c                   VR ,          R8w  d   R# \        V 4      R,          R,          p\        V4      p\        \        V\        4      ;'       d+    VP                  R4      ;'       d    VP                  R4      V  R24       R# )r   r  Nr  r  approved_byapproved_sha256z,: visual baseline requires approval metadata)r7  r3   rB  rp   rq   r   )r   r   r  rm  s   &&  r   check_visual_baseline_changerA  U  sz    
{*~-.DDH	h	Djd#__(?__DHHM^D_dicj  kW  bX  Yr   zTF-STATIC-001zTF-STATIC-002zTF-STATIC-003zTF-STATIC-004zTF-STATIC-005zTF-STATIC-006zTF-STATIC-007zTF-STATIC-008zTF-STATIC-009zTF-STATIC-010zTF-STATIC-011zTF-STATIC-012zTF-STATIC-013zTF-STATIC-014zTF-STATIC-015zTF-STATIC-016zTF-STATIC-017zTF-EDITABILITY-002z	TF-GB-005zTF-CONV-005z
TF-VIS-001z
TF-FSE-001zTF-CLASSIC-001z	TF-EL-007z
TF-WOO-008z
TF-PKG-009z
TF-PKG-010z
TF-PKG-011z
TF-PKG-012z
TF-PKG-013z
TF-PKG-014
TF-REL-002c                    \        4       # r(   )check_workflow_contractr  s   &&r   r:   r:   }  s    *A*Cr   c                   V ^8  d   QhRR/# r   r   )r%   s   "r   r&   r&     s     ,X ,X ,Xr   c                 ,   ^ RI p V P                  P                  R\        R,          R,          R,          4      p\	        VRJ;'       d    VP
                  RJR4       V P                  P                  V4      pV\        P                  VP                  &   VP
                  P                  V4       \        VP                  4      p\        \        RR7      4      p0 Rmp\        ^^	4       Uu0 uF	  pR	VR
 2kK  	  pp. p\        4       p	\!        4        EF-  p
V
R,          pV
R,          pV
R,          pV
P#                  RR4      pVR8X  d   W9   pRpMMVR8X  d   W9   pRpM?VR8X  d   VR 9   d   W9   pRpM*VR8X  d    VR 9   d   V\$        9   ;'       g    W9   pRpMRpRpV'       g   VP'                  V RV RV RV R24       MV	V;;,          ^,          uu&   \)        \+        V
P#                  RR4      4      4      pVe   VP-                  4       '       d   EK  VP'                  V RV
P#                  R4       24       EK0  	  V'       d"   \/        RRP1                  V4      ,           4       R\3        \!        4       4      R\5        V	4      R. /# u upi )!zJProve every ledger row resolves to an executable implementation authority.Nthemefactory_runtime_registryr   r   runtime_harness.pyz"runtime harness cannot be importedFinclude_aggregateTF-PKG-r   r   r   r   scoper   	aggregatereporepo-staticztheme-staticunclassifiedz: no executable authority (rq  )r   r  z: implementation path missing: z+ledger implementation coverage incomplete:
r   authoritiesholes>   
TF-REL-001
TF-REL-003
TF-REL-004TF-META-009>   r   r  )importlib.utilutilspec_from_file_locationr   rB  loadermodule_from_specr  modulesr   exec_moduler   TESTSrepo_scope_idsr  r   rx   r   STATIC_HANDLERSrr   r   r"   r   r)   r   r   rq   )	importlibspecr   runtime_registryrepo_registryaggregate_registryr  package_existingrS  rR  rw   r  r   r   rL  ok	authorityr   s                     r   implementation_coveragerj    sb   >>112QSWZaSadmSm  qE  TE  FDd$::4;;d#:<`ann--d3G$CKK		KKG$7==)?@MR38A;?;a'!C);?E '	K}$iXG)Y(B!Ik!*B#If_*?!?%B%Ig%+@"@'BB3+BB&IB&ILLC5 ;F81UG1UGSTUV	"a'""3sww/?'D#EF<t{{}}LLC5 ?HX@Y?Z[\5 6 ;dii>NNOS'[8I7TVWWA @s   -Jc                   V ^8  d   QhRR/# )r    r#   r  r   )r%   s   "r   r&   r&     s     	 	n 	r   c            	     t   \        \        R ,          R,          4      p \        V \        4      '       d   V P	                  R/ 4      M/ p. ROp/ pV Fd  p\        VP	                  VR4      4      p\        RV9   ;'       d&    \        VP                  R^4      ^,          4      ^@8H  RV RV 24       WSV&   Kf  	  V# )r
   r   r   r  z@sha256:z%runtime image must be digest pinned: =)wordpress_imagewp_cli_imagedatabase_imageselenium_imagereference_image)	r3   r   rp   rq   r   r"   rB  r   rsplit)r  r   keysenvrX   r   s         r   runtime_environment_contractrv    s    $+56F+5fd+C+CfjjB'GeDC'++c2&'*#OOCJJz1,Ea,H(IR(OSxy|x}}~  @C  D  RE  	FC  Jr   c                   V ^8  d   QhRR/# )r    r#   r$   r   )r%   s   "r   r&   r&     s     ^ ^ ^r   c            	        \         P                  4       p R1 F  p\        W9  RV 24       K  	  \        RV 9  R4       \        RV 9  R4       \        RV 9   R4       \        RV 9   ;'       d    R	V 9   R
4       \        RV 9  ;'       d    RV 9  R4       \        RV 9   R4       \        RV 9   ;'       g    RV 9   R4       R2 F`  p\        \        P
                  ! R\        P                  ! V4       R2V \        P                  R7      4      p\        V^8H  RV RV 24       Kb  	  \        V P                  R4      ^8H  R4       \        V P                  R4      ^8H  R4       \        R,          R,          R,          P                  4       p\        RV9   ;'       d    R V9   R!4       \        R"V9   ;'       d    VP                  R4      ^8  R#4       \        R$,          R%,          p\        VP                  4       ;'       d#    \        R$,          R&,          P                  4       R'4       VP                  4       p\        R(V9   R)4       \        R*V9   R+4       \        R,V9   R-4       \        R.V9   R/4       R0# )3r  z!workflow pins forbidden hostname zactions/cache@z-actions/cache must not wrap ARC local storagezcontinue-on-error: truez,required workflow must not continue-on-errorzcancel-in-progress: truez-workflow must cancel superseded PR candidateszthemefactory-cizthemefactory-runtimez%workflow missing ARC scale-set labelszactions/upload-artifact@zactions/download-artifact@z4blocking CI must not depend on GitHub artifact quotaz(head.repo.full_name == github.repositoryzworkflow missing fork PR guardzneeds: [planzneeds:
      - planz.workflow runtime/aggregate must depend on planz^  z:\s*$)flagsz+workflow job key must appear exactly once: z count=z-python3 tools/theme_ci.py global-static --outz/workflow duplicates repository static executionz'python3 tests/runtime/guard_selftest.pyz+workflow duplicates runtime guard executionr
   arcz themefactory-runtime.values.yamlzephemeral-storage: 8Gizephemeral-storage: 20Giz4runtime DIND ephemeral-storage request/limit missingzephemeral-storage: 2Giz6runtime runner ephemeral-storage request/limit missingr  ztheme_safe_merge.pyztheme-safe-mergez(fail-closed safe-merge authority missingzREQUIRED_CHECK = "Full gate"z!safe-merge required check driftedzREQUIRED_BASE = "main"zsafe-merge base branch driftedz"--match-head-commit"z%safe-merge lacks head-race protectionz"github-actions"z*safe-merge does not bind provider identityN)r  r  r  )r  global-staticzruntime-engine-selftestztheme-verifyz	full-gate)WORKFLOWr/   rB  r   rN  r  rP  Mr   r   rJ   )rQ  hostjobr   runtime_arc
safe_merge
merge_texts          r   rD  rD    sw   D1$"&Gv$NO 2d*,[\'t35cd(D02ab4'JJ,Bd,JLst(4aa9U]a9a  dZ  [8D@Bbcn$FF(>$(FHxy`"**BIIcN#3594rttLM%(I#gV[U\]^ a djjHIQN  QB  CdjjBCqHJwx$;&)KKVVXK&+5bb:SWb:b  e[  \&+5jj+:K:KLd:eij:j  me  f"77Jj  "VVw9K(K'T'T'V  YC  D%%'J,
:<_`&*46VW%35\] J.0\]r   c                    V ^8  d   QhRRRR/# r   r   )r%   s   "r   r&   r&     s     } } }. }r   c           	     "  a \        V R 7      p\        4        \        4       p\        4       p\        P                  4       '       d   \        4        MV '       d   \        R4       \        4       p\        4        Uu. uF  p\        V4      NK  	  pp. pV EF?  oSP                  RR4      '       g   K  SR,          \        9   d   K2  \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   Kt  SP                  R4      ;'       g    . pSP                  R4      ;'       g    . p	V U
u. uF  qR	8w  g   K  V
NK  	  up
V	 Uu. uF  qP                  R
R4      NK  	  up,           p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   EK'  VP                  SR,          4       EKB  	  V'       d   \        RV 24       / VCR\        4       RVRV/C# u upi u up
i u upi )r   zworkflow missingr   Tr   c              3  h   <"   T F'  p\        SVR 4      ;'       g    \        SVR4      x  K)  	  R# 5i)prr   N)r   )rL   crw   s   & r   rN   check_repo.<locals>.<genexpr>  s0     ^T]q:c!D)JJZAk-JJT]s   22Fr   r   r   r   r   c              3  z   "   T F1  p\         R ,          R,          V R2,          P                  4       x  K3  	  R# 5i)r
   r   z.yamlN)r   r   rK   s   & r   rN   r    s2     ^L]qT	*,s%[8@@BBL]s   9;z4required tests unreachable from contracts/profiles: r   runtime_environmentrj  )r   r   rv  rj  r|  r   rD  r)   rx   r   r   r   META_IDSrb   r   rr   )r   summaryenvironmentcoveragers   t	contractsunreachabler   r   rM   r9   declared_profilesrw   s   &            @r   
check_repor    s   ,<=G.0K&(H!	 	D)8):;):A}Q):I;Kwwz4(((t9 (s^T]^sss^T]^^^WWZ(..BHWWZ(..BH*2@(Qiqq(@`hCi`h[\IIcRUDV`hCii3^L]^333^L]^^^""3t9-  CK=QR|g|x!24I;Xqs{|| < ACis   :HHHHc               (    V ^8  d   QhRRRRRRRR/# )r    r   r"   r   outputr{   r#   r   r   )r%   s   "r   r&   r&     s)     $ $# $S $ $P^ $r   c                B   \         P                   ! 4       p\        W4      p\        4        Uu/ uF  qUR ,          VbK  	  pp. pVR,           Uu. uFP  qV,          R,          R8X  g   K  Wh,          R,          R$9   g   K/  Wh,          P                  RR4      R8X  g   KN  VNKR  	  p	pV	 EF\  p\         P                   ! 4       p
RpRp V\        9   dy   VR%9   d   \        V 4       MVR&9   d   \        4        MVR'9   d   \        W4       MVR(9   d   \        4        MVR)9   d   \        4        MVR	8X  d   \        W4       MVR*9   d    MwVP                  R
4      '       d'   T\        ^^	4       Uu0 uF	  pRVR 2kK  	  up9   d   M:\        P                  V4      pVf   \        RV 24       V! V \        V 4      4        VP!                  R VRVR\#        \         P                   ! 4       V
,
          R,          ^4      RV/4       EK_  	  R^RT RRRRRVR,          RVR,          RVR,          RT	RV Uu. uF  qUR ,          NK  	  upRTRTR\#        \         P                   ! 4       V,
          R,          ^4      R\$        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   RMR/pV'       dL   VP&                  P)                  RRR7       VP+                  \,        P.                  ! V^R 7      R!,           4       VR,          R8w  dI   V Uu. uF  qUR,          R8w  g   K  VNK  	  pp\        R"R!P1                  R# V 4       4      ,           4       V# u upi u upi u upi   \         d   pRp\        T4      p Rp?ELRp?ii ; iu upi u upi )+r   r   r   r   r   rL  r   passedNTF-META-008	TF-PKG-00rK  r   zno static handler for failedr   duration_ms  errorr   r  r   r   r   expected_idsexecuted_idsresults
started_atc              3  8   "   T F  qR ,          R8H  x  K  	  R# 5ir   r  Nr   r   s   & r   rN   !static_receipt.<locals>.<genexpr>  s-       hP  HO  CDjrhsu}h}  HO   FTparentsexist_okindentr   zstatic verification failed:
c              3  J   "   T F  qR ,           RVR,           2x  K  	  R# 5i)r   rk   r  Nr   r   s   & r   rN   r    s$     6d[cVWD'"QwZL7Q[cs   !#>   r   r  >   TF-META-001>   TF-META-002>   TF-META-003>   TF-META-004TF-META-013>   TF-META-005TF-META-006TF-META-007TF-META-010TF-META-011TF-META-012>   rW  TF-META-014)timer  rx   r   r  r   r   r   rD  r'  r   r  ra  r)   	Exceptionr"   rr   roundr   parentr  
write_textr-   dumpsr   )r   r   r  startedrM   r   rs   r  r  r   t0r   r  r  handlerr2   receiptfailuress   &&&               r   static_receiptr    s   IIKG4+km2TmT719mT2T^`V]wZ  eZc9X+>+HcTYW^M_cwMwc  }A  }F  }J  }J  KR  SZ  }[  ]d  }dccZH  e99;xt	,h/)=+?O+\^O+T%-=99?;Lqq  tK  tM-'e)A994,,TYZ[\]T^8_T^q71S'9JT^8_1_'++C0?1#78}U34 	S&udiikRTnVZEZ[\?]^efklm+ . 	75(:hvaPViXijkl}j~/*>(>dkRldk_`UYSZSZdkRlmvw~W]5$))+g2Et1KA+Nxdgdg  hP  HO  hPdgdgdg  hP  HO  hP  eP  ePX`  V^G
 D$79J9J4::V]efKghlKl9mx("$>W(X(=!!W>,TYY6d[c6d-ddeNG 3U e 9`  	,F3s8U	,
 Sm ?s   M"M')M'?M'M'M1$M16M1	M1M1-M1 M1	M1 M1/M,>M19M13N&N0N,M11N<NNrJ  c                    V ^8  d   QhRRRR/# )r    rJ  r   r#   r   r   )r%   s   "r   r&   r&     s     ^ ^ ^) ^r   c                    \        4       pV '       d   0 RmMR R0pV Uu. uF4  q3P                  RR4      R8X  g   K  VR,          V9   g   K+  VR,          NK6  	  up# u upi )r   r  rL  r   rN  r   r   >   r   r  rM  )rx   r   )rJ  rs   r   r   s   $   r   r`  r`    sW    	D/@+xPYFZF!]TUU77%;V%CG'
V\H\GAdGGT]]]s   AAAc               $    V ^8  d   QhRRRRRR/# )r    r   r"   headr#   r   r   )r%   s   "r   r&   r&   !  s&     Z Z ZC Z^ Zr   c           	        \         P                  ! R RRV  RV 2.\        R\         P                  \         P                  RR7      pVP                  '       d   \        RVP                   24       \        4       q2P                  P                  4        Uu. uF  qDP                  4       '       g   K  VNK  	  pp\        \        4       4      pRpV EF  p\        V4      P                  p	\        V	4      ^8  dW   V	^ ,          R8X  dI   V	^,          V9   d;   \        V	4      ^8X  d   V	^,          R	8X  d   Ke  VP                  V	^,          4       K  \        V	4      ^8X  d[   V	^ ,          R
8X  dM   V	^,          P!                  R4      '       d/   V	^,          RR V9   d   VP                  V	^,          RR 4       K  V	'       g   K  V	^ ,          R9   g   EK  RpEK	  	  R\#        V\$        P&                  R7      RVRV/# u upi )gitdiffz--name-onlyz...TFr(  rQ  r.  r/  r0  zgit diff failed: r   r   r  r  NrW   filesinfra_changed>   r
   r   r  r   )r1  r2  r   r3  rY  r)   r/  r   r.  rm   ro   r   r   r  r   r   r  r_   r"   rT   )
r   r  r\  r   r   r  knowninfrar   r  s
   &&        r   changed_themesr  !  s   ~~uVMTF#dV2DE$TX`j`o`o  xB  xG  xG  NS  TB	}}} ,-5FII$8$8$:H$:qggi$:%H
o
 E
ED!''u:q=U1Xx/E!H4E5z1}q+<!<JJuQx Z]uQx/E!H4E4Ef4M4MRWXYRZ[^\^R_chRhJJuQx}%UuQx#CCE  VFs||4WU?SXYY Is   G<1G<c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r    r   r"   r  r   
all_themesr   r#   r   r   )r%   s   "r   r&   r&   6  s0      # S   Zh r   c           !     $   V'       g   \        W4      MR \        4       R. RR/p. p. p. pVR ,           F  p\        W4      p	VP                  V	4       VP                  RV/4       \	        W4       FG  p
VP                  RVRV
R,          R\
        P                  ! V
R,          RR7      RV	R,          /4       KI  	  K  	  \        ;QJ d,    R	 VP                  R. 4       4       F  '       g   K   RM!	  R
M! R	 VP                  R. 4       4       4      pR^RT RTRTRTRTR VR ,          RTRTRTRVR ,           Uu. uF  pRV/NK	  	  upRVR ,           Uu. uF  pRV/NK	  	  upR\        V4      R\        V4      R\        R
R7      /# u upi u upi )r   r  r  Tr   r  r   
separatorsr   c              3     "   T F=  pVR 8H  ;'       g,    VR8H  ;'       g    VP                  R4      ;'       g    VR8H  x  K?  	  R# 5i)z tests/runtime/runtime_harness.pyztests/runtime/guard_selftest.pyzci/runtime/zci/policy.yamlN)r   )rL   r   s   & r   rN   ci_plan.<locals>.<genexpr>?  ss      ($ 00  \  \D<]4]  \  \aeapapq~a  \  \  DH  L\  D\  \(s   AAAAFr   r   r  r   changesruntime_infra_changedtheme_plansstatic_matrixruntime_matrixaggregate_matrixtheme_matrixrun_runtimerun_theme_static
global_idsrI  ,r}   )r  r   r  rr   r'  r-   r  rb   r   r   r`  )r   r  r   r  changer  r  r  r   rM   r%  runtime_infrar  s   &&&&         r   ci_planr  6  s   ,6>$$XoFWX_`bcrsw<xFK"MRn!!
u
1ge_-!%-E!!75E*<MgVZV`V`afgnao  |E  WF  GM  NO  PV  NW  #X  Y .	 " C **WR(CCC **WR( M
 qVDYvF]^kvhkm$4^DVmst|m}W~m}hiY`abXcm}W~  @N  ek  lt  eu  Ov  eu  `a  QX  YZ  P[  eu  OvD();D<O>E:  X  Ovs   :F.F2c                    V ^8  d   QhRRRR/# )r    r  r   r#   r   r   )r%   s   "r   r&   r&   L  s      $ > r   c                  a \         P                   ! 4       p\        4        Uu/ uF  q"R ,          VbK  	  pp\        RR7      p. pRoR V3R llpV EF  p\         P                   ! 4       pRp	Rp
/ p VP                  R4      '       dB   \	        VP                  R4      R2,          4      ^8:  d   V! 4       w  rR	V/p\        VR
4       EM[VR8X  d   \        4       pEMHVR8X  d   \        4       pEM5VR8X  d,   \        4        Uu/ uF  q\        V4      R,          bK  	  ppEMVR8X  d   \        4       pMVR39   d   \        4        MVR8X  d-   \        4        Uu/ uF  q\        \        V4      4      bK  	  ppMVR8X  d   \        4       pMVR8X  d   VP                  4        Uu. uFU  q"P!                  R4      '       g   K  VP!                  R4      R8X  g   K3  VP!                  R4      '       d   KL  VR ,          NKW  	  pp\        V'       * RV 24       M\#        RV 24        VP)                  R VRV	R\+        \         P                   ! 4       V,
          R,          ^4      RVRV
/4       EK  	  R^RR R!R"R#R$R%R&R'TR(V Uu. uF  q"R ,          NK  	  upR)TR\+        \         P                   ! 4       V,
          R,          ^4      R\,        ;QJ d    R* V 4       F  '       d   K   RM	  R+M! R* V 4       4      '       d   RMR/
pV P.                  P1                  R+R+R,7       V P3                  \4        P6                  ! V^R-7      R.,           4       VR,          R8w  d)   \#        R/R0P9                  R1 V 4       4      ,           4       V# u upi u upi u upi u upi   \$         d   pRp	\'        T4      p
 Rp?ELRp?ii ; iu upi )4r   FrI  Nc                   V ^8  d   QhRR/# )r    r#   ztuple[bool, str]r   )r%   s   "r   r&   +global_static_receipt.<locals>.__annotate__O  s       r   c            	        < Sfo   \         P                  ! \        P                  RRRRR.\        R\         P
                  \         P                  RR7      p V P                  ^ 8H  V P                  R	R  3oS# )
Nz-mpytestz-qztests/test_theme_factory.pyztests/verificationTFr  i )	r1  r2  r  r  r   r3  r4  rY  r.  )r\  pytest_caches    r   
unit_suite)global_static_receipt.<locals>.unit_suiteO  s    ~~s~~d8DA^_sty}  DH  PZ  P_  P_  gq  gx  gx  D  EB--*299VW+=>Lr   r  r  r   pytest_tailz&package/unit verification suite failedr  r  r  r   r  r  r  r  proof_requiredr   r   	red_proofz2completed proof-required tests missing RED proof: zunimplemented repo-scope test r  r  r  detailr  r   r   rP   rL  rN  r   r   r  rO  r  r  r  c              3  8   "   T F  qR ,          R8H  x  K  	  R# 5ir  r   r   s   & r   rN   (global_static_receipt.<locals>.<genexpr>h  s=       x`  X_  ST  {C  yD  FN  yN  X_r  Tr  r  r   z!repo static verification failed: z, c              3  R   "   T F  qR ,          R8w  g   K  VR,          x  K  	  R# 5i)r   r  r   Nr   r   s   & r   rN   r  j  s8       WJhocdu}s~  AI  tIW^WXY]W^W^hos   ''>   rB  r  r  r  r  r  r  )r  rx   r`  r   r   r~   rB  r   r   r   r  r  rD  r   r'  r  r   r)   r  r"   rr   r  r   r  r  r  r-   r  r   )r  r  r   rs   r   r  r  r  r  r   r  r  rh  logr  r   r2   r  r  s   &                 @r   global_static_receiptr  L  s!   IIKG+-@-Qwqy-@nglFm#wyov)-L  99;xtBV	,~~k**s399S>"3E/F/I!|]3,?V2NvAwm#O,=Vm#LNVm#OL],^L]qtAwz/B-BL]V,^Vm#JLVzz  }T  }Vm#_M^,_M^s<?/C-CM^V,_Vm#O,=Vm#&*kkm  Kmuu=M7NWSTSXSXYaSbdnSnWwxw|w|  ~I  xJWQtWWm  Kc'$VWZV["\]7u=> 	S&udiikRTnVZEZ[\?]^fgmnuv{|}% & aGF8HZP]^lmpq  SZ  A[  SZ  NO  DH  BI  BI  SZ  A[  \e  fm  n{  |A  CG  CL  CL  CN  OV  CV  X\  B\  ]^  |_  `h  ux  ux  x`  X_  x`  ux  ux  ux  x`  X_  x`  u`  u`  iq  fn  oG
MMd3V5F5FtzzRYabGcdhGh5ix("D)LTYY  WJho  WJ  NJ  *J  %KN= A -_ -` K  	,F3s8U	, A[s   N2AN
NN0NNN"N4NNN6N9NN$NNN2N?NNO NN=%N88N=c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r    r   r"   	plan_pathr   receipts_dirr  r#   r   r   )r%   s   "r   r&   r&   n  s0     7 7S 7T 7 7t 7P^ 7r   c           	        \        V4      p\        VP                  R 4      V 8H  R4       \        4        Uu/ uF  qUR,          VbK  	  ppVR,           Uu0 uF$  qvV,          P                  RR 4      R8w  g   K"  VkK&  	  ppV Uu0 uF  qvV,          R,          R8X  g   K  VkK  	  p	pW,
          p
\	        VP                  R4      4      p\        VR	4       . pV F_  p\        V4      p\        T\        4      '       d   R
T9  g   RT9  d   K4  TP                  R 4      T R09  d   KN  TP                  T4       Ka  	  \        VR4       / p. p/ p. pV EF#  pVP                  R 4      V 8X  dC   \        VP                  R4      RRVP                  R4      09   RVP                  R4       24       VP                  R4      p\        T;'       d    VV9  RV 24       VP                  V4       \        VP                  R
. 4      4      p\        VP                  R. 4      4      p\        \        V4      \        \        V4      4      8H  RV R24       \        \        V4      \        V4      8H  RV R24       \        VP                  R. 4      4      p\        V Uu0 uF  pVP                  R4      kK  	  up\        V4      8H  RV R24       V F)  pVR,          pWz9  d   K  \        W~9  RV 24       VW&   K+  	  VP                  R/ 4      P                  R4      '       d
   VR,          pVP                  R 4      V 8X  g   EK  VP                  R4      '       g   EK  VP                  VR,          4       EK&  	  \	        V
\        V4      ,
          4      p\	        \        V4      V
,
          4      p\        V'       * RV 24       / pV'       dJ   V Uu0 uF  p\        P                  ! VRRDR7      kK  	  pp\        \        V4      ^8H  R 4       V^ ,          p\	        R! VP                  4        4       4      p. p\	        V	4       EF!  pR"pRp  VRE9   d(   \        V'       * ;'       d    V'       * R#V R$V 24       MVR%8X  d   \        VP                  R4      ;'       d    \        VR,          4      ^@8H  R&4       \        VP                  R'4      ;'       d    VP                  R(4      R)4       \        \!        V4      R*4       \        \!        V4      R+4       \        VP                  R,4      \#        4       8H  R-4       M\%        R.V 24        VP                  RVR0VR1V /4       EK$  	  V Uu. uF  qUR0,          R"8w  g   K  VR,          NK  	  p"pVV",           p#/ R2^bR V bRVR,          bR'VP                  R'4      bR(VP                  R(4      bR3VP                  R3. 4      bR4\        V4      bR5\        V4      \        V4      ,           bR6\        \        VR,          4      V,
          4      bR7\        V4      bR"\        V4      \        V#4      ,
          \        V4      ,
          bR/\        V#4      bR8V#bR9VbR:\	        V4      bRVbRVbR;TR<V#'       g   V'       g   R=MR>/CpVP*                  P-                  RRR?7       VP/                  \        P                  ! V^R@7      RA,           4       VR<,          R=8w  d   \%        RBV# RCV 24       V# u upi u upi u upi   \         d     EKS  i ; iu upi u upi   \&         d   p!R/p\)        T!4      p  Rp!?!EL
Rp!?!ii ; iu upi )Fr   zaggregate theme mismatchr   r   rL  rN  r   rM  z*.jsonzno receipts foundr  r  rP   zno applicable receipts foundr   Nr  zreceipt tree mismatch: r  zduplicate/missing shard id: r  zreceipt z duplicate IDsz expected/executed mismatchz raw IDs mismatchz!test claimed by multiple shards: artifactr=   r  zunexpected observed IDs: T)	sort_keysr  z2runtime receipt environment mismatch across shardsc              3  Z   "   T F!  w  rVP                  R 4      R8w  g   K  Vx  K#  	  R# 5ir  r  )rL   r  r   s   &  r   rN   aggregate.<locals>.<genexpr>  s%     M/155?H3L!!/s   +
+r  z,required evidence incomplete/failed missing=z failed=rT  ztree identity missingr   r   zcontract/check identity missingz-artifact digest missing from runtime evidencez:runtime environment identity missing from runtime evidenceimagesz0runtime environment does not match pinned policyzunknown aggregate test r  r   r  r   r   r   executedrepo_scope_excluded
notStarted
failed_idsmissing_idsshardsaggregate_resultsr  PASSFAILr  r  r   zaggregate failed: failed=z
, missing=r  >   rU  rV  rW  )r3   rB  r   rx   r_   r`   r   rp   rq   rr   r   r   r   r-   r  r   r   rv  r)   r  r"   r  r  r  )$r   r  r  r  rM   r   rs   r  	theme_idsaggregate_idsr   receipt_pathsreceiptsr+   observedr
  r   environmentsr  sidr  r  rawr   r  r   extrar  canonr  r  r   r  r2   aggregate_failed
all_faileds$   &&&&                                r   rM  rM  n  s   9Ayw)>?YZ(]	+]D'!)]D	+jSjsIMM'',JF,RssjIS"+O)3Cy/A;/N33)MO$H++H56M	-Pc8dHD!Q!D!!^1%<	QR@RT\55>%,h  h56HRHb;;w&gkk&)d2aeeFm-DDG^_f_j_jku_v^wExyKK
#Ys/H/Hs&7HKghkglIm%npvp}p}  B  qC'++nR89W[[YghjMkHl<nwx{  }I  yJ  LO  PS  T`  Pa  Lb  yb  em  nq  mr  r@  cA  oB  DM  NQ  R^  N_  ad  eq  ar  Nr  u}  ~A  }B  B]  s^  D_Yr*+YS7QSdS7QSVWcSd7dgopsot  uF  fG  .HFtC"Hc),McU*STdjV^Vc  ;;z"%))(33gj>QX;;w&7;;}+E+E 67  8CM)*G&Xx9O2PER[`e\e  iB  CH  BI  gJ  SKKJVW,Qtzz!di@,W#e*a- TU OMx~~/MMFm$t		A??w;KeKe_e[e  iU  V]  U^  ^f  gm  fn  go  Bpl"!%%->>C&	NB,>?VW!%% 12MMquu_7MNop$x.)XY${+,hi+//(35Q5SS  UG  H067  $s8F75!IJ % (9R'8!hK<Qgagg'8R&&J h	HQ  h	wu  h	VAfI  h	6GN_H`  h	apqrqvqv  xG  rH  h	  IS  TU  TY  TY  Zd  eg  Th  h	  is  tw  xA  tB  h	  CM  NQ  RZ  N[  \_  `q  \r  Nr  h	  sH  IL  MP  QR  SZ  Q[  M\  ]f  Mf  Ig  h	  ht  ux  y@  uA  h	  BJ  KN  OX  KY  Z]  ^h  Zi  Ki  jm  nu  jv  Kv  h	  w  @C  DN  @O  h	  P\  ]g  h	  hu  v}  h	  ~F  GM  NT  GU  h	  V`  ai  h	  jw  xC  h	  DW  Xi  jr  A	K	  T	[	  sy  a	g	  h	F
MMd3V5F5FtzzRX`aGbcgGg5hh(A*ZX_W`&a!bMk 
,SO !*(* 8R X  @C%@Rs~   \\9\\ \\\1
"\6\;(\;<#\; 7\;A'\; \;/]!]!\.-\.;]]]c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r    r   r"   r   workdirr{   enginez
str | Noner#   r   r   )r%   s   "r   r&   r&     s1     ( ( (3 ( (T^ (jx (r   c                   T;'       g!    \         P                  P                  RR4      pT;'       g    \        R,          V ,          pVP	                  4       pVP                  4       '       d   \        P                  ! V4       VR,          pVP                  RRR7       VR,          pVR,          pVR	,          p\        W4      p	\        W4       \        WWP R
2,          4       \        W4      p
\        W4       . p\        R,          R,          R,          pV
 F  pVR,          pWP RV R2,          p\         P                  P                  4       pVVR&   V	R,          VR&   VVR&   \        P                  ! \         P"                  \%        V4      RV R\&        P(                  ! VR,          RR7      R\%        V4      RV.
\        VRR7      pVP*                  ^ 8w  g   K  VP-                  V4       K  	   \/        WWX4      pT'       d   \3        RT 24       T#   \0         d    pT'       d   \1        T RT 24      Thh Rp?ii ; i)zLRun the exact selected per-theme gate locally or inside one ARC runtime job.THEMEFACTORY_CONTAINER_ENGINEdockerz	.theme-cir  Tr  z	plan.jsonzshards.jsonz
final.jsonz-static.jsonr   r   rH  r  r   re  THEMEFACTORY_SHARD_IDr   THEMEFACTORY_TREEz--themez--testsr  --out--engineF)r(  ru  r0  z!; runtime shard process failures=Nz:runtime shard process failures despite passing aggregate: r  )osenvironr   r   resolver   r  rmtreer  r  	emit_jsonr  r'  copyr1  r2  r  r  r"   r-   r  rY  rr   rM  r   r)   )r   r   r  r  r   r  r  shards_path
final_pathrM   r
  failed_processesharnessr%  r  outru  r\  r  r2   s   &&&&                r   verify_themer/    s*   PPrzz~~&ExPF22tk)E1D<<>D{{}}dj HNN4$N/{"I&K$JUAa5WL+A AB%&Ff""$Wny(+??GJ7!C5..jjoo'*#$#$V9 /5+,^^^^S\9eY

SXY`SanxHy  |C  EH  IL  EM  OY  [a  b#U
 ==A##C( 5XB
 IJZI[\]M  #se+LM]L^$_`fiis   8H I'IIc               $    V ^8  d   QhRRRRRR/# )r    rz   r   r+   r{   r#   r$   r   )r%   s   "r   r&   r&     s!      S  t r   c                    \         P                  ! V ^RR7      R,           pV'       d1   VP                  P                  RRR7       VP	                  V4       R# \
        P                  P                  V4       R# )r    T)r  r  r   r  N)r-   r  r  r  r  r  r.  write)rz   r+   rQ  s   && r   r(  r(    sP    	ET	24	7D$5tt7L

r   c                   V ^8  d   QhRR/# )r    r#   r   r   )r%   s   "r   r&   r&     s      c r   c                    \         P                  ! R R7      p V P                  RRR7      pVP                  R4      q"P	                  RRR7       VP                  R	4       VP                  R
4      q"P	                  RRR7       VP                  R4      q"P	                  R4       VP	                  R. R&ORR7       VP	                  R\
        R7       VP                  R4      q"P	                  R4       VP	                  R. R&ORR7       VP	                  R\        R7       VP	                  R\
        R7       VP                  R4      q"P	                  R4       VP	                  R. R&ORR7       VP	                  R\
        RR7       VP                  R4      q"P	                  RRR7       VP	                  RRR7       VP                  R4      q"P	                  RRR7       VP	                  RRR7       VP	                  R. R&ORR7       VP	                  RRR7       VP	                  R\
        R7       VP                  R4      q"P	                  R\
        RR7       VP                  R4      q"P	                  R4       VP	                  R \
        RR7       VP	                  R!\
        RR7       VP	                  R\
        RR7       VP                  R"4      q"P	                  R4       VP	                  R. R&ORR7       VP	                  R#\
        R7       VP	                  R$4       V P                  4       pVP                  R8X  d"   \        \        VP                  R%7      4       ^ # VP                  R	8X  d   \        \        4       4       ^ # VP                  R
8X  d"   \        \        VP                  R%7      4       ^ # VP                  R8X  d7   \        \        VP                  VP                   4      VP"                  4       ^ # VP                  R8X  dB   \        \%        VP                  VP                   VP&                  4      VP"                  4       ^ # VP                  R8X  d7   \        \)        VP                  VP                   VP"                  4      4       ^ # VP                  R8X  d,   \        \+        VP,                  VP.                  4      4       ^ # VP                  R8X  dM   \        \1        VP,                  VP.                  VP                   VP2                  4      VP"                  4       ^ # VP                  R8X  d!   \        \5        VP"                  4      4       ^ # VP                  R8X  dB   \        \7        VP                  VP                  VP8                  VP"                  4      4       ^ # VP                  R"8X  d@   \        \;        VP                  VP                   VP<                  VP>                  4      4       ^ # )'z@ThemeFactory verification planner and static/aggregate authority)descriptionr+  T)r  r   zcheck-ledgerz--require-complete
store_true)actionzcheck-contractsz
check-repor  r   z--moder  )choicesdefaultr"  )r  r
  z--max-shardsr   )r  r   zchanged-themesz--base)r   z--headHEAD)r9  zci-planz--all-themesr{  rM  z--planz
--receiptsverifyz	--workdirr#  r  )r  r  r   ) argparseArgumentParseradd_subparsers
add_parseradd_argumentr   r   
parse_argsr+  r(  r   r   r   r  r  r   r   r.  r'  r  r  r  r   r  r  r  r  rM  r  r/  r  r  )parsersubrM   argss       r   mainrE    s   ""/qrF5$7C	nn^$Ann5IQ]n&^NN$%	nn\"ANN3G|N$\	nnVAnnW5q~~hWs  }A~  8B  DE  DR  DR  SZ  `d  DR  De	nnXAw 7Yu  C  :D  FG  FT  FT  Uc  il  FT  Fm  op  o}  o}  ~E  KO  o}  oP	nnXAw 7Yu  C  :D  FG  FT  FT  U\  bf  pt  FT  Fu	nn%&Ax(NPQP^P^_gpvP^Pw	nnYA$!GX`ioIprs  sA  sA  BJ  So  x|  sA  s}  @  M  M  N\  dp  M  q  st  sA  sA  BI  OS  sA  sT	nn_%A~~g4QU~'V	nn[!A>>'#:ANN8Y]gkN<lnon|n|  ~J  PT  ^bn|  oc  ef  es  es  t{  AE  OS  es  eT	nnXAw 7Yu  C  :D  FG  FT  FT  U`  fj  FT  Fk  mn  m{  m{  |F  mG				Dxx<I^I^+_!`  
$	$i0A&B  
<	:tG\G\+]!^  
6	9T$**TYY%?I  
8	Y|DJJtyy'YZ^ZbZbc  
8	Y~djj488'TU  
#	#Y~dii		/R%S
 	 
9	i		$))DIIdoo(^_c_g_gh  
?	"I.CDHH.M$N  
;		)DJJtyyW[W_W_*` a 
8	Y|DJJtyyVZVaVa'bcr   __main__z
theme-ci: )file>   todor   deferredin_progress>   classicr  	block-fsegutenberg-hybrid>   enhancementr  r   r   )r   )r  )r  N)F)r:  )r:  r  F)r  NNr(   )s
__future__r   r<  rZ   r<   r-   r$  rN  r  r1  r  r  r  r  collectionsr   r   pathlibr   r   typingr   r	   __file__r&  r  r   rl   r  SCHEMAr|  r   r   r   r   r	  r  r  RuntimeErrorr   r)   r3   rD   rg   rx   r   r   r   r   r   r   r   r   r   r  r'  r2  r7  r>  rB  rH  rR  r]  rb  rf  rn  rt  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r)  r8  r<  rA  ra  rj  rv  rD  r  r  r`  r  r  r  rM  r/  r(  rE  r   
SystemExitr2   printr/  )r  s   0r   <module>rX     s3   "     	 	   
    , '  H~''*	1	1	}	$	y	 #;	;)k),EE@F
`9%a2vr2(-a51hqg5	 	%Y	&TU T6s
7!oH<*6"JBd BPT Bq
GDCK`	h
[ZGtOR1
bcg
hEE`X
R`	b9
X,BLmY!*!(! &! %	!
 [! &! *! _! ^! '! *! [! (! /! +!  +!!" 0#!$ 22+.#.*&)($"'&CA!H,X^	^8}8$N^ ^Z*,D7r(V8 Z   q 6v  
3% cjj1ms   'L/ L4 4M;MM