
    7,Jj0+                    <   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dZd	Zd
ZdZdZdZddgdgdz  z   Zdgdz  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fd"dZd#dZ e!dk(  r e         yy)$zOApply the current-reader branch-state equation to target-side selector aliases.    )annotationsN)Path)Any   outmap1_01amap2_02dz2:0
0x005428bc
0x00542b0c
0x00000210
      c                p    | j                         s|S t        j                  | j                  d            S )Nutf-8encoding)existsjsonloads	read_text)pathfallbacks     O/home/exedev/hwanse/tools/summarize_save_selector_target_alias_state_effects.py	load_jsonr      s*    ;;=::dnngn677    c                    |dz  }t        d      D ]  }|r|dz
  nd}| |   s n t        d      D ]  }|dz   dk\  rdn|dz   }| |   s |S  |S )N   r   r      r   )range)tablestartslot_s       r   simulate_opcode12_selected_slotr$      sv    4<D2Y taxT; 2Y 1H$q$(;K	 Kr   c                    g }t        d      D ]-  }t        | |      }|j                  ||| |   | |   dk(  d       / |S )Nr   r   )	startSlotselectedSlotselectedValuefrontierReaderFallsThrough)r   r$   append)r    rowsr!   selecteds       r   outcome_rowsr-   +   sW    Dr 25%@$"8_*//Q*>	
 	 Kr   c                    | j                  d      xs g D ci c]8  }|j                  d      r%|j                  d      |j                  d      xs g : c}S c c}w )NrootsrootHexfills)get)secondary_fill_rootsrows     r   root_fills_by_hexr5   8   s\     (++G4:779 		CGGG,22  s   =Ac                    | sy| D ch c]  }|j                  d       }}|t        hk(  rt        t              dfS yc c}w )N)Nno-fill-proofvalueHexzall-fills-produce-pass-prefix)Nzunmodeled-fill-values)r2   PASS_FILL_VALUElist
PASS_TABLE)r1   r4   valuess      r   state_table_for_fillsr=   @   sH    $-23ccggj!3F3/""J!@@@( 4s   >c                .   t        |      }g }| j                  d      xs i j                  d      xs g D ]<  }|j                  d      }|j                  |g       }t        |      \  }}|t        |      ng }	|j	                  |j                  d      |j                  d      ||j                  d      |j                  d      xs g t        |      |r|d   xs i j                  d	      nd |r|d
   xs i j                  d	      nd t        |D 
ch c]%  }
|
j                  d      s|
j                  d      ' c}
      |||	rt        d |	D              ndt        d |	D              |	d       ? |D 
cg c]  }
|
j                  d      r|
d    }}
|D 
cg c]  }
|
j                  d      dk(  r|
d    }}
d}i dt        dt        dt        dt        dt        d|D 
cg c]  }
|
j                  d       c}
dt        |      dt        dt        dt        t               d|d|d t        |      d!|d"t        |      d#t        |      dk(  xr t        |      t        |      k(  d$d%g d&|d'S c c}
w c c}
w c c}
w c c}
w )(NtargetAliasGroupaliasesr0   selectorrolerootAddressOrderIndexpublicSampleIdsr   vaHexr8   c              3  &   K   | ]	  }|d      yw)r)   N .0r4   s     r   	<genexpr>z build_summary.<locals>.<genexpr>]   s     1hX[#6R2S1h   Fc              3  ,   K   | ]  }|d    s	d  yw)r)   r   NrH   rI   s     r   rK   z build_summary.<locals>.<genexpr>^   s     (ds#FbBc(ds   
)rA   rB   r0   rC   rD   	fillCountfirstFillHexlastFillHexuniqueFillValuesHexstateEffectStatus(secondaryBranchStateAfterLastModeledFillallStartSlotsPassCurrentReaderpassingStartSlotCountoutcomesrT   rR   r7   aN  Target-side aliases 1:0 and 10:0 both contain only modeled 0x00000210 secondaryBranchState fills, so if either alias actually executes and its state persists into current selector 2:0, the current 0x005428bc writer would select a passing slot for every possible start value before reader 0x00542b0c. Alias 17:0 has no modeled fill rows. This narrows the value side of the branch-state equation across target aliases, but it still does not prove which alias executes, that the state persists across roots, that the gated path reaches the reader, or that map1_01a has a strict source hotspot.sourcetargetcurrentSelectorcurrentWriterVaHexcurrentReaderVaHextargetAliasSelectorstargetAliasCountmodeledPassFillValueHexmodeledPassTablezeroTableControlOutcomes	aliasRows*aliasesThatWouldPassIfExecutedAndPersistedaliasPassCountaliasesWithoutFillProofaliasNoFillProofCountallTargetAliasesHaveFillProofpromotionStatusblocked)zKprove which target-side alias actually executes before current selector 2:0z>prove secondaryBranchState persists into the 0x00542b0c readerz/prove the gated control path reaches 0x00542b0czOfind a strict map1_01a source hotspot or equivalent original transition trigger)remainingProofs
conclusion)r5   r2   r=   r-   r*   lensortedallsumSOURCETARGETCURRENT_SELECTORCURRENT_WRITERCURRENT_READERr9   r;   
ZERO_TABLE)mapset_aliasesr3   fills_by_root
alias_rowsaliasroot_hexr1   r    effect_statusrV   r4   pass_aliasesno_fill_aliasesrj   s                 r   build_summaryr}   I   s   %&:;MJ $$%78>BCCINTRT 99Y'!!(B/4U;}*/*;<&		*-IIf%%*YY/F%G$yy):;ArU=BU1X^009=BE"IO009#)%*g3SVSZSZ[eSf377:+>*g#h!.8=ltc1h_g1h.hz%((dh(d%d 
 	. 7734 	JL  77&'?: 	JO 	0 && 	+ 	n	
 	n 	
 K!4 K 	C
