
    r_j                         d dl Z d dlZd dlZd dlZd dlZd dlmZ  ee                                          j	        d         Z
e
dz  Ze
dz  Ze
dz  ZdZd Zd	 Zd
 Zd Zd Zedk    r e             dS dS )    N)Path   zscript/project-manifest.jsonz$log/artwork-master-vision-input.jsonz(log/artwork-normalized-vision-input.jsonz8provider-rendered still images only; no video frame usedc                    t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )read)handles   'script/finalize-artwork-visual-gates.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr	   s      @r
   r   r      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                    t          j        dddddddt          |           gddd	          }t          j        |j                                      d
g           }t          |          dk    s|d                             d          dk    rt          d|            t          |d         d                   t          |d         d                   fS )Nffprobez-verrorz-show_entrieszstream=codec_name,width,heightz-ofjsonT)capture_outputtextcheckstreamsr   r   
codec_namepngznot a single PNG stream: widthheight)

subprocessrunstrr   loadsstdoutgetlenRuntimeErrorint)r   resultr   s      r
   
dimensionsr,      s    ^YgHhjoqwy|  ~B  zC  zC  D  UY  `d  lp  q  q  qFj''++Ir::G
7||qGAJNN<88EAA=t==>>>wqz'"##SH)=%>%>>>r   c                     | j                             dd           |                     | j        dz             }|                    t          j        |dd          dz   d	           t          j        ||            d S )
NT)parentsexist_okz.partF   )ensure_asciiindent
utf-8encoding)	parentmkdirwith_suffixsuffix
write_textr   dumpsosreplace)r   valueparts      r
   atomic_jsonrA       s|    KdT222DK'122DOODJu5CCCdJU\O]]]JtTr   c                 T   t          |          \  }}||k    rdn	||k    rdnd}|                     d          du |                     d          t          |                    t                              k    |                     d          t          |          k    |                     d          d	k    |                     d
          du |                     d          |k    |                     d          du |                     d          du |                     d          du |                     d          du ||k    o|                     d          |k    |                     d          |k    o|                     d          |k    d}t          |                                          st          d| d|           dt          |                    t                              t          |          t          |          ||||| d         ||                     dd          dS )N	landscapeportraitsquareverifiedTr   r   evidencez!full-resolution current PNG stillvideo_frame_usedFtranscribed_text_blocksvisual_brief_passidentity_passanatomy_passreveal_limit_passobserved_orientationr    r!   )rF   
path_exactsha256_exactfull_resolution_provider_stillno_video_frametext_contract_exactrJ   rK   rL   rM   orientation_passdimensions_exactzvision gate failed for z: vision_notes )rF   r   master_sha256r   r    r!   expected_orientationrN   rI   checksrV   )	r,   r'   r$   relative_toROOTr   allvaluesr)   )rowr   expected_contractrY   r    r!   orientationrZ   s           r
   validate_visionrb   '   s   t$$ME6!&++6E>>ZZW_KGGJ''4/ggfooT-=-=d-C-C)D)DD))VD\\9*-''**=*=Ad*d''"455>"ww'@AAEVV WW%899TA11T9//47 WW%899TA'+??rCGGLbDcDcgrDrGGG,,5U#''(:K:Kv:U F v}} GETEEVEEFFF#d&6&6t&<&<"="=PVW[P\P\,,& 4k#&'@#AV33  r   c                  @   t          j        t                              d                    } | d         }t          j        t          |d         z                      d                    }t          |d         z  }t          j        |                    d                    }t          |d         z  }|                    d          dus,|                    d	          |                     d
          k    rt          d          |d         d         |d         d         |d         d         d}t          |d         z  t          |d         z  t          |d         z  d}|                                st                                          st          d          t          j        t                              d                    }|                    d          t          k    rt          d          i }	|
                                D ]l\  }
}|
dk    rdnd}t          |d         |
         |||
         |          |	|
<   |	|
         d         |d         |
         d         k    rt          d|
           mdd| d
         |d         t          |          t          |	i dt          j                            t          j        j                                                  d 
}t%          ||           t'          t          j        d!dd"d#                     d S t          j        |                    d                    }|                    d          dus,|                    d	          |                     d
          k    rt          d$          t*                                          st          d%          t          j        t*                              d                    }|                    d          t          k    rt          d&          t          |d'         z  t          |d(         z  t          |d)         z  t          |d*         z  d+}i }|d         |d,         |d-         |d,         |d-         z   d+}|
                                D ]4\  }
}|
d.v rdnd}t          |d         |
         |||
         |          ||
<   5||d/<   d|d0<   t          j                            t          j        j                                                  |d1<   t%          ||           t          |d2         z  }t          j        |                    d                    }|                    d3          dusT|                    d4i                               d*i                               d          t          |d*                   k    rt          d5          d|d<   |d         |d6<   t          |          |d7<   d|d8<   t%          ||           d| d9         d:<   d| d9         d*<   dd|d2         t          |d*                   |d1         d;| d*<   t%          t          |            t'          t          j        d<dt          |d*                   d=d#                     d S )>Nr4   r5   active_pathsimage_promptsartwork_generation_receiptartwork_visual_receiptrF   Tsource_canon_sha256canon_sha256z+artwork generation missing, failed or staletext_contractsintro_and_rightleft)intro
left_panelright_panelintro_poster_masterleft_panel_masterright_panel_masterz master Vision Gate input missingevidence_scopez"master Vision evidence scope driftrm   rC   rD   gatesrX   resultsr   zgeneration lineage drift: 	completedF)
statusrF   rh   generation_receipt_pathgeneration_receipt_sha256rs   rt   normalized_gates video_frame_extraction_performedcompleted_atmaster_visual_completed)rw   rF   )r1   z%master visual receipt failed or stalez$normalized Vision Gate input missingz&normalized Vision evidence scope driftintro_normalizedleft_panel_normalizedright_panel_normalizedlayout)rm   rn   ro   r   rn   ro   >   rm   r   rz   normalized_verifiedr|   layout_receiptnormalized_visual_gate_required	artifactszlayout receipt lineage failednormalized_visual_receipt_path normalized_visual_receipt_sha256normalized_visual_verifiedstepsartwork)rw   rF   receiptartifact_sha256r|   normalized_visual_completed)rw   rF   layout_sha256)r   r%   MANIFEST	read_textr\   r'   r)   existsMASTER_INPUTEXPECTED_SCOPEitemsrb   r   datetimenowtimezoneutc	isoformatrA   printr<   NORMALIZED_INPUT)manifestactivebundlegeneration_path
generationoutput	contractsmasterssuppliedrt   keyr   rY   r   normalized_paths
normalizednormalized_contractslayout_receipt_pathr   s                      r
   mainr   C   sY   z(,,g,>>??Hn%FZ 77BBGBTTUUFV$@AAOO55w5GGHHJF344F~~j!!--@U1V1VZbZfZfguZvZv1v1vHIII()*;<-.v6./0AB I 455V$788f%9:: G
 ==?? ""$$ 	CABBB:l44g4FFGG<<())^;;CDDD  	G 	GIC25..;;j ('):3)?yQT~WkllE#JSz/*j.CC.H.RRR"#E#E#EFFF S "tHUcLd'-.J'Kjp  rA  kB  kB,uRT05xGXG\G\]e]n]rGsGsG}G}GG	
 
 	FG$$$dj$=4PP_deeefffj))7);;<<G{{:d**gkk:O.P.PT\T`T`aoTpTp.p.pBCCC""$$ CABBBz*44g4FFGGH||$%%77CDDD122V$;<<f%=>>))	  J7#- /L)Im,DD	  &++-- 
 
	T.15H.H.H{{j)Wc"D*>s*CEY
 

3 #-G%)G!"&/33H4E4IJJTTVVGN   (8!99Z 3 = =w = O OPPN;<<DHHNL^L^_jlnLoLoLsLst|  A  MB  MB  MF  MF  GO  MP  MP  TZ  [k  lt  [u  Tv  Tv  Mv  Mv:;;;!%N:7=>V7WN349?N5637N/0#^444#.HWi "-HWh$/TfUeNf  |B  CS  T\  C]  |^  |^  pw  xF  pG  H  HHX(###	$* =4bhiy  {C  jD  cE  cE  F  F  UZ  [  [  [  \  \  \  \  \r   __main__)r   r   r   r=   r"   pathlibr   __file__resolver.   r\   r   r   r   r   r   r,   rA   rb   r   __name__ r   r
   <module>r      s      				          tH~~'*00<<DD K  ? ? ?    8T\ T\ T\n zDFFFFF r   