
    .JjeL                    N   d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	  ee
      j                         j                  d   Zedz  Zg dZg d	Zd
g dddg dddg dddg ddgZddZddZddZ	 d	 	 	 	 	 	 	 	 	 d dZd!dZd!dZedfd"dZd#dZedk(  r e        yy)$zXCompare current-root route-pair descriptors with the reader-bearing frontier descriptor.    )annotationsN)Path)Any   out)z&normal-runtime-selector-root-executionzreader-branch-target-linkagezstrict-source-hotspot)zPnormal runtime selector/root execution reaching corrected route-pair descriptorszR0x00542b0c reader branch outcome and field-map target linkage on a real route pathz,strict map1_01a source coordinate or hotspotz'out/save_selector_leaf_index_space.json)routeRelevantRowscurrentRoutePairDescriptorCountevidenceRefsevidenceRefCount)pathfieldsz,out/save_selector_scene_record_sequence.json)rowssourceToTargetAdjacentgeometryExitWordHitsz$out/save_selector_stream_traces.json)streamVaHextrace
stopReasonz2out/save_selector_opcode2c_route_pair_context.json)r   correctedTrace correctedTraceReachesReaderCountc                p    | j                         s|S t        j                  | j                  d            S )Nutf-8encoding)existsjsonloads	read_text)r   fallbacks     R/home/exedev/hwanse/tools/summarize_save_selector_route_pair_descriptor_context.py	load_jsonr    ,   s*    ;;=::dnngn677    c                   si S t        fd| D        d       }|si S |j                  d      xs g }|r|d   ni }|j                  d      t        |      |d d D cg c]%  }|j                  d      s|j                  d      ' c}|j                  d      |j                  d      |j                  d      t        d	 |D              d
S c c}w )Nc              3  L   K   | ]  }|j                  d       k(  s|  yw)r   Nget).0item
stream_hexs     r   	<genexpr>ztrace_brief.<locals>.<genexpr>5   s!     X$((=2IZ2WXs   $$r   
streamKind   	opcodeHexvaHexr   c              3  D   K   | ]  }|j                  d       dk(    yw)r.   
0x00542b0cNr$   r&   r'   s     r   r)   ztrace_brief.<locals>.<genexpr>B   s     %ZDdhhw&7<&G%Zs    )r+   r   	stepCountopcodes	stopVaHexstopOpcodeHexr   containsFrontierReader)nextr%   lenany)stream_tracesr(   rowr   lastr'   s    `    r   trace_briefr=   2   s    	
XXZ^
_C	GGG"E592Dggl+!Z6;BQiYd488KCXDHH[)YXXg&+.hh|,"%%ZTY%Z"Z	 	 Zs   C
6C
c                    | si S | j                  d      xs g D ci c]8  }|j                  d      r%|j                  d      |j                  d      xs i : c}S c c}w )Nr   descriptorHexr   r$   )opcode2c_route_pair_contextr;   s     r   corrected_traces_by_descriptorrA   F   se    &	 /226:@b77?# 	 #''*:";"ArA  s   =Ac                t
   t        |      }|j                  d      xs g D ci c]%  }|j                  d      r|j                  d      |' }}| j                  d      xs g }|D cg c]&  }|j                  d      r|j                  d      r|( }}|D cg c]&  }|j                  d      s|j                  d      r|( }	}|	D cg c]  }|j                  d      s| }
}|	D cg c]  }|j                  d      r| }}g }|D ]  }|j                  d      }|j                  d	      }|j                  |      xs i }|j                  d
      xs g }|j                  |      xs i }|j                  d      du }|j                  d      du }|j                  i d|j                  d      d|j                  d      d|j                  d      d|d	|d|j                  d      xs g d|j                  d      xs g d|j                  d      xs g d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|d|d|j                  d      d|xs |d|j                  d      |j                  d      xs g |j                  d      |j                  d      t        |      t	        ||      t	        ||      |d        t        d |D              }t        d |D              }|r|n|}t        d  |D              }t        d! |D              }t        |D ch c]  }|j                  d      xs g D ]  }|   c}}      }d"}i d#| j                  d#      d$| j                  d$      d%| j                  d%      d&| j                  d&      d'| j                  d'      d(| j                  d(      d)t        |      d*|D cg c]  }|j                  d       c}d+|D cg c]  }|j                  d       c}d,|d-|d.t        |      d/|d0|d1t        |      xr |t        |      k(  d2|d3|i d4t        |
      d5t        |      d6|D cg c]  }|j                  d       c}d7| j                  d7      d8t        |      d9d:d;d:d<d:d=d:d>t        d?t        d@t        dAt        t              dBdCd|dD|dEt        S c c}w c c}w c c}w c c}w c c}w c c}}w c c}w c c}w c c}w )FNr   leafPointerHexr   insideCurrentRootEntryRundescriptorHasRoutePair%descriptorTraceContainsFrontierReader childTraceContainsFrontierReaderr?   childPointerHexr   reachesFrontierReaderTindexrootRelativeIndex
entryVaHexdescriptorFieldMapsdescriptorNestedFieldMapschildFieldMapschildHasRoutePair(rawDescriptorTraceContainsFrontierReader.correctedDescriptorTraceContainsFrontierReader%correctedDescriptorFrontierReaderStepfrontierReaderStep.effectiveDescriptorTraceContainsFrontierReaderr   recordSequencesourceRecordVaHextargetRecordVaHex)rV   rW   rX   geometryExitWordHitCountdescriptorTrace
childTracecorrectedDescriptorTracec              3     K   | ]J  }|j                  d       r7|j                  d      r&|j                  d      s|j                  d      rd L yw)rD   rE   rF   rG   r   Nr$   r&   r;   s     r   r)   z build_summary.<locals>.<genexpr>   sL      	677./GG,-GG;<ww9: 	
	6s   AAc              3     K   | ]9  }|j                  d       r&|j                  d      r|j                  d      rd ; yw)rD   rE   rR   r   Nr$   r^   s     r   r)   z build_summary.<locals>.<genexpr>   s?      <77./GG,-GGDE	 	
<   ?Ac              3     K   | ]8  }|j                  d       r%|j                  d      r|j                  dd       : yw)rD   rE   rY   r   Nr$   r^   s     r   r)   z build_summary.<locals>.<genexpr>   s=      +77./CGG<T4U 	*A.+s   >A c              3     K   | ]9  }|j                  d       r&|j                  d      r|j                  d      rd ; yw)rD   rE   r   r   Nr$   r^   s     r   r)   z build_summary.<locals>.<genexpr>   s?      &77./GG,-GG,-	 	
&r`   aL  The current non-negative selector entries at indices 6 and 8 carry map1_01a/map2_02d route-pair scene-list descriptors. Their raw generic traces still stop at opcode 0x2c, but the opcode 0x2c correction traces both descriptors to the reader-bearing frontier 0x00542b0c. This removes the stale trace contradiction while keeping the route pair as selector scene-list adjacency/control-flow evidence: the scene-record sequences still have no geometry exit word hits, the reader branch payload does not yet prove a field-map target, and strict runtime selector/hotspot proof is still missing.sourcetargetselectorrootHexrootTablePointerHexfrontierReaderHexr	   !currentRoutePairDescriptorIndicescurrentRoutePairDescriptorHexescurrentRoutePairNestedFieldMaps"currentRoutePairSceneAdjacentCountopcode2cCorrectionApplied*currentRoutePairRawTraceReachesReaderCount0currentRoutePairCorrectedTraceReachesReaderCount7currentRoutePairCorrectedTraceAllDescriptorsReachReader'currentRoutePairTraceReachesReaderCount$currentRoutePairGeometryExitHitCountreaderBearingCurrentEntryCountreaderBearingNegativeEntryCountreaderBearingNegativeIndices*frontierReaderSelectableByNonNegativeIndex2frontierReaderReachableByCorrectedNonNegativeIndexruntimeSelectionProvenFstrictHotspotFound
proofFoundroutePairDescriptorProofFound failedRoutePairDescriptorGateIdsmissingEvidencer
   r   promotionStatusblocked
