
    |j2                    z   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ  ee      j                         j                  Z ed      Z ed      Zedz  Zedz  Zed	z  Zed
z  Zedz  ZdZdZdZddZddZddZ	 	 	 	 	 	 	 	 ddZddZddZ ddZ!d dZ"d!dZ#e$dk(  r e% e#             y)"av  Create the offline Task23 expiry-supersession implementation seal.

Task22's terminal seal remains an immutable predecessor hash. Task23 seals its
Gateway leaves and the profile-workspace ``customer_admin`` source that
implements the narrow G1 historical-evidence exception. It never opens live
profile data, imports either package, contacts Telegram, or accesses services.
    )annotationsN)Pathz(/home/cube/projects/richard/hermes-agentz?/home/cube/.hermes/profiles/dualcoachtest/workspace/checkin_cliz9dualcoach-task22-supplemental-compatibility-manifest.jsonz2dualcoach-task23-expiry-supersession-manifest.jsonz(dualcoach-task23-expiry-supersession.whlz/dualcoach-task23-expiry-supersession-wheel.jsonz0dualcoach-task23-expiry-supersession-freeze.json)zgateway/platforms/telegram.pyzFgateway/platforms/telegram_nutrition_onboarding_task23_supersession.pyz:gateway/platforms/telegram_nutrition_onboarding_runtime.pyzDgateway/platforms/telegram_nutrition_onboarding_runtime_authority.pyzCgateway/platforms/telegram_nutrition_onboarding_runtime_callback.pyz,gateway/platforms/telegram_room_bootstrap.pyz7gateway/platforms/telegram_room_bootstrap_activation.pyz4gateway/platforms/telegram_room_bootstrap_cutover.pyz scripts/nutrition-room-bootstrapz)tests/gateway/test_task23_supersession.pyz-tests/gateway/test_telegram_room_bootstrap.py)i Sei Ik)zcheckin_cli/customer_admin.pyc                R    t        j                  | dddd      j                         S )NFT),:)ensure_ascii	sort_keys
separators	allow_nan)jsondumpsencode)values    \/home/cube/projects/richard/traning coach/.omo/evidence/reseal-task23-expiry-supersession.py
_canonicalr   1   s#    ::e%4Jbghooqq    c                H    t        j                  |       j                         S N)hashlibsha256	hexdigest)datas    r   _shar   5   s    >>$))++r   c               T   t        j                  | |i t        j                  dddt         j                  t         j                  d      }|j
                  dvs|j                  r7t        d| d|j                  j                         j                                |j                  S )NC.UTF-8LANGLC_ALLFcwdenvstdoutstderrcheck>   r      zcommand failed: z: )
subprocessrunosenvironPIPE
returncoder#   RuntimeErrordecodestripr"   )argvr    results      r   _runr1   9   s    ^^BrzzB9	BF &&---dXR8L8L8N8T8T8V7WXYY==r   c               ^   t        j                         }g }t        |      D ]x  }| |z  j                         }|j	                  |t        |      t        |      d       |j                  |j                         dz   |j                         z   dz   |z   dz          z ||j                         fS )N)pathbytesr      :    )
r   r   sorted
read_bytesappendlenr   updater   r   )rootpaths	namespacedigestleavesr3   contents          r   _source_leavesrB   G   s     ^^F&(Fu$;**,\7m
 	
 	%5=G%O	
  6##%%%r   c                   t        j                  dddd| gt        t         j                  t         j                  d      j                  dk(  }|rt        ddd	d
ddd| gt              }d|dfS t        dddd	d
ddd|  gt              }d|dfS )Ngitzls-filesz--error-unmatchz--F)r    r"   r#   r$   r   diffz--binaryz--no-ext-diffz--no-textconvHEADr    zgateway-trackedz
--no-indexz	/dev/nullz./zgateway-untrackedr%   )r&   r'   GATEWAYDEVNULLr+   r1   )r3   trackedoutputs      r   _patchrL   \   s    nn	
-tT:!!!! jAG FJ&RVX\]
 !&!++	j/4XZ[_Z`VabF ))r   c                ,   t        j                  d| j                   d| j                        \  }}	 t	        j
                  ||       t        j                  |dd      j                         dz   }t	        j                  |dd	      5 }|j                  |       |j                          t	        j                  |j                                d d d        d
}t	        j                  ||        t	        j                  | j                  t        j                   t        j"                  z  t        j$                  z        }	 t	        j                  |       t	        j&                  |       	 |dk\  rt	        j&                  |       	 t	        j(                  |       y # 1 sw Y   xY w# t	        j&                  |       w xY w# t*        $ r Y y w xY w# |dk\  rt	        j&                  |       	 t	        j(                  |       w # t*        $ r Y w w xY wxY w)N.)prefixdirF   )r   indent   
wbT)closefdr   )tempfilemkstempnameparentr(   fchmodr   r   r   fdopenwriteflushfsyncfilenoreplaceopenO_RDONLYO_DIRECTORY	O_CLOEXECcloseunlinkFileNotFoundError)r3   r   mode
descriptor	temporaryr   handle	directorys           r   _writern   q   s~   $,,a		{!4D$++VJ	
		*d#zz%eA>EEG%OYYz46&LLLLNHHV]]_% 7 



9d#GGDKKr~~)E)TU		 HHYHHY?HHZ 	IIi  76 HHY ! 			 ?HHZ 	IIi   		st   AG AFA0G F) G G F&"G )G  G 	GGH.HH	HHHHc           
        t        j                  dddddddd      }t        j                  t        | |	       t	        | j                  d
            D ]-  }|j                         st        j                  |||fd       / y )Nz.gitz.venvbuildz.gjcz.pytest_cachez.ruff_cache__pycache__z*.pyc)ignore*F)follow_symlinks)	shutilignore_patternscopytreerH   r7   rglobis_filer(   utime)destinationepochignoredr3   s       r   _copy_sourcer~      sm    $$&/=-Y`G OOG[9{((-.<<>HHTE5>5A /r   c                 t   g } t         D ]T  }t        j                  d      5 }t        |      }|dz  }|dz  }t	        ||       t        j                  t        t        dz  dz        t        |      t        |      gt        i t        j                  dddt
        j                  t
        j                  d	
      }|j                  dk7  r5t        |j                  j                         j!                         xs d      t#        |j%                  d            }t'        |      dk7  rt        d      | j)                  |d   j+                                d d d        W | d   | d   k7  rt        d      t        j                  d      5 }t        |      dz  }|j-                  | d          t/        j0                  |      5 }	|	j3                         D 
