
    1Jj[|                       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m	Z	 ddl
mZ ej                  j                  d e e	e      j!                         j"                               ddlmZmZ ddlmZmZ  e	e      j!                         j0                  d   Zed	z  Zd
ZdZdZdZdZg dZ g dZ!dg dddg ddgZ"ddhZ# e$e#      Z%eddddddddddd d!d"d#	d$ed%d&d&d'd(d)d)d*d$ed+d,d,d-d.d/d0d0d0d1d1d1d2d3d4d5d$iZ&dKd6Z'dLd7Z(dMd8Z)dNd9Z*dOd:Z+dPd;Z,dPd<Z-dPd=Z.dPd>Z/dQd?Z0dOd@Z1dRdAZ2	 	 	 	 	 	 	 	 	 	 dSdBZ3	 	 	 	 	 	 	 	 	 	 dSdCZ4dTdUdDZ5dVdEZ6dWdFZ7dWdGZ8dTdXdHZ9dYdIZ:e;dJk(  r e:        yy)ZzFBuild a direct bridge matrix for the 0:0, 1:0, and 2:0 selector roots.    )annotationsN)Path)Any)read_sectionsva_to_offset)byte_athandler_entry   outmap1_01amap2_02dz0:0z1:0z2:0)z selector-2:0-runtime-or-savedatazsource-current-vm-control-flowzstrict-source-hotspot)z?selector 2:0 gameplay savedat or selected-pointer runtime tracez5VM control flow from source-side 0:0 into current 2:0z,strict map1_01a source coordinate or hotspotHwanse2.exe)z0:0 source selector root rangez#1:0 predecessor selector root rangez2:0 current selector root rangezencoded anchor scan windows)pathfieldszout/save_scene_selectors.json)groupslotselectedPointerHex	fieldMapsDH DH zsource-side confirmed selectorP ip5P zsource root 0:0zsource pointer nodezsource map1_01a leafzsource shared leafz"source entry scene record map1_01azsource map1_02b leafz)source strict event scene record map1_02bz"source event dispatch neighborhood)	r   i42P iD2P i`2P i|2P i2P i2P iP3P i\3P )roleroot
scan_startscan_endexact_targetsz target-side predecessor selectordG iEH zpredecessor root 1:0z%predecessor secondaryBranchState fill)r   r   r   zcurrent merge/frontier selectorT ix5T zcurrent root 2:0zcurrent pointer nodezcurrent map1_01a leafzcurrent shared leafz%current frontier reader/resource gatez$current source scene record map1_01az$current target scene record map2_02d)r   i)T i*T i*T i*T i*T i*T i*T i+T iD+T i+T c                    d| dS )N0x08x values    H/home/exedev/hwanse/tools/summarize_save_selector_merge_bridge_matrix.pyhex32r&   k   s    c{    c                4    t        |        dt        |       S )Nz..)r&   )startends     r%   	range_hexr+   o   s    El^2eCj\**r'   c                p    | j                         s|S t        j                  | j                  d            S )Nutf-8encoding)existsjsonloads	read_text)r   fallbacks     r%   	load_jsonr5   s   s*    ;;=::dnngn677r'   c                "    | rt        | d      S d S )N   )intr#   s    r%   	parse_hexr9   y   s    "3ub>,,r'   c                    |j                  dd      \  }}t        |      t        |      t        fd| D        i       S )N:r
   c              3  r   K   | ].  }|j                  d       k(  r|j                  d      k(  r| 0 yw)r   r   Nget).0rowr   r   s     r%   	<genexpr>zselector_row.<locals>.<genexpr>   s9      	