conclusionremainingProofs)rA   r%   appendr8   r=   sumsortedbool%FAILED_ROUTE_PAIR_DESCRIPTOR_GATE_IDS&ROUTE_PAIR_DESCRIPTOR_MISSING_EVIDENCE#ROUTE_PAIR_DESCRIPTOR_EVIDENCE_REFS)
leaf_indexscene_sequencer:   r@   corrected_by_descriptorr;   sequence_by_leaf
route_rowscurrent_route_pair_rowsreader_rowscurrent_reader_rowsnegative_reader_rowsr   descriptor_hex	child_hexsequencegeometry_hitscorrected_tracecorrected_reaches_readerraw_reaches_reader+current_route_pair_raw_trace_reaches_reader1current_route_pair_corrected_trace_reaches_reader'current_route_pair_trace_reaches_reader current_route_pair_geometry_hitscurrent_route_pair_adjacentnamenested_mapsr   s                               r   build_summaryr   P   s
    ==XY "%%f-377#$ 	 !3& 
  34:J!77./CGG<T4U 	 
 "77:;swwGi?j 	K  +6^3A\9]3^^+6cCcggFa>bCccD !1GG-.	#''7=2 %;<B155nEK#2#6#67N#OSW#W  WW%LMQUU 
SWW01
#'',/
 (1L)M
 ^	

 y
 "377+@#A#GR
 (1L)M)SQS
 cgg&67=2
 %cgg.F&G
  )<!=
 4SWW=d5e
 /8Z0[
 78J
 =>V
 4_5H5HI]5^
  =>P>lTl!