cg c]E  }
|
j4                  |
j6                  |
j8                  |
j:                  t=        |
j>                        dG }}
d d d        d d d        tA        d D              rt        d      | d   tC        | d         t'        | d         t'        |      tC        tE        |            dfS # 1 sw Y   xY wc c}
w # 1 sw Y   xY w# 1 sw Y   xY w)Nztask23-wheel-)rO   sourcewheelscriptsreproducible-wheel-buildr   r   Fr   r   zoffline wheel build failedz*.whlr%   z-offline wheel build did not produce one wheelz0distinct source mtimes produced different wheelsztask23-wheel-index-zcandidate.whl)filenamecompress_size	file_sizecrc	date_timec              3  0   K   | ]  }|d    g dk7    yw)r   )i  r%   r%   r   r   r   N ).0items     r   	<genexpr>z_build_wheel.<locals>.<genexpr>   s     
J'$4 55's   z'wheel ZIP timestamp is not reproducible)r   r4   membersmember_index_sha256)#SOURCE_EPOCHSrW   TemporaryDirectoryr   r~   r&   r'   strrH   r(   r)   r*   r+   r,   r#   r-   r.   tupleglobr:   r9   r8   write_byteszipfileZipFileinfolistr   r   r   CRClistr   anyr   r   )builtr|   rk   r<   r   rK   r0   wheels	candidatearchiver   r   s               r   _build_wheelr      sg   E((@I	?DH_FG^F'^^Wy(+EEFFUXY_U`aJrzzJ9	J!!F   A%"6==#7#7#9#?#?#A#aEabb6;;w/0F6{a"#RSSLL--/0% A@ ( Qx58MNN		$	$,A	BiOo5	eAh'__Y'7 $,,.	 /D !%%)%7%7!%88!%dnn!5 /  	 ( 
C 
J'
JJDEE8uQx.U1Xw<#Jw$78	  K A@2	 (' 
C	BsC   D3J8J.J"A
J"J"$J.J	J""J+	'J..J7c                 	   t        t        j                        dvst        j                  dd  g dgfvrt        d      t        t
        t        t        f} t        d | D              r;t        j                  dd  dgk7  rt        d      | D ]  }|j                  d        t        j                         }t        j                  |      }t        |t               rt        |j#                  d	      t$              st        d
      t'        j(                         }t'        j(                         }g }t+        t,              D ]  }t.        |z  j                         }t1        |      \  }}	}
|j3                  |t        |      t5        |      |t        |	      t5        |	      |
d       |j7                  d|j9                         z   dz   |z   dz          |j7                  |j9                         dz   |j9                         z   dz   |	z   dz           t;        t<        t>        d      \  }}|D ]P  }t%        |d         }|j7                  d|j9                         z   dz   t<        |z  j                         z   dz          R tA               \  }}t
        jC                  |       t
        jE                  d       tG        g dt.              }ddt%        t.              t%        t<              d|d	   t5        |      dd||jI                         |jI                         t5        |      t        |      t        |jK                  d      D cg c]  }|s|	 c}      ||dddddt
        jL                  i|tO        tP              dt5        t.        dz  d z  j                               dddd!d"ddddd#d$}tS        t        |d%       t5        t        j                               }d&|d	   |t5        |      t
        jL                  |d'   |d(   |d)   |d*   tO        tP              |ddd+}t5        tU        |            |d,<   tS        t        |d%       d-|d	   |t5        t        j                               |d,   |d.   d/}t5        tU        |            |d,<   tS        t        |d%       tW        t        jX                  |d	   ||d'   |d,   |d,   t        |      t        |      d"d0d1             y2c c}w )3N>   r%   rQ   r%   z	--replacez7usage: reseal-task23-expiry-supersession.py [--replace]c              3  <   K   | ]  }|j                           y wr   )exists)r   r3   s     r   r   zmain.<locals>.<genexpr>   s     