www5(SWWV_-D 	
s   47)splitr8   next)	selectorslabel
group_text	slot_textr   r   s       @@r%   selector_rowrH   }   sI    !KKQ/J	
OEy>D	
$	
 	 r'   c                v    t        ||      }||dz   t        |       kD  ry t        j                  d| |      d   S )N   z<Ir   r   lenstructunpack_fromexesectionsvaoffsets       r%   dword_at_varT      ?    (B'F~!c#h.dC033r'   c                v    t        ||      }||dz   t        |       kD  ry t        j                  d| |      d   S )N   z<Hr   rK   rO   s       r%   	u16_at_varX      rU   r'   c                v    t        ||      }||dz   t        |       kD  ry t        j                  d| |      d   S )NrW   z<hr   rK   rO   s       r%   	s16_at_varZ      rU   r'   c                v    t        ||      }||dz   t        |       kD  ry t        j                  d| |      d   S )NrJ   z<ir   rK   rO   s       r%   	s32_at_var\      rU   r'   c                   g }| D ]R  }t        |d         }|t        |d         z   }t        ||      }t        ||      }||k  s@|j                  ||f       T g }	|D ]   \  }}|	j	                  t        ||             " |	S )NrR   raw_size)r8   maxminappendextendrange)
rQ   start_vaend_vaspanssectionsection_startsection_endr)   r*   vass
             r%   readable_vasrk      s    #%E 'GDM*#c'**=&>>Hm,&+&3;LL%&' C &
s

5$%&Jr'   c                    t         |   }t        | |      }||d   t        |d         t        |d   |d         |j	                  d      xs g |j	                  d      xs g dS )Nr   r   r   r   r   	linkedCns)selectorr   	rootVaHexscanRangeHexr   rm   )CONTEXTSrH   r&   r+   r>   )rD   rE   contextr@   s       r%   context_summaryrs      sm    uoG
y%
(C76?+!',"79LMWW[)/RWW[)/R r'   c                ~    t        | j                               D cg c]  \  }}t        |      |d c}}S c c}}w )N)vaHexrE   )sorteditemsr&   )targetsr$   rE   s      r%   exact_target_rowsry      s<     #7==?3E5 ,/  s   9c                   !"#$ t         |   }t         |   }t        |d   j                               }i }i }i }	|D 
ci c]  \  }
}|
|
 }}
}|D ]^  \  }}|j                  |dz  g       j	                  ||f       ||d   z
  }d|cxk  rdk  r