" %hll3K&L#
$ 'll+;<B!).A!B!).A!B(+M(:*=.I%mY?(71
 	!F 36 	6	6 	3/ 9< << 95 # 	:8 ,
 (+ ++ ($
 #& && # *WW89?R  	 K	F ,*..*,*..*, 	JNN:., 	:>>),	,
 	z~~.CD, 	Z^^,?@, 	*3/F+G, 	,4K.
-0CGG'(.
, 	*0G,
),CGGO$,
, 	*;, 	-.I,  	$T*A%B!," 	56a#,$ 	;<m%,& 	B4H_C` D^=E\A]]),* 	23Z+,, 	/0P-,. 	)#.A*B/,0 	*3/C+D1,2 	'4H)
-0CGG'()
3,8 	5jnnEq6r9,: 	=d=?
;,@ 	!%A,B 	eC,D 	eE,F 	(G,H 	+,QI,J 	AK,L 	;M,N 	C CDO,P 	9Q,R 	S,T 	jU,V 	AW, ,K _cP,.
,
)
sA   *T(+T+T
T!T+T T #T%
=T+T0T5
c                x   ddd| d    d| d    dd| d	    d
| d    dd| d    dd| d    dd| d    d| d    d| d    d| d    d| d    d| d    d| d    d| d    d | d!    d"| d#    d| d$    d%| d&    d'| d(    d)d*j                  | d+          d,t        | d-          d.| j                  d/       d0| d1    dd| d2   dd3dd4d5g}| d6   D ]  }|j                  d7      xs i }|j                  d8      xs i }|j                  d9      xs i }|j                  dj                  g d:|j                  d;       d<|j                  d=       d>|j                  d?       d<|j                  d@       dA|j                  dB      xs dC d>d*j                  |j                  dD      xs g       xs dC dEd*j                  |j                  dF      xs g       xs dC dEd*j                  |j                  dG      xs g       xs dC dE|j                  dH       dE|j                  dI       dE|j                  dJdC       dK|j                  dL      xs dC d>|j                  dJdC       dM|j                  dNdC       dO|j                  dPdC       dE|j                  dJdC       dK|j                  dL      xs dC dQ              |j	                  g dR       |j	                  dS | dT   D               |j                  d       dUj                  |      S )VNz-# Save Selector Route-Pair Descriptor Context z
- route: `rc   z -> rd   `z- selector: `re   z` root `rf   z- root table pointer: `rg   z- frontier reader: `rh   z"- current route-pair descriptors: r	    at ri   z1- current route-pair scene-adjacent descriptors: rl   z"- opcode 0x2c correction applied: rm   z1- current route-pair raw traces reaching reader: rn   z7- current route-pair corrected traces reaching reader: ro   z-- current route-pair traces reaching reader: rq   z)- current route-pair geometry exit hits: rr   z"- reader-bearing current entries: rs   z#- reader-bearing negative entries: rt   ru   z4- frontier reader selectable by non-negative index: rv   z- proof found: rz   z&- failed route-pair descriptor gates: , r|   z- missing evidence count: r}   z- evidence refs: r   z- promotion status: `r~   r   z## Route-Relevant Entriesz| index | entry | current | descriptor | child | desc maps | nested maps | child maps | adjacent | geo hits | raw desc trace | corrected desc trace | child trace |zQ| ---: | --- | --- | --- | --- | --- | --- | --- | --- | ---: | --- | --- | --- |r   rZ   r[   r\   z| rJ   z | `rL   z` | rD   r?   z` | `rH   -rM   z | rN   rO   r   rY   r2   z steps, stop `r    steps, reaches rI   z	 at step rT   z` |)r   z## Remaining Proofsr   c              3  &   K   | ]	  }d |   yw)z- N r1   s     r   r)   zmarkdown.<locals>.<genexpr>  s     D2dVDs   r   
)joinr8   r%   r   extend)summarylinesr;   
desc_tracechild_tracer   s         r   markdownr      s0   7

