
    _j                         d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZ ed          Zej	        Z
dZdZedz  ez                                  Zd Zd Zd	 Zd
 Zd Zedk    r e             dS dS )    )PathNzD/data/video-pipeline/HaTramAudio/project/025-Nguoi-Giu-Cho-Cuoi-Cungzrun-20260721T232244Z-a0837ee4Levyzwork/artworkc                      t           j                             t           j        j                                                                      dd          S )Nz+00:00Z)datetimenowtimezoneutc	isoformatreplace     work/promote_artwork.pyr   r      s<    "&&x'8'<==GGIIQQRZ[^__
_r   c                    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)fs   r   <lambda>zsha.<locals>.<lambda>
   s    qvvk** r   r   )hashlibsha256openiterupdate	hexdigest)phbr   s      @r   shar      s    
>ffTll <a****3//;;a;< < < < < < < < < < < < < < <	s   ,A##A'*A'c                     t          j        t          dz                                            } t          t
          t          d                                D ]0\  }}|                     |          |k    rt          d|z             1d S )Nz.ownership-lock.json)
project_idrun_idownerzownership mismatch )
jsonloadsROOT	read_textPIDRUNOWNERitemsgetRuntimeError)dkvs      r   guardr1      s~    :t**557788s599??AA = =SQqUU1XXq[[|$9!$;<<<[= =r   c                     t                       |                     d| j        z   dz             }|                    t	          j        |dd          dz              t          j        ||            d S )N..tmpF   )ensure_asciiindent
)r1   	with_namename
write_textr$   dumpsosr   )r   r.   ts      r   atomic_jsonr?      s    UWWWq{{3qv:f+<==Qall4:VWejrsKtKtKtuyKy>z>z>z{}  |F  GH  IJ  |K  |K  |K  |K  |Kr   c            	         t                       t          j        t          dz                                            } |                     di                               di           }|                     d          }|                     di                               d          dk    s0|                    d          dus|                    d          |k    rt          d	          t          j        t          d
z                                            }t          j        t          dz                                            }t          j        t          dz                                            }|                    d          dk    sI|                    d          dus2|                    d          |k    s|                    d          |k    rt          d          |                    d          dus|                    d          |k    rt          d          dddd}t          dz  }|                    dd           |                                D ]"\  }}	|                    di                               |i           }
t          |
                    d          p|
                    dd                    
                                }||	z  }t          |j        vs|                                st          d|z             |
                    d          dk    s|
                    d          d urt          d!|z             |
                    d"          |                    di                               |i                               d"          k    rt          d#|z             t          |          |
                    d$          k    rt          d%|z             |                    d&|j        z   d'z             }t#          j        ||           t                       t'          j        ||           t          |          |d         |         d$         k    rt          d(|z             $t+          j        d)t/          t          d*z            g           t          j        t          d+z                                            }t1                      }|d         d,         }i d-d.d/t2          d0t4          ddddd|ddd1d2dd d"|d         d,         d"         d3|d4         d|d4         d$|d5         d6|d         d7|d8         d9d:d;d d d |d<}g }d=D ]7}|d         |         }|                    ||d         |d8         dd d>           8i d-d.d/t2          d0t4          ddddd|d3|d?         d|d?         d$|d@         d?|d?         d@|d@         dA|dA         dB|dB         dC|dC         dDdEdFd dGdH||dI}t9          t          dJz  |           t9          t          dKz  |           t;          t          j        dd|d$         |d$         dLd M                     d S )NNzscript/project-manifest.jsongate_eventsstorycanon_sha256steps	completedverifiedTz#Story Gate is not committed/currentzlog/artwork-qa.jsonzscript/image-prompts.jsonzscript/promotion-report.jsonstatuspassedsource_canon_sha256zartwork QA/authority mismatchzpromotion authority mismatchzintro-poster-provider.pngzright-panel-provider.pngzleft-panel-provider.png)intro_posterright_panel