n n||f||<   d|cxk  rdk  sUn X||f|	|<   ` i #g $g !g }dddddd}d" #fd"d#!" $fd}t        |d   |d	         D ]F  }t         |      }||j                  |g       D ]  \  }}|d
xx   dz  cc<    |d||||d       ! |j                  |      }||\  }}|dxx   dz  cc<    |d||||d       t         |      }|5|dz   |z   }|j                  |      }||dxx   dz  cc<    |d||||d       t         |      }||	j                  |      }||\  }}|dxx   dz  cc<    |d||||d       t         |      }||dz   |z   }|j                  |      }|-|dxx   dz  cc<    |d||||d       I t        |d   |d	   d      D ]  }t         |      } "|      }|j                  d      xs g D ]c  }||z   }|j                  |      }||j	                  t        |      |t        |      ||j                  d      |j                  d      d       e  t        |j                               }t!        !      }t!        |      }|}|rd} n|rd} nd} ||t#        |d   |d	         t!        |      t%        |d         |||||| |rdnd$!|d d  d!S c c}}
w )$Nr   i  r   r   l    )abs16LowsourceRelativeU16sourceRelativeU32signedRel16SitePlus2signedRel32SitePlus4c                >    | i S | vrt        |       | <   |    S N)r	   )opcoderP   handler_cacherQ   s    r%   cached_handlerz2scan_encoded_anchor_bridge.<locals>.cached_handler   s3    >I&$1#x$HM&!V$$r'   c                   |dz  }t        |      } |      }| t        |      t        |      d|d|dz  z  dz
  z  d|dz   dt        |      ||d|dnd |j                  d	      |j                  d
      |j                  d      du |j                  d      xs g |j                  d      du xr ||dz   k(  d}	t              dk  rj	                  |	       |	d   r!t        
      dk  r
j	                  |	       y y y )Nr    r
      0rW   x02xhandlerVaHexhandlerSectioncanJumpToDwordAtPlus4TfixedAdvancesrJ   )kind	siteVaHexrowVaHexvalueHextargetVaHextargetLabel	opcodeHexr   r   handlerCanJumpToDwordAtPlus4handlerFixedAdvancesstartsAtBranchTargetField    r   )r   r&   r>   rL   ra   )r   site_var$   	target_varE   widthrow_var   handlerr@   branch_attached_rowsr   rP   raw_rowsrQ   s             r%   add_rowz+scan_encoded_anchor_bridge.<locals>.add_row   s+   2h/ (wfUqUQY'71&<=a	{!^LM + .4.@2fS\*d#KK7%kk*:;,3KK8O,PTX,X$+KK$@$FB34<VFUVJAV
  x=2OOC *+4H0IB0N '', 1O+r'   r   r{   r
   z	abs16-lowrW   r|   zsource-relative-u16r~   zsigned-rel16-site-plus2r}   zsource-relative-u32rJ   r   zsigned-rel32-site-plus4r   r   r   )r   advancer   r   r   r   z%encoded-anchor-control-flow-candidatez'raw-encoded-anchor-scalars-nonpromotingzno-encoded-anchor-candidateszready-for-reviewblockedr   )sourceSelectortargetSelectorsourceRangeHextargetExactAnchorCounttargetExactAnchorsrawScalarCandidateCountsrawScalarCandidateCountbranchAttachedEncodedFieldCount modeledControlFlowCandidateCountpromotingCandidateCountclassificationpromotionStatusrawScalarCandidateRowsbranchAttachedEncodedRowsmodeledControlFlowRows)r   
int | Nonereturndict)r   strr   r8   r$   r8   r   r8   rE   r   r   r8   r   None)rq   rv   rw   
setdefaultra   rk   rX   r>   rZ   rT   r\   rc   r   r&   sumvaluesrL   r+   ry   )%rP   rQ   source_labeltarget_labelsourcetargettarget_rowslow16_targetssource_rel16_targetssource_rel32_targetsrR   rE   r   r   relmodeled_rowscountsr   r   value16
rel_targetrel16value32rel32r   r   r   r   	raw_countbranch_attached_countmodeled_countpromoting_countr   r   r   r   r   s%   ``                               @@@@r%   scan_encoded_anchor_bridger      s^    l#Fl#F06689K68M79790;<92uRY<M<' ;	5  V!3R8??E@RS&..v)2E(: %!z!)2E(: %; &(MH')!L ! !F%- -2  &*>z@RS \C73$1$5$5gr$B L 	5z"a'"Wgy%KL .11':J%#- 	5*+q0+-wESTUc8W5E #aK%/	%)))4$12a725wyRWYZ[c8W5-11':J%#- 	5*+q0+-wESTUc8W5E #aK%/	%)))4$12a725wyRWYZ[?\B |,fZ.@!D h/ ({{?39r 	G(I!%%i0E}"6]"$Y/$ 'N ;")++.>"?! 	" FMMO$I 45%M#O@	B7&&#F<$8&:LM"%k"2/0GH$*#,+@,9#2(1@-i"*%9".s"3 c =s    Mc                >   t         |   }t         |   }g }d}d}t        |d   |d   d      D ]  }	t        | ||	      }
|
|dz  }|dz  }|d   |
cxk  xr |d   k  nc }|d   j                  |
      }|s|L|j	                  t        |	      t        |
      |||t        k(  xr	 |
t        k  |
t        v d        ||t        |d   |d         t        |d   |d         ||t        |      t        d |D              t        d	 |D              t        |d         |d
S )Nr   r   r   rJ   r
   r   )sourceVaHexr   insideTargetRangetargetExactLabelbeforePredecessorFilltargetsPredecessorFillSitec              3  ,   K   | ]  }|d    s	d  yw)r   r
   Nr"   r?   r@   s     r%   rA   z+scan_direct_dword_bridge.<locals>.<genexpr>~  s     ,_3#F]B^Q,_   
c              3  ,   K   | ]  }|d    s	d  yw)r   r
   Nr"   r   s     r%   rA   z+scan_direct_dword_bridge.<locals>.<genexpr>  s     -eC3GcCda-er   )r   r   r   targetRangeHexreadableDwordCountunreadableDwordCounthitCounthitCountBeforePredecessorFillhitCountToPredecessorFillSitestargetExactValueshits)rq   rc   rT   r>   ra   r&   PREDECESSOR_SELECTORFIRST_PREDECESSOR_FILLPREDECESSOR_FILL_SITESr+   rL   r   ry   )rP   rQ   r   r   r   r   r   readable
unreadablerR   r$   inside_target_rangeexact_labels                r%   scan_direct_dword_bridger   Y  s`    l#Fl#FDHJF<(&*<a@ C2.=!OJA$\2ePfZ>PP_-11%8"{': 9e!4 +%15I%I%leVlNl*/3I*I
 	& '&#F<$8&:LM#F<$8&:LM& *I),,_$,_)_*--e4-e*e.vo/FG r'   c                   t        |       }||nt        t        dz  g       }t        t        t
        g}|D cg c].  }|D ]'  }||k7  r i t        | |||      dt        | |||      i) 0 }}}|D ci c]  }|d   |d   f| }}|t        t        f   }	|t        t
        f   }