WX&'tGH,=+>a@

+,HWY5G4HJ
!'*?"@!AC
w':;<A>
,W5V-W,XX\]d  fI  ^J  ]K  	L
;GDh<i;jk
,W5P-Q,RS
;GDp<q;rs
A'J|B}A~
7@i8j7kl
3G<b4c3de
,W5U-V,WX
-g6W.X-YY]^e  gE  _F  ^G  	H
>wGs?t>uv
',/01
07Ce;f1g0hi
$S1B)C%D$EF
GKK(:;<=
(9 :;1=

#
 	n[9E< v 
WW./52
ggl+1r''"<=C	j 	jb 	j!" 	j$ 	jsww|'<&= 	jT 	j#''JeBfAg 	j h 	j()	j).	j/2ww7H/I/PS.Q	jQU	jyy!67=2>E#F	jFI	j yy!<=CDKL	j MP	j yy!128b9@SA		j BE		j
 ww/01	j
 25	j
 69WW=W5X4Y	j
 Z]	j ~~k3/0	j 1?	j @J~~l?[?b_b>c	j dh	j "";45	j 6F	j GVFYFYZqsvFwEx	jy	j '**+?EF	j GJ	j {C01	j 2@	j ALP\@]@dad?e	j fi	j	
	
  
LL01	LLD1B)CDD	LL99Ur!   c           )        g }| d   D ]  }|j                  d      xs i }|j                  d      xs i }|j                  d      xs i }|j                  dj                  g d|j                  d       dt        j                  t        |j                  d	                   d
|j                  d       dt        j                  t        |j                  d                   dt        j                  t        |j                  d      xs d             d
t        j                  dj                  |j                  d      xs g       xs d       dt        j                  dj                  |j                  d      xs g       xs d       dt        j                  dj                  |j                  d      xs g       xs d       d|j                  d       d|j                  d       d|j                  dd       dt        j                  t        |j                  d      xs d             d
|j                  dd       d|j                  dd       d|j                  dd       d|j                  dd       dt        j                  t        |j                  d      xs d             d              dj                  d | d    D              }d!j                  d"d#d$d%d&d'd(d)d*d+d,t        j                  t        | d-                d.t        j                  t        | d/                d0t        j                  t        | d1                d2| d3    d4| d5    d6| d7    d8| d9    d:| d;    d<| d=    d>| d?    d@| dA    dBt        j                  t        | dC                dDdE| dF    dGt        j                  dHj                  | dI                dJt        | dK          dL| j                  dM       dD	dNt        j                  | dO          dPdQdRdj                  |       dSdTdU| dVdWdXdg      S )YNr   rZ   r[   r\   r   z<tr><td>rJ   z</td><td><code>rL   z</code></td><td>rD   r?   z</code></td><td><code>rH   r   r   rM   z	</td><td>rN   rO   r   rY   r2   z steps, stop <code>r   r   rI   z, reader step rT   z</code></td></tr>c              3  N   K   | ]  }d t        j                  |       d  yw)z<li>z</li>N)htmlescaper1   s     r   r)   zhtml_page.<locals>.<genexpr>7  s#     \tDKK-.e4\s   #%r   r   z<!doctype html>z<html lang="en">z<head>z  <meta charset="utf-8">zF  <meta name="viewport" content="width=device-width, initial-scale=1">z<  <title>Save Selector Route-Pair Descriptor Context</title>a    <style>body{font-family:system-ui,sans-serif;background:#111;color:#eee;margin:24px}table{border-collapse:collapse;width:100%;max-width:1280px}td,th{border:1px solid #333;padding:6px 8px;text-align:left;vertical-align:top}th{background:#1f1f1f}code{color:#9bd4ff}</style>z</head>z<body>z6  <h1>Save Selector Route-Pair Descriptor Context</h1>z  <p>route <code>rc   z -&gt; rd   z</code>; selector <code>re   z(</code>; current route-pair descriptors r	   z!; opcode 0x2c correction applied rm   z0; current route-pair raw traces reaching reader rn   z6; current route-pair corrected traces reaching reader ro   z,; current route-pair traces reaching reader rq   z(; current route-pair geometry exit hits rr   z"; reader-bearing negative entries rt   r   ru   z; promotion <code>r~   z</code>.</p>z  <p>proof found <code>rz   z2</code>; failed route-pair descriptor gates <code>,r|   z </code>; missing evidence <code>r}   z</code>; evidence refs <code>r   z  <p>r   z</p>a    <table><thead><tr><th>index</th><th>entry</th><th>current</th><th>descriptor</th><th>child</th><th>desc maps</th><th>nested maps</th><th>child maps</th><th>adjacent</th><th>geo hits</th><th>raw desc trace</th><th>corrected desc trace</th><th>child trace</th></tr></thead>z	  <tbody>z</tbody></table>z  <h2>Remaining Proofs</h2>z  <ul>z</ul>z</body>z</html>)r%   r   r   r   r   strr8   )r   r   r;   r   r   r   proofss          r   	html_pager      s   Dv 
WW./52
ggl+1r''"<=C   777#$%S)>%?@AB 776789 S)A%BCD	E	
 S1B)C)Js%KLM