/YT4;;=Ys   z.Task23 expiry supersession seal already existsT)
missing_okcandidate_digestz&Task22 predecessor manifest is invalid)r3   r4   r   diff_categorypatch_bytespatch_sha256patch_return_codes   gateway:r6   zprofile-package)r>   r3   s   profile-package:i$  )rD   statusz--porcelain=v1z-zz--untracked-files=allrG   z"task23-expiry-supersession-seal-v2z%Task23 expired bootstrap supersession)gatewayprofile_packagezETask22 terminal authority retained as immutable historical provenance)r   manifest_sha256classificationzPTask23 G1 historical-evidence exception is implemented in profile-package sourceF)source_filesr   accessedreasonlive_profile_data_accessedr   z scripts/reproducible-wheel-buildr   r   )source_epochsbuilder_relative_pathbuilder_sha256reproduced_exactlyincludes_profile_package_sourcer   z.offline-code-and-profile-package-task23-reseal)ri   r   profile_package_source_accessedtelegram_accessedservice_accessed)schemataskrootspredecessorr   r   candidate_diff_sha256gateway_status_snapshot_sha256gateway_status_byte_lengthgateway_status_entry_countr   wheel_provenanceverificationi  z#task23-expiry-supersession-wheel-v2r   r4   r   r   )r   r   r   predecessor_manifest_sha256wheel_filenamewheel_sha256wheel_byteswheel_memberswheel_member_index_sha256r    profile_package_candidate_digestr   r   receipt_digestz$task23-expiry-supersession-freeze-v2r   )r   r   r   wheel_receipt_sha256wheel_receipt_digestr   )r   manifestr   wheel_receiptfreezer=   profile_pathsri   )r	   r   )-r:   sysr/   
SystemExitMANIFESTWHEELWHEEL_RECEIPTFREEZEr   r,   rg   PREDECESSORr8   r   loads
isinstancedictgetr   r   r   r7   SOURCESrH   rL   r9   r   r;   r   rB   PROFILE_PACKAGEPROFILE_SOURCESr   r   chmodr1   r   splitrY   r   r   rn   r   printr   )	artifactsr3   r   predecessor_valuer   rE   r@   rA   categorypatchreturn_codeprofile_leavesprofile_candidateleafr   wheel_valuesr   r   r   manifest_shar   r   s                         r   mainr      s   
388}F"chhqrl2}:M&MRSS5-8I

/Y
//88AB<K=(OPPDKK4K( ((*K

;/'.jARAVAVWiAjlo6pCDD I>>D&(FwT>--/'-d|$%\7m%u: K!,
 	 	t{{}4u<wFNODKKME)HOO,==EMPUUV   )7#)%N%
 4< kkm %1134 		
  '.E<	e	KKTZabF677|"?3

 !22D E#K0e

 %//1!%!1*.v,&)&k&)FLL<O*X<ODSW4<O*X&Y* 1) +0	
 

	
	
 "-0%G"Gi$7:T$T#`#`#bc"&/4*/	
 E*//3!& %
M-H\ 8Xu%++-.L7$%78''+K'8**$X.#G,%i0%12G%Hm,,="&+M '+:m+D&EM"#
=-/8$%78' $]%=%=%? @ -.> ? 0F  $Jv$67F
665!	$**01 h'&'78)*V^,@	 	 	 I +Ys   S$	S$__main__)r   objectreturnr4   )r   r4   r   r   )r/   z	list[str]r    r   r   r4   )r<   r   r=   ztuple[str, ...]r>   r   r   z#tuple[list[dict[str, object]], str])r3   r   r   ztuple[str, bytes, int])r3   r   r   r   ri   intr   None)r{   r   r|   r   r   r   )r   ztuple[bytes, dict[str, object]])r   r   )&__doc__
__future__r   r   r   r(   ru   r&   r   rW   r   pathlibr   __file__resolverZ   EVIDENCErH   r   r   r   r   r   r   r   r   r   r   r   r1   rB   rL   rn   r~   r   r   __name__r   r   r   r   <module>r      s   #   	   
   >!!#**
9
:E TTJJ==LL	F	F )4r,&
&& 	&
 )&***2B-`GT z
TV
 r   