|t        t
        f   }|t
        t        f   }|	d   |
d   z   |d   z   }t        d |	|
|fD              }t        d |	|
|fD              }t        d |D              }|d   d	kD  xr |d
   |d   k(  xr |d   d	k(  }|d	kD  }|d	kD  }d}i dt        dt        dt        dt        dt
        d|D cg c]  }t        ||       c}d|d|	d   d|
d   d|d   d|d   d|d
   d|d   d|d|d|d||||dddt        t        t        t        t              dg dt        |d S c c}}w c c}w c c}w )!Nsave_scene_selectors.jsonencodedAnchorScanr   r   r   c              3  f   K   | ])  }|j                  d       xs i j                  dd       + yw)r   r   r   Nr=   r   s     r%   rA   z build_summary.<locals>.<genexpr>  s5      + 
$	%	+001JAN+   /1c              3  f   K   | ])  }|j                  d       xs i j                  dd       + ywr   r   r   Nr=   r   s     r%   rA   z build_summary.<locals>.<genexpr>  s5      1 
$	%	+001JAN1r   c              3  f   K   | ])  }|j                  d       xs i j                  dd       + ywr   r=   r   s     r%   rA   z build_summary.<locals>.<genexpr>  s5      ) 
$	%	+001JAN)r   r   r   r   a  The pairwise direct-dword bridge matrix finds no source-side 0:0 -> target-side 1:0 bridge, no source-side 0:0 -> current 2:0 bridge, and no target-side 1:0 -> current 2:0 bridge. The only route-relevant nonzero bridge remains the current 2:0 -> predecessor 1:0 reverse reuse, and every such target lands before the predecessor secondaryBranchState fill sites. The encoded exact-anchor scan adds no modeled control-flow candidate in the forward merge directions; any encoded anchor matches are raw scalar collisions unless a runtime VM path proves otherwise. This keeps the selector-merge hypothesis blocked: static data pointers and encoded scalar anchors do not prove that the confirmed source route executes through 1:0 and then into 2:0.r   r   predecessorSelectorcurrentSelectorcontextspairssourceToPredecessorHitCountsourceToCurrentHitCountpredecessorToCurrentHitCountcurrentToPredecessorHitCount&currentToPredecessorBeforeFillHitCount$currentToPredecessorFillSiteHitCount$currentPredecessorHitsBeforeFillOnlyforwardMergeBridgeHitCountdirectMergeExecutionBridgeFound+forwardEncodedAnchorRawScalarCandidateCountr   F)zyThis matrix covers direct dword values and exact-anchor encoded scalar shapes in the known selector/root context windows.znIt does not rule out VM-dispatched execution order, save-state progression, or indirect runtime state changes.z\It does not replace the strict source hotspot or runtime selected-pointer proof requirement.)+forwardEncodedAnchorPromotingCandidateCount$encodedAnchorPromotingCandidateCount encodedMergeExecutionBridgeFoundselectorMergeProofStatus
proofFoundmergeBridgeMatrixProofFoundfailedMergeBridgeGateIdsmissingEvidenceevidenceRefsevidenceRefCountr   limitationsremainingProofs
conclusion)r   r5   OUTSOURCE_SELECTORr   CURRENT_SELECTORr   r   r   SOURCETARGETrs   FAILED_MERGE_BRIDGE_GATE_IDSMERGE_BRIDGE_MISSING_EVIDENCEMERGE_BRIDGE_EVIDENCE_REFSrL   )rP   rD   rQ   labelsr   r   	pair_rowsr@   by_directionsource_to_predecessorsource_to_currentpredecessor_to_currentcurrent_to_predecessorforward_merge_bridge_count forward_encoded_anchor_raw_count&forward_encoded_anchor_promoting_countencoded_anchor_promoting_count)current_predecessor_hits_before_fill_only#direct_merge_execution_bridge_found$encoded_merge_execution_bridge_foundr  rE   s                         r%   build_summaryr#    sh   S!H&2		#HcBceg8hI35EFF 
  V	