O 	"? 	J 	#L$< 	Z 	5l 	#l+ 	"? 	 _!5  	(_)=)B)ks<GX\_`j\kGk!" 	9#$
 !1 3 +h
& !Ls   J*J:J J*Jc                   ddd| d    d| d    dd| d	    d
| d    dddj                  | d          dd| d    dddj                  | d         xs d dddj                  | d         xs d dd| d    d| d    dd| d   dddddg}| d   D ]j  }|j                  d|d     d!|d"    d#|d$    d!|d%    d#dj                  |d&         xs d d!|d'    d(dj                  |d)         xs d d*|d+    d,       l |j                  g d-       |j                  d. | d/   D               |j                  d       d0j                  |      S )1Nz*# Save Selector Target Alias State Effects z
- route: `rW   z` -> `rX   `z- current writer/reader: `rZ   z` / `r[   z- target aliases: `, r\   z- modeled pass fill: `r^   z6- aliases that would pass if executed and persisted: `rb   -z- aliases without fill proof: `rd   z&- all target aliases have fill proof: rf   z- promotion status: `rg   rj   z## Alias EffectszX| selector | role | root | fills | fill values | pass starts | public samples | status |z3| --- | --- | --- | ---: | --- | ---: | --- | --- |ra   z| `rA   z` | rB   z | `r0   rN   rQ   rU   z/12 | `rD   z` | `rR   z` |)r   z## Remaining Proofsr   c              3  &   K   | ]	  }d |   yw)z- NrH   rJ   items     r   rK   zmarkdown.<locals>.<genexpr>   s     D2dVDrL   ri   
)joinr*   extend)summarylinesr4   s      r   markdownr      s   4

WX&'vgh.?-@B
$W-A%B$C5QeIfHgghi
dii0F(GHIK
 )B!C DAF
