
    ٫_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 d dlmZmZ d dl	m
Z
  e
e                                          j        d         Zedz  Z ej        dej                  ZdZd	 Zd
 Zd Zd Zd ZddZd Zd Zd Zedk    r e             dS dS )    N)defaultdict)datetimetimezone)Path   zscript/project-manifest.jsonz\w+   c                 N    t          j        |                                           S N)hashlibsha256	hexdigest)values    "script/build-run002-originality.pysha256_bytesr      s    >%  **,,,    c                 D    t          |                                           S r
   )r   
read_bytes)paths    r   r   r      s    ))***r   c                     t          j        d|                                           } t                              |           S )NNFC)unicodedata	normalizecasefoldTOKENfindalltexts    r   normalize_tokensr      s2     --6688D==r   c                 @    t           d                   }|                                }t          |           d         k    rt          d d                     d         }|dv r.|                    d          }||                    d          g}nt          j        |                    d                    }|d	k    r'd
                    d |d         D                       g}n|dk    r
|d         g}n|dk    rg }g }|d         D ]Q}	d |	d         D             }
|	                    |
           |
                    d
                    |
                     Rd
                    |          d
                    |          g}nt          d|           i }|D ]-}|                    d          }|                    ||           . fd|                                D             }t          |          dk    rt          d d                    |d         S )Nartifact_pathartifact_sha256zcorpus artifact drift: projectextraction_mode>   	utf8_textutf8_text_raw_canonutf-8
parts_narration_lf2z