&sHffE	
!;C6SY!Z	
	
I   
	$4 56;L  )/;O)PQ$o7G%HI)+?AQ*RS)+;=Q*RSj)
J
'	(
 
,	- 
 (+ +)+<>TU+ ($ .1 1)+<>TU1 .* &) )) &"
 	z*Q. 	J"#BCG]^hGii	J"#CDI .
 +Eq*H'+QTU+U(	) $&$&$ 	/$ 	3	$
 	+$ 	FK5_Y6K$ 	$ 	&'<Z'H$ 	"#4Z#@$ 	'(>z(J$ 	'(>z(J$ 	12HIh2i$ 	/0FGg0h$ 	/0Y$ 	%&@$  	*+N!$" 	67W#$$ 8^0N,P$-',$@82 :;$

 9 G$ $g` Ls   3G3G$$G)c           
     @    | d    d| d    d| d    d| d    d| d	    	S )
Nr   z->r   z hits=r   z beforeFill=r   z fillSites=r   r"   )r@   s    r%   
pair_briefr%    sS     
!C(8$9#:&Z@Q R9:; <9:;	=r'   c                &   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t        d       dt        d       dd| d     d!| d"    d#| d$    d%| d&    d'| d(    d)| d*    dd+| d,    d-d.j                  | d/          d0t        | d1          d2| j                  d3       d4| d5    dd| d6   dd7dd8d9g}| d:   D ]?  }|j	                  d;|d<    d=|d>    d?|d@    d=d.j                  |dA         xs dB dC	       A |j                  g dD       | dE   D ]w  }|j                  dF      xs i }|j	                  d;|d    d|dG    dH|dI    dH|dJ    d=|dK    dL|dM    dL|dN    dL|j                  dO       dL|j                  dP       dC       y |j                  g dQ       | dE   D ]  }|j                  dF      xs i }|j	                  d;|d    d|dG    d=|j                  dR       dL|j                  dO       dL|j                  dS       dL|j                  dT       dL|j                  dP       dC        |j                  g dU       | dE   D ]  }|dK   dVk(  r|j                  dW|d    d|dG    ddXdYg       |dZ   d d[ D ]B  }|j	                  d;|d\    dH|d]    d=|j                  d^      xs dB dL|d_    dL|d`    dC       D t        |dZ         d[kD  r$|j	                  dat        |dZ         d[z
   db       |j	                  d        |j                  dcdg       |j                  dd | de   D               |j	                  d       dfj                  |      S )gNz## Save Selector Merge Bridge Matrix z	- route: r   z -> r   z- selectors: source `r   z`, predecessor `r   z`, current `r   `z- source -> predecessor hits: r   z- source -> current hits: r   z- predecessor -> current hits: r   z- current -> predecessor hits: r   z (before fill r   z, fill sites r   )z- predecessor fill sites: `r   z`, `r   z- forward merge bridge hits: r   z'- direct merge execution bridge found: r   z&- forward encoded-anchor raw scalars: r   z/- forward encoded-anchor promoting candidates: r   z(- encoded merge execution bridge found: r  z - selector merge proof status: `r  z- proof found: r  z- failed merge-bridge gates: , r  z- missing evidence count: r  z- evidence refs: r	  z- promotion status: `r   r  z## Contextsz-| selector | role | scan range | field maps |z| --- | --- | --- | --- |r   z| `rn   z` | r   z | `rp   r   -z |)r'  z## Pair Matrixr'  zy| direction | source range | target range | dword hits | before fill | fill-site hits | encoded raw | encoded promoting |z6| --- | --- | --- | ---: | ---: | ---: | ---: | ---: |r   r   r   z` | `r   r   r   z | r   r   r   r   )r'  z## Encoded Anchor Scanr'  za| direction | classification | raw scalars | branch-attached | modeled control-flow | promoting |z)| --- | --- | ---: | ---: | ---: | ---: |r   r   r   )r'  z## Route-Relevant Hitsr'  r   z### zJ| source VA | value | exact target | before predecessor fill | fill site |z| --- | --- | --- | --- | --- |r   P   r   r   r   r   r   z| ... | ... | z  more hits omitted | ... | ... |z## Remaining Proofsc              3  &   K   | ]	  }d |   yw)z- Nr"   r?   items     r%   rA   zmarkdown.<locals>.<genexpr>A  s     D2dVDs   r  
)r&   joinrL   r>   ra   rb   )summarylinesr@   encodedhits        r%   markdownr6    ss   -