@7S  LA  BB  BI  FI  AJ  JK  	L
)$))G<U4V*W*^[^)__`a
09X1Y0Z[
(9 :;1=


b=#E& {# 
#j/"$s6{m4I7GtCP[L\K] ^		#345<=T#F]B^A_ `		#/018S9sCV?W>XX[]	

 
LL01	LLD1B)CDD	LL99Ur   c                <   dj                  d | d   D              }dj                  d | d   D              }dj                  ddd	d
dt        j                  | d          dt        j                  | d          ddt        j                  | d          dt        j                  | d          ddt        j                  dj                  | d                ddt        j                  | d          ddt        j                  dj                  | d         xs d       ddt        j                  dj                  | d         xs d       dd| d    d d!t        j                  | d"          dd#d$t        j                  | d%          d&d'd(|d)d*d
| d#g      S )+Nr   c              3  n  K   | ],  }d t        j                  t        |d                dt        j                  t        |d                dt        j                  t        |d                dt        j                  t        |d                dt        j                  dj                  |d         xs d	       dt        j                  t        |d
                dt        j                  dj                  |d         xs d	       dt        j                  t        |d                d / yw)z<tr><td><code>rA   z</code></td><td>rB   z</td><td><code>r0   rN   r   rQ   r   rU   z/12</td><td><code>rD   z</code></td><td><code>rR   z</code></td></tr>N)htmlescapestrr   rI   s     r   rK   zhtml_page.<locals>.<genexpr>   s%      	[[S_!567 8{{3s6{+,- .[[S^!456 7{{3s;/012 3[[3/D+E!F!M#NO P{{3s#:;<=> ?[[3/@+A!B!IcJK L[[S)<%=!>?@ A		s   D3D5ra   r   c              3  N   K   | ]  }d t        j                  |       d  yw)z<li></li>N)r   r   r   s     r   rK   zhtml_page.<locals>.<genexpr>   s#     \tDKK-.e4\s   #%ri   z\<!doctype html><meta charset="utf-8"><title>Save Selector Target Alias State Effects</title>z<style>body{font-family:system-ui,sans-serif;background:#111;color:#eee;max-width:1100px;margin:24px auto}table{border-collapse:collapse;width:100%}td,th{border:1px solid #444;padding:6px 8px;vertical-align:top}code{color:#9bd4ff}</style>z1<h1>Save Selector Target Alias State Effects</h1>z<ul>z<li>route: <code>rW   z</code> -&gt; <code>rX   z</code></li>z!<li>current writer/reader: <code>rZ   z</code> / <code>r[   z<li>target aliases: <code>r   r\   z<li>modeled pass fill: <code>r^   z=<li>aliases that would pass if executed and persisted: <code>rb   r   z&<li>aliases without fill proof: <code>rd   z(<li>all target aliases have fill proof: rf   r   z<li>promotion status: <code>rg   z</ul>z<p>rj   z</p>z<h2>Alias Effects</h2>z<table><thead><tr><th>selector</th><th>role</th><th>root</th><th>fills</th><th>fill values</th><th>pass starts</th><th>public samples</th><th>status</th></tr></thead><tbody>z</tbody></table>z<h2>Remaining Proofs</h2>)r   r   r   )r   r+   proofss      r   	html_pager      s   99  ;' D WW\IZA[\\F99h 	y;
DKK(9:;;OPTP[P[\cdl\mPnOoo{|
+DKK@T8U,V+WWghlhshst{  }Q  uR  iS  hT  T`  	a
$T[[7CY;Z1[%\$]]ij
'G<U4V(W'XXde
GTXT]T]^e  gS  _T  UU  U\  Y\  I]  H^  ^j  	k
0TYYwOhGi=j=qnq1r0ss  	A
27;Z3[2\\ab
&t{{7;L3M'N&O|\
dkk',/016  	x#
vhe)  r   c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  t	        |       d	       y )NT)parentsexist_okz-save_selector_target_alias_state_effects.jsonF   )ensure_asciiindentr   r   r   -save_selector_target_alias_state_effects.html)mkdir
write_textr   dumpsr   )r   out_dirs     r   write_outputsr      sf    MM$M.>>JJ

7q9D@ K  >>JJ9U\K]hoJpr   c                    t        j                  t              } | j                  dt        t
        dz         | j                  dt        t
        dz         | j                  dt        t
               | j                         }t        t        |j                  i       t        |j                  i             }t        ||j                         t        d|j                  d	z          y )
N)descriptionz--mapset-aliasesz!save_selector_mapset_aliases.json)typedefaultz--secondary-fill-rootsz'save_selector_secondary_fill_roots.jsonz	--out-dirz$wrote target alias state effects -> r   )argparseArgumentParser__doc__add_argumentr   OUT
parse_argsr}   r   ru   r3   r   r   print)parserargsr   s      r   mainr      s    $$9F
*sEh?hi
0tSKtEtu
$<D$%%r*$++R0G '4<<(	0@o1o0p
qrr   __main__)r   r   r   r   returnr   )r    	list[int]r!   intr   r   )r    r   r   
list[dict])r3   dictr   zdict[str, list[dict]])r1   r   r   ztuple[list[int] | None, str])ru   r   r3   r   r   r   )r   r   r   r   )r   r   r   r   r   None)r   r   )"r   
__future__r   r   r   r   pathlibr   typingr   __file__resolver   ROOTr   ro   rp   rq   rr   rs   r9   r;   rt   r   r$   r-   r5   r=   r}   r   r   r   r   __name__rH   r   r   <module>r      s    U "      H~''*
Ul		 VqcBh
S2X
8

)CL@$N 25 qs zF r   