left_panelzimage/provider)parentsexist_okr+   artifact_pathsource_path z4provider source outside immutable artwork namespace provider_skillztao-anhtext_postprocessedFzprovider provenance invalid prompt_sha256z!provider prompt binding mismatch artifact_sha256zprovider source hash drift r3   r4   z!provider byte promotion mismatch python3zwork/build_layout.pyzimage/layout-manifest.jsonrJ   schema_version   r!   r"   provider_modelzcx/gpt-5.5-imageoutputtarget_pathtarget_sha256source_intro_poster_pathsource_intro_poster_sha256source_sha256	operationfull_frame_resample_onlycrop)padtypography_postprocesscompleted_at)rL   rK   )rolepathr   rR   rS   layout_pathlayout_sha256layout_dimensionscoordinatescenter_fillcompositionz-deterministic raster placement; no text layerrd   
content_qanot_run_by_policy)provider_panel_sourcesre   zlog/poster.jsonzlog/layout.json)rG   rF   poster_sha256ri   )r6   )r1   r$   r%   r&   r'   r,   r-   mkdirr+   r   resolveWORKrM   is_filer   r9   r:   shutilcopyfiler=   r   
subprocess
check_callstrr   r(   r)   appendr?   printr<   )manifestrB   canonqapromptspromomappingproviderrf   r:   itemsrcdsttmplmstampposter_itempostersourcesxlayouts                        r   mainr      sr
   $*d#AALLNNOOV^VbVbcpqsVtVtVxVx  zA  BD  WE  WEPU  LT  LX  LX  Yg  Lh  Lh  FKLL  ));66%))J:O:OW[:[:[_d_h_hiw_x_xz__  GS  Ty  Gz  Gz  AzJ**557788TRmMmLxLxLzLzA{A{  CG  CM  OS  Tr  Or  N}  N}  N  N  C@  C@  }BFF8h"&&"4"4D"@"@BFFK`DaDachDhDhlslwlw  yN  mO  mO  QV  mV  mV  ]i  jI  ]J  ]J  WJ	IIj%%>)B)BE)I)IP\]{P|P|J|4C]  lE  
F  
F  PT  Ue  Pe  GO  fn  ft  ft  }A  KO  ft  fP  fP  fP--// q qYT$	vvgbd2&&$
488O$$Br(B(BCCKKMM#RZ[_R_c	CKKMME{  }A  FA  9B  9B  3B	XX**dhh7K.L.LTY.Y.Y`l  nL  MQ  nQ  aR  aR  [R	XXoGB 7 7 ; ;D D D H H Y YYY`l  nQ  RV  nV  aW  aW  [WXXtxx)****>[\`>`1a1a+a	mmCL'((#S)A)A)A%'''"*UXY\J]J]J]XXr'{4 !2333,GjkoGo:p:p4p3	#d+A&A"B"BCDDDJ11<<>>??ceeXZ[bXcdrXsK  |m  }M  NO  |m  P\  ]`  |m  ai  jm  |m  nv  wB  |m  CM  NR  |m  Sh  in  |m  o  @I  |m  JZ  [m  |m  nB  CH  |m  IX  Y`  ah  Yi  jx  Yy  zI  YJ  |m  KS  T_  `m  Tn  |m  o~  J  KX  Y  |m  Zk  lw  xG  lH  |m  Ic  do  p}  d~  |m  [	  \	g	  h	w	  \	x	  |m  y	D
  E
_
  |m  `
f
  g
l
  |m  s
x
  RW  gl  |m  |m  |mtz	) ^ ^TwK!gnnT=9ISTUdSe  xA  W\  &]  &]  ^  ^  ^  ^ 	C		!  	C	L  	C	Xc  	C	(;  	C	zZ^  	C	_tuz  	C	  |D  EG  HU  EV  	C	  Wf  gi  jw  gx  	C	  yJ  KM  N]  K^  	C	  _l  mo  p}  m~  	C	  N  OQ  Ra  Ob  	C	  cv  wy  zM  wN  	C	  O\  ]_  `m  ]n  	C	  o|  }  @M  }N  	C	  O\  ]L  	C	  Me  fk  	C	  lx  yL  	C	  fm  }B	  	C	  	C	  	C	T##F+++K=N8Nv,V,V,VW\]a]gr}  JN  _e  fw  _x  IO  Pa  Ib  ic  ic  qv  ^w  ^w  ^w  Xx  Xx  Xx  Xx  Xxr   __main__)pathlibr   r   r   r$   r=   rv   rx   r&   r:   r(   r)   r*   rs   rt   r   r   r1   r?   r   __name__r   r   r   <module>r      s         1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1	T
PQQVZV_RU  eD`c  KQ  EJ
>#&&(( _ _ _  
= = = K  K  Kx x x. Zr   