GH%&d78+<*=>
(8 9::J7ShKiJjjvw~  @Q  xR  wS  ST  	U
(1N)O(PQ
$W-F%G$HI
)'2P*Q)RS
)'2P*Q)RR`ah  jR  bS  aT  Ta  bi  jP  bQ  aR  RS  	T
%eJ&7%8U:=N<OqQ
'0L(M'NO
1':[2\1]^
09f1g0hi
9'Bo:p9qr
27;]3^2_`
*73M+N*OqQ
',/01
'		':T2U(V'WX
$S1B)C%D$EF
GKK(:;<=
(9 :;1=


7#7E: z" 
#j/"$s6{m4N8K7LDyy[)*1c2"6	


 
LL   w 
''-.4"#&'(S1A-B,C5M]I^H_ `$%&d3z?*;3234C<\8]7^^a{{456c'++F_:`9aace	

 
LL   w 
''-.4"#&'(S1A-B,C4{{+,-S=V1W0XX[{{<=>c{{=>?s{{456b	:	

 
LL34w z?a3'()c2B.C-DEX-	
 	 v;s# 	CLLc-()s:.?t77-.5#6c#>U:V9WWZ345R9	 s6{b LL>#c&k*:R*?)@@`abR#$ 
LL',-	LLD1B)CDD	LL99Ur'   c                  	 dj                  d | d   D              }dWd	dj                  	fd| d   D              }dj                  d | d   D              }g }| d   D ]p  }|d   d	k(  rdj                  d
 |d   d d D              }|j                  dt        j                  |d          dt        j                  |d          d| d       r dj                  d | d   D              }dj                  d | d   D              }dj                  g ddddddddd d!d"d#d$d%d&d'd(d)t        j                  | d*          dt        j                  | d+          d,| d-    d.| d/    d0| d1    d2t        j                  | d3          d4d5| d6    d7| d8    d9| d:    d;| d<    d=	d>| d?    d@t        j                  dAj                  | dB                dCt	        | dD          dE| j                  dF       d4	dG| dH    d=dIt        j                  | dJ          dKdLdM|dNdOdP|dNdQdR|dN|dS| dTdU| dTdV      S )XNr0  c              3    K   | ]~  }d t        j                  |d          dt        j                  |d          dt        j                  |d          dt        j                  dj                  |d         xs d       d		  y