c              3   &   K   | ]}|d          V  dS )	narrationN .0rows     r   	<genexpr>z$choose_extraction.<locals>.<genexpr>*   s'      #N#NC$4#N#N#N#N#N#Nr   partstop_level_narrationr*   parts_paragraph_text_lf2c                 L    g | ]!}t          |t                    r|n|d          "S r   )
isinstancestrr,   s     r   
<listcomp>z%choose_extraction.<locals>.<listcomp>1   s/    eee3C!5!5F##3v;eeer   
paragraphsz unknown corpus extraction mode: c                 L    g | ] \  }}t          |          d          k    |!S )extracted_prose_sha256)r   )r-   raw_variantr   entrys      r   r6   z%choose_extraction.<locals>.<listcomp>;   s@       "d$$.F(GGG 	GGGr   r   z,corpus extraction recipe ambiguous/drifted: r   )r   r   r   RuntimeErrordecoderstripjsonloadsjoinextendappendencode
setdefaultitemslen)r;   r   rawmodesourcevariantsdataflatper_partpartvaluesunique_variantsr   r:   matchess   `              r   choose_extractionrS      sa   o&''D
//

CCE"3444GU95EGGHHH"#D333G$$FMM$//0z#**W--..(((#N#NW#N#N#NNNOHH***[)*HH///DHW 5 5eeRVWcRdeeeF###F 3 34444D))6;;x+@+@AHHH$HHIIIO 6 6kk'**"";5555   &5&;&;&=&=  G 7||q\%PYJZ\\]]]1:r   c                     t          t                    }t          t          |           |z
  dz             D ]5}|t	          | |||z                                                   |           6|S )Nr   )r   listrangerG   tuplerC   )tokensnrowsindexs       r   ngram_positionsr\   D   sk    tDs6{{Q*++ ; ;U6%	/*++,33E::::Kr      c                 @   | r|sdS t          t                    }t          |          D ] \  }}||                             |           !d}t          |           D ]\  }}|                    |g           D ]}d}	||	z   t          |           k     r||	z   t          |          k     rm| ||	z            |||	z            k    rU|	|k     rO|	dz  }	||	z   t          |           k     r4||	z   t          |          k     r| ||	z            |||	z            k    r|	|k     O|	|k    r|	}|S )Nr   r   )r   rU   	enumeraterC   getrG   )
	candidatecorpuscap	positionsr[   tokenbestijlengths
             r   longest_exact_runrj   K   s    F qD!!I!&)) ' 'u%&&&&Di((  5ub)) 	 	AFf*s9~~--!f*s6{{2J2JyYZ]cYcOdhnopsyoyhzOzOz  @F  IL  @L  @L! f*s9~~--!f*s6{{2J2JyYZ]cYcOdhnopsyoyhzOzOz  @F  IL  @L  @L}}	 Kr   c                    | j                             dd           |                     | j        dz             }t	          j        |dd          dz                       d          }t          |d	          5 }|                    |           |	                                 t          j        |                                           d d d            n# 1 swxY w Y   t          j        ||            d S )
NT)parentsexist_okz.partF   )ensure_asciiindentr'   r&   xb)parentmkdirwith_suffixsuffixr?   dumpsrD   openwriteflushosfsyncfilenoreplace)r   r   rO   rL   handles        r   atomic_jsonr   \   s   KdT222DK'122DJu5;;;dBJJ7SSD	dD		 "VT
!!!" " " " " " " " " " " " " " " JtTs   7ACCCc                      t          |           r
   )r<   )messages    r   failr   g   s    
w

r   c                     t          j        t                              d                    } |                     d          dk    s|                     d          dk    rt          d           | d         }t          |d	         z  }t          |d
         z  }t          |d         z  }|                    d          }t          |t                    r|st          d           t          |z  }t          dz  }t          dz  }|	                                rt          d           |||||fD ](}	|		                                st          d|	            )t          j        |                    d                    }
|
                    d          dk    s|
                    d          durt          d           |
                    d          t          |          k    rt          d           t          j        |                    d                    }t          j        |                    d                    }t          j        |                    d                    }|                    d          dus|                    d          dk    rt          d           |                    d          t          |          k    rt          d           |                    d          t          |          k    rt          d           |                    d          durt          d           |                    d g           }d! |d"         D             }t          |          dk    sd# |D             |k    rt          d$           |D ]}|                    d%          dk    s|                    d&          d'ur%t          d(|                    d)                      t          |                    d*          t                    r|d*         s%t          d+|                    d)                      t          |                    d,          t                    r|d,         s%t          d-|                    d)                      t          |                    d.          t                    rt          |d.                   d/k     r%t          d0|                    d)                      t          |                    d1g                     d2k    r>|                    d3          d4k    r%t          d5|                    d)                      |                    d          }t          |          }t          |t                    }g }d6}d6}|d"         D ]}t!          |          }t          |          }t#          t          |t                              fd7|D             }t%          ||          }|t          |          z  }t'          ||          }|                    |d)         |d8         |d9         |d:         t          |          |d; |d d/         D             d<           |d6k    rt          d=|            t+          j        t.          j                                                  }i ddddd>dd?|d	         dt          |          d@t          |                                          dAddt          |          dBt          |          dCddDddEddFdGt          |||dHdI|t          |          ddddd/dJdKddL|}t7          ||           t          |          |d         k    rt          dM           t9          t          j        d|d         d||ddNd'O                     d S )PNr&   )encoding
active_runzrun-002statusz'run-002_candidate_ready_for_originalityz0run-002 candidate is not enabled for originalityactive_pathsra   candidate_validationoriginality_receiptpostprose_semantic_matrixz-active postprose semantic matrix path missingz(work/story/run-002/corpus-inventory.jsonz3work/story/run-002/corpus-fingerprint-findings.jsonz"originality receipt must be virginz"originality prerequisite missing: PASSverifiedTz&candidate validation not terminal PASScandidate_sha256zcandidate-validation hash drift)actual_unique_fingerprinted_project_count   z7pre-premise semantic corpus coverage not terminal 17/17z*post-prose semantic matrix candidate driftcorpus_inventory_sha256z'post-prose semantic matrix corpus drift#manual_candidate_full_read_verifiedz1post-prose semantic matrix lacks manual full readcomparisonsc                     h | ]
}|d          S r"   r+   )r-   r;   s     r   	<setcomp>zmain.<locals>.<setcomp>   s    CCCUi CCCr   entriesc                 8    h | ]}|                     d           S r   )r`   r,   s     r   r   zmain.<locals>.<setcomp>   s$    >>>#3779-->>>r   z;post-prose semantic matrix does not cover exact 17 projectsverdictcausal_chain_sameFz$semantic originality failed against r"   candidate_scene_refsz%candidate scene refs missing against corpus_scene_refsz"corpus scene refs missing against decisive_differences   z-fewer than five decisive differences against shared_specific_axes   three_axis_chain_adjudicationdifferent_causal_chainz2three-axis semantic collision not cleared against r   c                     g | ]}|v |	S r+   r+   )r-   gramcorpus_ngramss     r   r6   zmain.<locals>.<listcomp>   s#    NNND8M8M48M8M8Mr   r    r!   r9   c                 8    g | ]}d                      |          S ) )rA   )r-   r   s     r   r6   zmain.<locals>.<listcomp>   s"    FFF$sxx~~FFFr   )r"   r    r!   r9   exact_12gram_match_countlongest_exact_token_runsample_matchesz!exact 12-gram collision count is run_idcandidate_pathcandidate_wordscorpus_inventory_path"corpus_fingerprint_findings_sha256corpus_project_countartifact_hashes_verifiedextracted_prose_hashes_verifiedlexicalz NFC casefold Unicode word tokens)tokenization
ngram_sizetotal_exact_12gram_matchesmaximum_longest_exact_token_runprojectssemantic)matrix_pathmatrix_sha256r   comparison_countsemantic_architecture_verdictall_causal_chain_same_false(minimum_decisive_differences_per_projectr   completed_atz(candidate drift during originality write)r   r   r   exact_12gram_matchesr   r   )ro   )r?   r@   MANIFEST	read_textr`   r   ROOTr4   r5   existsr   rG   rU   r   r\   NGRAMrS   setrj   maxrC   r   nowr   utc	isoformatsplitr   printrv   )manifestactiver   validation_pathoutput_path
matrix_relr   inventory_pathfindings_pathr   
validation	inventoryfindingsmatrixrZ   r   r.   candidate_textcandidate_tokenscandidate_ngramslexical_rowstotal_matchesmaximum_runr;   corpus_textcorpus_tokensrR   longestr   receiptr   s                                 @r   mainr   k   ss   z(,,g,>>??H||L!!Y..(,,x2H2HLu2u2u?@@@n%FF;//NV$:;;O 566K788Jj#&& >j ><===#KFFNPPM 31222+~}] > >{{}} 	><d<<===O55w5GGHHJ~~h6))Z^^J-G-Gt-S-S5666~~())VN-C-CCC.///
>33W3EEFFIz-1171CCDDHZ--w-??@@F||Jt++x||<g/h/hln/n/nFGGGzz$%%)?)???9:::zz+,,~0F0FFF6777zz788DD@AAA::mR((DCCi	.BCCCH
4yyB>>>>>(JJJKKK 
\ 
\779''3773F+G+Gu+T+TL	8J8JLLMMM#''"8994@@ 	OLbHc 	OM9K9KMMNNN#''"566== 	LSI\E] 	LJcggi6H6HJJKKK#''"8994@@ 	WCLbHcDdDdghDhDhUASASUUVVVsww-r2233q88SWWEd=e=e  jB  >B  >BZcggiFXFXZZ[[[#--w-??N'77&'7??LMK9%  '..(55OM5AABBNNNN$4NNN#$4mDDW%+w//Y'"?3$%67&+,D&E(+G'.FF'"1"+FFF
 
 	 	 	 	 @@@AAA
,x|
$
$
.
.
0
0C&D 	) 	&-	
 	F>22 	3~335566 	 !K 	"6.#9#9 	-f].C.C 	 	#B 	*2 	>*7/:$
 
( 	%#K0037 "-3+/89
 
): 	(;< 	=G@ W%%%n);!<<<7888	$*#$67 " -+6)/         r   __main__)r]   )r   r?   rz   rer   collectionsr   r   r   pathlibr   __file__resolverl   r   r   compileUNICODEr   r   r   r   r   rS   r\   rj   r   r   r   __name__r+   r   r   <module>r      sl     				 				     # # # # # # ' ' ' ' ' ' ' '      tH~~'*00
62:&&
- - -+ + +  
# # #L     "       x x xv zDFFFFF r   