N ;;tyy1F)G)M2NURUVWX ;;tyy1L)M)SQST[X[\]^ ;;tyy1A)B)HbIPSQRS 773456 775678 >>+s34 5H IMTWXbXfXfgsXtX{x{T|H}G~ #&&{C89 :J KZJ]J]^uwzJ{I| }K L[  L_  L_  `t  vy  Lz  K{{ ??;45 6I JNUXYdYhYhiuYvY}z}U~I  IAA	
	
* WW\IZA[\\F99"PF 	\@
DKKGH,=(>?@TWX_`hXiTjHkGl  mE  FJ  FQ  FQ  RU  V]  ^h  Vi  Rj  Fk  El  lT  U\  ]~  U  T@  @a  bi  jE  bF  aG  Gw  x  @l  xm  wn  nd  el  m_  e`  da  aM	  N	U	  V		  N	@
  M	A
  A
i
  j
q
  r
X  j
Y  i
Z  Z|  }D  Ef  }g  |h  hl  mt  uS  mT  lU  Ug  hl  hs  hs  tw  x  @Q  xR  tS  hT  gU  Ua  	b
!',"7!88jkokvkvwzww  AH  Ik  Al  xm  ln  ko  oO  PS  T[  \m  Tn  Po  Op  pM  NU  NY  NY  Zl  Nm  Mn  nz  	{
GL12348 	\
BGGDM?"23%

)  r!   c                   |j                  dd       |dz  }|j                  t        j                  | dd      dz   d	       |9|j                  j                  dd       |j                  t        |       d	       |S )
NT)parentsexist_okz0save_selector_route_pair_descriptor_context.jsonF   )ensure_asciiindentr   r   r   )mkdir
write_textr   dumpsparentr   )r   out_dirhtml_outjson_outs       r   write_outputsr   P  s    MM$M.KKH

7q9D@   dT:Ig.AOr!   c            	        t        j                  t              } | j                  dt        t
               | j                  dt               | j                         }|j                  }t        t        |dz  i       t        |dz  i       t        |dz  g       t        |d	z  i             }t        |||j                        }t        d
|        y )N)descriptionz	--out-dir)typedefaultz
--html-out)r   z#save_selector_leaf_index_space.jsonz(save_selector_scene_record_sequence.jsonz save_selector_stream_traces.jsonz.save_selector_opcode2c_route_pair_context.jsonz'wrote route-pair descriptor context -> )argparseArgumentParser__doc__add_argumentr   OUT
parse_argsr   r   r    r   r   print)parserargsr   r   r   s        r   mainr   ]  s    $$9F
$<
40DllG'AA2F'FFK'>>C'LLbQ	G Wgt}}=H	3H:
>?r!   __main__)r   r   r   r   returnr   )r:   
list[dict]r(   z
str | Noner   dict)r@   dict | Noner   zdict[str, dict])N)
r   r   r   r   r:   r   r@   r   r   r   )r   r   r   r   )r   r   r   r   r   zPath | Noner   r   )r   None)r   
__future__r   r   r   r   pathlibr   typingr   __file__resolver   ROOTr   r   r   r   r    r=   rA   r   r   r   r   r   __name__r   r!   r   <module>r      s   ^ "      H~''*
Ul) %
* & :n
 ?L
 78
 EP' #(8( 04	XXX X "-	X
 
Xv2j-` 25d 
@  zF r!   