w)<tr><td><code>rn   </code></td><td>r   z</td><td><code>rp   r*  r   r+  
</td></tr>N)htmlescaper1  r   s     r%   rA   zhtml_page.<locals>.<genexpr>G  s       	[[Z12 3{{3v;'( )[[^!456 7{{499S%56=#>? @		s   BBr   c                f   | j                  d      xs i }dt        j                  | d          dt        j                  | d          dt        j                  | d          dt        j                  | d          d	| d
    d| d    d| d    d|j                  d       d|j                  d       dS )Nr   r9  r    -&gt; r   </code></td><td><code>r   r   r:  r   	</td><td>r   r   r   r   r;  )r>   r<  r=  )r@   r4  s     r%   pair_rowzhtml_page.<locals>.pair_rowP  s    ''-.4"S)9%:;<GDKKPSTdPeDfCg hS)9%:;< =S)9%:;< =z?# $678 9789 :;;89: ;;;89: ;		
r'   c              3  .   K   | ]  } |        y wr   r"   )r?   r@   rB  s     r%   rA   zhtml_page.<locals>.<genexpr>_  s       	s   r   c              3  4  K   | ]  }d t        j                  |d          dt        j                  |d          dt        j                  t        |j                  d      xs i j                  d                   d|j                  d      xs i j                  d       d|j                  d      xs i j                  d	       d|j                  d      xs i j                  d
       d|j                  d      xs i j                  d       d  yw)r9  r   r?  r   r:  r   r   rA  r   r   r   r   r;  N)r<  r=  r   r>   r   s     r%   rA   zhtml_page.<locals>.<genexpr>c  s!     
 	[[%5!678CP`La@b?c d{{3(; < BGGHXYZ[\ ]+,2778QRS T+,2778YZ[ \+,2778Z[\ ]+,2778QRS T	
s   DDr   r   c              3     K   | ]n  }d t        j                  |d          dt        j                  |d          dt        j                  |j                  d      xs d       d|d    d|d	    d
 p yw)r9  r   r@  r   r:  r   r+  rA  r   r   r;  N)r<  r=  r>   )r?   r5  s     r%   rA   zhtml_page.<locals>.<genexpr>r  s      	
 S%789 :S_56 7;;sww'9:AcBC D./0 1345 6	
s   A4A6r   r,  z<h2>r   r?  r   z</h2><table><thead><tr><th>source VA</th><th>value</th><th>exact target</th><th>before predecessor fill</th><th>fill site</th></tr></thead><tbody>z</tbody></table>r'  c              3  N   K   | ]  }d t        j                  |       d  ywz<li>z</li>Nr<  r=  r.  s     r%   rA   zhtml_page.<locals>.<genexpr>  s#     \tDKK-.e4\   #%r  c              3  N   K   | ]  }d t        j                  |       d  ywrG  rH  r.  s     r%   rA   zhtml_page.<locals>.<genexpr>  s#     ]dDT!2 359]rI  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">z2  <title>Save Selector Merge Bridge Matrix</title>z	  <style>zg    :root { color-scheme: dark; font-family: system-ui, sans-serif; background: #101010; color: #eee; }z&    body { margin: 0; padding: 24px; }z[    table { width: 100%; border-collapse: collapse; margin: 12px 0 20px; font-size: 13px; }zi    th, td { border-bottom: 1px solid #303030; padding: 7px 8px; text-align: left; vertical-align: top; }z,    th { background: #181818; color: #ddd; }z    code { color: #d7f0ff; }z
  </style>z</head>z<body>z,  <h1>Save Selector Merge Bridge Matrix</h1>z  <p>route r   r   z; forward merge bridge hits r   z&; direct merge execution bridge found r   z'; encoded merge execution bridge found r  z; promotion status <code>r   z</code>.</p>z   <p>source -> predecessor hits r   z; source -> current hits r   z; predecessor -> current hits r   z; current -> predecessor hits r   z.</p>z  <p>proof found <code>r  z)</code>; failed merge-bridge gates <code>,r  z </code>; missing evidence <code>r  z</code>; evidence refs <code>r	  zm  <p>predecessor fill sites <code>0x004844d0</code>, <code>0x004844d8</code>; current reverse fill-site hits r   z  <p>r  z</p>z  <h2>Contexts</h2>zl  <table><thead><tr><th>selector</th><th>role</th><th>scan range</th><th>field maps</th></tr></thead><tbody>z  </tbody></table>z  <h2>Pair Matrix</h2>z  <table><thead><tr><th>direction</th><th>source range</th><th>target range</th><th>dword hits</th><th>before fill</th><th>fill-site hits</th><th>encoded raw</th><th>encoded promoting</th></tr></thead><tbody>z  <h2>Encoded Anchor Scan</h2>z  <table><thead><tr><th>direction</th><th>classification</th><th>raw scalars</th><th>branch-attached</th><th>modeled control-flow</th><th>promoting</th></tr></thead><tbody>z  <h2>Remaining Proofs</h2><ul>z</ul>z  <h2>Limitations</h2><ul>z</body></html>r@   r   r   r   )r1  ra   r<  r=  rL   r>   )
r2  context_rowsr  encoded_rowshit_sectionsr@   hit_rowsproofsr
  rB  s
            @r%   	html_pagerR  F  s5   99  :& L
 		 7# I 99 
 7#
 
L Lw 
z?a99 	
 6{3B'	
 	
 	4;;s#3456gdkk#N^J_>`=a bU j(*	

& WW\IZA[\\F'']gmF\]]K99 ((( 	( 	#	(
 	Q( 	=( 	( 	r( 	1( 	f( 	t( 	7( 	'( 	( 	(  	!(" 	7#($ dkk'("345WT[[QYIZ=[<\\x  zA  B^  z_  y`  `F  GN  Op  Gq  Fr  rY  Za  bD  ZE  YF  F_  `d  `k  `k  ls  tE  lF  `G  _H  HT  	U%(& +73P+Q*RRkls  uN  mO  lP  Pn  ov  wU  oV  nW  Wu  v}  ~\  v]  u^  ^c  	d'(( "',"7!88abfbmbmnqnvnvw~  @Z  x[  o\  c]  b^  ^~  B  CJ  K\  C]  ^  ~_  _|  }D  }H  }H  I[  }\  |]  ]i  	j)(* 	x9:
;5	B+(. GL12348/(0 	1(2 	w3(4 	5(6 	7(8 	!9(: 	[;(< 	=(> 	?(@ 	)A(B 	wC(D 	E(F 	G(H 
I(J *&7K(L %[M7M(N 	O( ( (r'   c                    |j                  dd       |dz  j                  t        j                  | dd      d       |:|j                  j                  dd       |j                  t        |       d       y y )	NT)parentsexist_ok&save_selector_merge_bridge_matrix.jsonF)rK  r;   )ensure_ascii
separatorsr-   r.   )mkdir
write_textr1   dumpsparentrR  )r2  out_dirhtml_outs      r%   write_outputsr_    s{    MM$M.77CC

7:F D  dT:Ig.A r'   c                    t        j                         } | j                  dt        t        dz         | j                  dt        t
        dz         | j                  dt        t
               | j                  dt               | j                         }t        |j                  j                         t        |j                  g             }t        ||j                  |j                         t        d	|j                  d
z          y )Nz--exer   )typedefaultz--selectorsr   z	--out-dirz
--html-out)ra  z+wrote save selector merge bridge matrix -> rV  )argparseArgumentParseradd_argumentr   ROOTr  
parse_argsr#  rP   
read_bytesr5   rD   r_  r]  r^  print)parserargsr2  s      r%   mainrl    s    $$&F
dD=4HI
D#@[:[\
$<
40D$.."%G '4<<7	7Go8o7p
qrr'   __main__)r$   r8   r   r   )r)   r8   r*   r8   r   r   )r   r   r4   r   r   r   )r$   z
str | Noner   r   )rD   
list[dict]rE   r   r   r   )rP   bytesrQ   rn  rR   r8   r   r   )rQ   rn  rd   r8   re   r8   r   z	list[int])rx   zdict[int, str]r   rn  )
rP   ro  rQ   rn  r   r   r   r   r   r   r   )rP   ro  rD   zlist[dict] | Noner   r   rL  )r2  r   r   r   )r2  r   r]  r   r^  zPath | Noner   r   )r   r   )<__doc__
__future__r   rc  r<  r1   rM   syspathlibr   typingr   r   insertr   __file__resolver\  probe_exe_scene_tablesr   r   %summarize_save_selector_stream_tracesr   r	   rT  rf  r  r  r  r  r   r  r  r  r  r   r`   r   rq   r&   r+   r5   r9   rH   rT   rX   rZ   r\   rk   rs   ry   r   r   r#  r%  r6  rR  r_  rl  __name__r"   r'   r%   <module>r{     sb   L "     
   3tH~--/667 8 > H H~''*
Ul		    
!  
 0F   %j1 34  0 )-.,,<.C<

" 2 .??

 1 *.///---?>>
;0f+8-
4444
M	MM M 	M
 
M`)	)) ) 	)
 
)X[|XvfRBs zF r'   