
    UHjg                   <   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mZ ddl	m
Z
 ddlmZmZmZmZ  ee      j#                         j$                  d   Zedz  Zed	z  Zd
ZdZg dZg dZd	g dddg dddg ddgZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&d Z'd!Z(d!Z)d"Z*g d#Z+d$Z,d%d&d'd(d)Z-d*d+d,d-d.d/d0d1d2d.d3d4d5d6d.d7d8d9d:d.d;Z.dsd<Z/dtd=Z0dtd>Z1dud?Z2dvd@Z3dwdAZ4dxdBZ5dydCZ6dzdDZ7d{dEZ8d|dFZ9d}dGZ:d~dHZ;ddIZ<ddJZ=ddKZ>ddLZ?ddMZ@ddNZAddOZBdydPZC	 d	 	 	 	 	 	 	 	 	 ddQZDddRZE	 	 	 	 	 	 	 	 	 	 	 	 ddSZFddTZG	 	 	 	 	 	 	 	 	 	 ddUZHddVZIddWZJddXZKddYZL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZZMdd[ZNe*f	 	 	 	 	 	 	 	 	 dd\ZOdd]ZP	 d	 	 	 	 	 	 	 	 	 dd^ZQdd_ZR	 	 	 	 	 	 	 	 	 	 dd`ZSddaZTddbZUddcZVdddZWddeZXddfZY	 	 	 	 	 	 	 	 	 	 	 	 ddgZZddhZ[	 	 	 	 	 	 	 	 ddiZ\ddjZ]ddkZ^ddlZ_eddf	 	 	 	 	 	 	 ddmZ`ddnZaddoZbefddpZcddqZdeedrk(  r ed        yy)zPAudit whether map1_01a edge candidates are original generic transition triggers.    )annotationsN)Path)Any)find_cns_stringsoffset_to_varead_sectionsva_to_offset   outzHwanse2.exemap1_01amap2_02d)zedge-to-transition-control-flowz runtime-edge-selected-root-proofzstrict-source-hotspot)zRa branch/call from the boundary collision path to the map loader or scene selectorzLa runtime watchpoint showing an edge candidate changes the selected map/rootz:a strict map1_01a source hotspot/event record for map2_02d).textz.rdataz.data)pathfieldszout/runtime_movement.json)actorControllercollisionHelperdirectionBlockBitsobjectOverlapResponsez'out/original_collision_route_audit.json)routeCandidatesruntimeMappingpromotionStatus-C )r   iPC C )r   iC iC iDB i!#@ i5-D i0Y iT i3EW `            )r
      r            i 	  updownleftright)topbottomr$   r%   iHC iC 0x01z,3b c2 0f 85 07 00 00 00 c6 05 33 45 57 00 01)edgeCheckVacaseExitJumpVablockedFallbackLatchHexexpectedHexiC ilC 0x02z,85 c9 0f 85 07 00 00 00 c6 05 33 45 57 00 02iC iC 0x03z,85 c9 0f 85 07 00 00 00 c6 05 33 45 57 00 03iC itC 0x04z,3b c2 0f 85 07 00 00 00 c6 05 33 45 57 00 04)r#   r"   r$   r%   c                    | y d| dS )N0x08x values    @/home/exedev/hwanse/tools/summarize_map1_01a_edge_trigger_gap.pyhex32r7   `   s    }c{    c                    | dz  r| dz
  S | S )Ni   i   r3   r4   s    r6   sign16r:   f   s    #fn57?7%7r8   c                    | dz  r| dz
  S | S )Nl        l        r3   r4   s    r6   sign32r<   j   s    "'*"45;?%?r8   c                4    dj                  | xs g       xs dS )N,-)join)valuess    r6   labels_textrB   n   s    88FLb!(S(r8   c                p    | j                         s|S t        j                  | j                  d            S )Nutf-8encoding)existsjsonloads	read_text)r   fallbacks     r6   	load_jsonrL   r   s*    ;;=::dnngn677r8   c                ^    t        ||      }|t        dt        |       d      | |||z    S )NzVA  is outside raw sectionsr	   
ValueErrorr7   )exesectionsvasizeoffsets        r6   read_atrV   x   s=    (B'F~3uRyk)ABCCvv}%%r8   c                <    t        | |||      j                  d      S )N )rV   hex)rQ   rR   rS   rT   s       r6   	bytes_hexrZ      s    3"d+//44r8   c           	         t        | ||d      d   }|dvry t        j                  dt        | ||dz   d            d   }|dz   |z   S )Nr
   r         <ir   r    )rV   structunpack)rQ   rR   rS   opcoderels        r6   rel32_targetrd      sT    S(B*1-F\!
--gc8R!VQ?
@
CC6C<r8   c                    |\  }}t        ||      }t        ||      }||$t        dt        |       dt        |       d      | || S )Nz	VA range ..rN   rO   )rQ   rR   va_rangestartendstart_offset
end_offsets          r6   range_bytesrl      s^    JE3%0Lh,Jz19U5\N"U3ZL@XYZZ|J''r8   c                    | D ]F  }|j                  d      |k(  st        |d         t        |d         t        |d         z   dz
  fc S  t        d| d      )NnamerS   raw_sizer
   zsection z
 not found)getintrP   )rR   rn   sections      r6   section_rangers      sl     Y;;v$&wt}%s74='9C
@S<T'TWX'XXXY xvZ0
11r8   c                .    |d   | cxk  xr |d   k  S c S )Nr   r
   r3   )r5   rg   s     r6   in_rangeru      s     A;%-(1+----r8   c                b    t        | ||      j                  t        j                  d|            S )N<I)rl   countr`   pack)rQ   rR   rg   r5   s       r6   count_raw_immediaterz      s'    sHh/55fkk$6NOOr8   c                0   |\  }}t        | ||      }g }t        dt        t        |      dz
  d            D ]\  }||   }	|	dvrt	        j
                  d||dz   |dz          d   }
||z   dz   |
z   }||k(  s@|j                  t        ||z                ^ |S )Nr   r   r\   r_   r
   r    )rl   rangemaxlenr`   ra   appendr7   )rQ   rR   rg   targetrh   ri   datahitsindexrb   rc   destinations               r6   rel_target_hitsr      s    JE3sHh/DDq#c$i!mQ/0 .e%mmD$uqy%!)"<=a@ema'#-& KKeem,-. Kr8   c                    |\  }}t        | ||      }t        j                  d|      }g }d}		 |j                  ||	      }
|
dk  r	 |S |j	                  t        ||
z                |
dz   }	=)Nrw   r   r
   )rl   r`   ry   findr   r7   )rQ   rR   rg   r5   rh   _endr   patternr   r   hits              r6   raw_immediate_hitsr      s|    KE4sHh/Dkk$&GDE
ii'7 K 	E%#+&'a r8   c                l   |\  }}t        | ||      }t        |d      }g }t        dt        t	        |      dz
  d            D ]n  }||   dk7  rt        j                  d||dz   |dz          d   }	||z   }
|
dz   |	z   }t        ||      sH|j                  t        |
      t        |      |d       p |S )	Nr   r   r   r]   r_   r
   r    )	callVaHextargetVaHextargetVa)
rl   rs   r|   r}   r~   r`   ra   ru   r   r7   )rQ   rR   rg   rh   ri   r   
text_rangerowsr   rc   call_var   s               r6   direct_call_edgesr      s    JE3sHh/Dx1JDq#c$i!mQ/0 ;$mmD$uqy%!)"<=a@%-1s"
+w =
 	 Kr8   c           	        t        |d      \  }}t        ||      }|y t        |||z         }t        ||      }|t        |       }t	        |t        |t        |                   D ]_  }	| |	   }
|
dk(  rt        ||	dz         xs ||	|z
  z   dz   c S |
dk(  s1|	dz   t        |       k  sCt        ||	dz         xs ||	|z
  z   dz   c S  y )Nr      r
      r   r   )rs   r	   minr~   r|   r   )rQ   rR   start_va	max_bytes
text_starttext_endrj   
max_end_vamax_end_offsetrU   rb   s              r6   first_ret_afterr      s    (7;J(3LXx)34J!(J7NSc.#c(&CD bVT>&1*5a(f|F[:\_`:`aT>fqj3s83&1*5a(f|F[:\_`:`ab r8   c                    t        |d      \  }}t        ||      }t        ||t        z         }t	        | ||t              }|||fS |t        |t        ||            fS )Nr   )rs   r}   r   CALL_GRAPH_MAX_FUNCTION_BYTESr   )rQ   rR   r   r   r   rh   fallback_endret_ends           r6   bounded_function_ranger      sk    (7;J
H%Ex)F!FGLc8U4QRGl""#eS73444r8   c                    t        | ||      }d}t        dt        t        |      dz
  d            D ]#  }||   dk7  r||dz      dz	  dz  }|dv s|dz  }% |S )Nr   r
      r         r   r   )rl   r|   r}   r~   )rQ   rR   rg   r   rx   r   
reg_opcodes          r6   indirect_call_like_countr      sx    sHh/DEq#c$i!mQ/0 ;$519o*d2
QJE Lr8   c                    |y | D ]K  }t        |d         }|t        |d         z   }||cxk  r|k  s.n 1t        |j                  d            c S  y )NrS   ro   rn   )rq   strrp   )rR   rS   rr   rh   ri   s        r6   section_name_for_var      sa    	z ,GDM"c'*-..Bw{{6*++	,
 r8   c                    | rd| vry | j                  dd      \  }}	 t        |d      t        |d      fS # t        $ r Y y w xY w)Nrf   r
      )splitrq   rP   )r5   
start_textend_texts      r6   parse_range_hexr   	  sT    D% ;;tQ/J:r"C"$555 s   6 	AAc                    t        ||      }||dz   t        |       kD  ry t        j                  d| ||dz          d   S )Nr   rw   r   )r	   r~   r`   ra   )rQ   rR   rS   rU   s       r6   read_u32_var     sF    (B'F~!c#h.==s66A:67::r8   c                    |g S g }t        |      D ]=  }t        | |||dz  z         }| |S t        ||      dk7  r |S |j                  |       ? |S )Nr   r   )r|   r   r   r   )rQ   rR   table_vamax_entriesr   r   r5   s          r6   jump_table_targetsr     s|     	D{# C8eai+?@= K x/7:K 	E Kr8   c           	        dt         t        t               dddt        t        t              dddt        t        t              dddt        t        t              dddt
        t        t
              d	dg}t        d
ft        dffD ]8  \  }}| j                  |      }||j                  ||t        |      dd       : |S )Nzmap-loader-function
transition)labelrS   vaHexgroupzscript-runner-functionzselector-table-function-or-dataselected-pointer-globalselected-pointerzcurrent-selector-rootcurrentzsource-map-stringztarget-map-stringroute-string)
MAP_LOADER_FUNCTIONr7   SCRIPT_RUNNER_FUNCTIONSELECTOR_TABLE_FUNCTION_OR_DATASELECTED_POINTER_GLOBALCURRENT_SELECTOR_ROOTSOURCETARGETrp   r   )stringstargetsrn   r   rS   s        r6   encoded_scan_targetsr   -  s     +%./!		
 .(12!		
 71:;!		
 /)23'		
 -'01		
3G@  !45@S7TU e[[>NNr'	  Nr8   c                   |\  }}t        | ||      }g }t               }	t        t        |            D ]  }
||
z   }g }|
dz   t        |      k  rAt	        j
                  d||
      d   }|j                  d|d dfdt        |      |dz   dfg       |
dz   t        |      k  r;t	        j
                  d||
      d   }|j                  dt        |      |dz   df       |D ]  \  }}}}|D ]  }|d	   }|dk(  xr0 |
dz   t        |      k  xr t	        j
                  d||
      d   |k(  }|dk(  r||d
z  k(  xr | }n|d uxr ||z   |k(  }|sc||||f}||	v rn|	j                  |       |j                  |t        |      t        |d          dt        |d          |t        |dz        t        |      |d   |d   t        ||      ddd          |S )Nr   z<Hr   z	abs16-lowzsigned-rel16-site-plus2r   rw   zsigned-rel32-site-plus4rS   i  rf   r
   l    r   r   blockedF)	scanLabel	siteVaHexrangeHexkindvalueHex	targetHextargetLabeltargetGroupsiteSectionr   promotesRouteExecution)rl   setr|   r~   r`   unpack_fromextendr:   r   r<   addr7   r   )rQ   rR   rg   r   r   rh   r   r   r   seenrU   site_varA   	u16_value	u32_valuer   scalarrel_basewidthr   	target_vadirect_exactmatcheskeys                           r6   encoded_target_rows_for_ranger   Z  sF    KE4sHh/DD+.5DD	" *&.9;A:T"**4v>qAIMMiq1*F9,=w{AN  A:T"**4v>qAIMM4fY6GSTVWXY-3 	)D&(E! "4L	QJ O
c$i/O**4v>qAYN 
 ;&$V);<Q\AQG&d2Ux&7HI7UGWi7$;!&!&w#(!#5"6bx{9K8L M  %fz&9 :!&y!1#)'?#)'?#6x#I'0.3 #	*V Kr8   c                   i }i }i }i }| D ]  }|j                  d      }|j                  d      }|j                  d      }|j                  d      }	|r|j                  |d      dz   ||<   |r|j                  |d      dz   ||<   |r|j                  |d      dz   ||<   |	s|j                  |	d      dz   ||	<    | D cg c]  }|j                  d      dk(  s| }
}| D cg c]  }|j                  d      dv s| }}| D cg c]  }|j                  d      d	k(  s| }}| rd
ndt        |       t        |
      t        |      t        |      dt        t        |j	                                     t        t        |j	                                     t        t        |j	                                     t        t        |j	                                     | d d ddS c c}w c c}w c c}w )Nr   r   r   r   r   r
   r   >   r   r   r   z.edge-encoded-route-target-scalars-nonpromotingz/no-encoded-route-target-scalars-in-edge-windows    r   )classificationrawScalarCandidateCount!transitionRawScalarCandidateCount!routeProofRawScalarCandidateCount&selectedPointerRawScalarCandidateCountpromotingCandidateCounttargetGroupCountstargetLabelCounts
kindCountsscanLabelCounts
sampleRowsr   )rp   r~   dictsorteditems)r   group_countslabel_countskind_countsscan_label_countsrowr   r   r   
scan_labeltransition_rowsroute_proof_rowsselected_pointer_rowss                r6   encoded_target_summaryr    s   #%L#%L"$K(* U&&wwvWW[)
"."2"25!"<q"@L"."2"25!"<q"@L +a 81 <K,=,A,A*a,PST,Tj)U '+Uscggm.D.TsUOU'+esww}/EId/dee,0aSCGGM4JN`4`Saa  =B#&t9-0-A-01A-B256K2L#$!&););)=">?!&););)=">?6+"3"3"567'8'>'>'@ AB3Bi$!  Veas$   G"G"%G'>G'G,"G,c           	        g }t               }|D ]  }|j                  d      }|j                  d      xs d}|s,t        | ||||      D ]v  }	t        |	j                  d            t        |	j                  d            t        |	j                  d            f}
|
|v rU|j	                  |
       |j                  |	       x  t        |      S )Nr|   r   r   r   r   )r   rp   r   r   r   r   r  )rQ   rR   rangesr   r   r   itemrg   r   r   r   s              r6   encoded_scan_for_rangesr    s     D&)eD 88G$!,W0h%QXY 		CCGGFO$CGGK()CGGK()C
 d{HHSMKK		 "$''r8   c                    t               }g }| D ]]  }|j                  d      }|j                  d      xs d}|s,|d   |d   |f}||v r<|j                  |       |j                  |       _ |S )Nr|   r   windowr   r
   )r   rp   r   r   )r   r   unique_rowsr   rg   r   r   s          r6   unique_window_rangesr	    s    &)eDK 	 777# ,H{HQK/$;3	  r8   c                H    t        | t              ryt        | t              ryy)Nzactor-controller-localzcollision-helper-localoutside-edge-handler)ru   ACTOR_CONTROLLER_RANGEACTOR_COLLISION_HELPER_RANGE)r   s    r6   edge_handler_target_classr    s!    	12'	78'!r8   c                x    i }| D ]2  }|st        t        |d            }|j                  |d      dz   ||<   4 |S )Nr   r   r
   )r  rq   rp   )target_hexescounts
target_hextarget_classs       r6   jump_table_target_class_countsr    sN    F" ?
0Z1DE%zz,:Q>|	?
 Mr8   c           	        g }| D ]~  }|j                  d      dk7  r|j                  d      xs g }t        |      }|j                  dd      }|j                  d      xs g }|j                  d      xs g }|j                  i d|j                  d      d	|j                  d	      d
|j                  d
      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      xs dd|j                  d      xs g d|dt        |      xr |dk(  d|d|dt	        |      d|dt	        |      dt	        |      t	        |      z           |S )NoperandKindindexed-jump-tableindexedJumpTableTargetHexesr  r   transitionTableLabelsrouteTableLabelsfunctionLabeldepthr   instructionVaHexr   indexedJumpTableVaHexindexedJumpTableSectionindexedJumpTableEntryCount!indexedJumpTableSampleTargetHexestargetClassCountsallTargetsLocalToEdgeHandlersoutsideEdgeHandlerTargetCounttransitionTableLabelCountrouteTableLabelCount transitionOrRouteTableLabelCount)rp   r  r   boolr~   )r   
audit_rowsr   r  class_countsoutside_counttransition_labelsroute_labelss           r6   indexed_jump_table_audit_rowsr.    s   J 77=!%99ww<=C5lC$(()?CGG$;<Bww128b 
SWW_5
SWWW%
 
+
 (: ;	

 CGGFO
 $SWW-D%E
 &sww/H'I
 )#''2N*O*TST
 09\1]1cac
  
 ,T,-?-VMUVDV
 ,]
 $%6
 (->)?
 
  #C$5!
" /4E0F\IZ0Z#
 	6 r8   c                  $% |\  }}t        | ||      }	t        t        |j                  t              |j                  t
              d}
t        t        t        d}g }t        dt        t        |	      dz
  d            D ]a  }|	|   dk7  r|	|dz      }|dz	  dz  }|dvr"|d	z	  dz  }|dz  }|d
z   }d }d }d }d}d }d $d }|dk7  r*|dk(  r%|t        |	      k  r|	|   }|dz  }|dz	  dz  }|dz  }|dk(  r|dk(  s
|dk(  r|dk(  rd}n|dk(  rd}n|d
k(  rd}|rj||z   t        |	      k  rY|	|||z    }|dk(  rt        j                  d|      d   }n2t        j                  d|      d   }|dk(  r|dk(  r|dk(  r|dk7  r|}n|$$t        | |$      nd %t        | ||      }t!        $fd|j#                         D        d       }t!        %fd|j#                         D        d       }t%        |j#                         D ch c]  \  }}||v r| c}}      }t!        $fd|
j#                         D        d       } t!        %fd|
j#                         D        d       }!t%        |
j#                         D ch c]  \  }}|||v r| c}}      }"|dk(  rd}#n|d}#n$d}#nd}#|j'                  i d|d|d|dt)        |d          dt)        |d          dt)        ||z         d|d
k(  rdndd d!|d"d#|d$|d%|d!|d"nd d&|#d't+        |t,              r|dk\  rt)        |      n t+        |t,              rd(t/        |      d)nd d*t)        $      d+t1        |$      d,t)        |      d-t1        ||      d.t        |      |D cg c]  }t)        |       c}|d d/ D cg c]  }t)        |       c}t)        %      t1        |%      |||| |!|"d0
       d |S c c}}w c c}}w c c}w c c}w )1N)selectedPointerGlobalcurrentSelectorRootsourceMapStringtargetMapStringmapLoaderFunctionscriptRunnerFunctionselectorTableFunctionOrDatar   r
   r   r   r   r   r!   r   r   r    z<brw   c              3  4   K   | ]  \  }}|k(  s|  y wNr3   .0rn   r5   absolute_memory_vas      r6   	<genexpr>z*indirect_call_like_rows.<locals>.<genexpr>^  s     _kdE5L^C^T_   c              3  4   K   | ]  \  }}|k(  s|  y wr9  r3   r;  rn   r5   resolved_pointers      r6   r=  z*indirect_call_like_rows.<locals>.<genexpr>b  s     ]kdE5L\C\T]r>  c              3  6   K   | ]  \  }}|	|k(  r|  y wr9  r3   r:  s      r6   r=  z*indirect_call_like_rows.<locals>.<genexpr>k  s+      D%$2D)D    c              3  6   K   | ]  \  }}|	|k(  r|  y wr9  r3   r@  s      r6   r=  z*indirect_call_like_rows.<locals>.<genexpr>s  s+      D%$2B)B rC  registerr  absolute-memorycomputed-memoryr  r  r   r   rf   r  r   calljmpmodRmHexr1   02xmodrmsibHexr  displacementHexz-0xxabsoluteMemoryVaHexabsoluteMemorySectionr  r  r   r   )
r  r!  resolvedPointerHexresolvedPointerSectiontransitionOperandLabeltransitionResolvedLabelr  routeOperandLabelrouteResolvedLabelr  )rl   r   r   rp   r   r   r   r   r   r|   r}   r~   r`   ra   r   r   nextr   r   r   r7   
isinstancerq   absr   )&rQ   rR   r   rg   r   r  r   rh   r   r   route_valuestransition_targetsr   r   modrmr   rL  rM  cursorsibsib_base	sib_index	disp_size
disp_valueindexed_table_varawtable_targetstransition_operand_labeltransition_resolved_labelrn   r5   transition_table_labelsroute_operand_labelroute_resolved_labelroute_table_labelsoperand_kindr<  rA  s&                                       @@r6   indirect_call_like_rowsro    s?    KE4sHh/D!84";;v.";;v.	L 1 6'F
 Dq#c$i!mQ/0 v;$UQYqjD(
V#zT!T\		
!!8aFSY$6v,CTzHT)IaKF!8Qw27x1}	AXIAXI)+s4y8vv	12CA~#]]45a8
#]]45a8
!8Qw8q=Y!^+5(-7* "- X'9: 	
 +3:JK#'_%7%=%=%?_$
  %)]%7%=%=%?]%
! #)1779*
e% *
 #
 ##/#5#5#7
 
  $#/#5#5#7
  
 $+113%
e Um%; %
 
 !8%L)/L+,L,L 
U
U
 D
 5!-.bx{1C0DE	

 eem 4
 jAoF5
 "U3K(
 3
 "
 3s)nT
 <
 Jz34OT^bcTcuZ0-7
C-H#c*oa()d
 "5);#<
  $%8CU%V!
" $U+;%<#
$ &':8EU'V%
& )#m*<'
( GT+TUE%L+TLYZ][]L^1_5%,1_"'(8"9&9(DT&U&>'@%<!4"6 2;
 	qvn KC*
*%
B ,U1_s   ?O'5O-O3+O8c                T   | D cg c]  }|j                  d      dk(  s| }}| D cg c]  }|j                  d      dk(  s| }}t        |      }|D cg c]   }|j                  d      xs g D ]  }|r| " }}}|D cg c]  }t        |d       }}i }|D ]%  }	t        |	      }
|j                  |
d      dz   ||
<   ' |j                  dd      }| D cg c]  }|j                  d	      s| }}| D cg c]7  }|j                  d
      s"|j                  d      s|j                  d      r|9 }}| D cg c]7  }|j                  d      s"|j                  d      s|j                  d      r|9 }}| D cg c]  }|j                  d      dv r| }}t	        d |D              }t        |xs |      }|rd}n| rd}nd}i d|d|dt        |       dt        |      dt        |      d|dt        |      dt        t        |            d|d|dt        |      xr |dk(  d |d!t        |      d"t        |      d#t        |      d$t        |      d%|d d |d d | d d& |sd'd)S d(d)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 )*Nr  rF  r  r  r   r   r
   r  rS  rU  rV  r  rW  rX  r  >   rE  rG  c              3  F   K   | ]  }|j                  d       xs d  yw)r   r   Nrp   r;  r   s     r6   r=  z0indirect_call_graph_rejection.<locals>.<genexpr>  s"     e3CGG$@AFQFe   !z/bounded-indirect-callgraph-transition-candidatez6bounded-indirect-callgraph-no-static-transition-targetz1bounded-indirect-callgraph-no-indirect-candidatesr   
proofFoundcandidateCount"staticAbsoluteMemoryCandidateCountindexedJumpTableCandidateCountr   indexedJumpTableTargetCount!indexedJumpTableUniqueTargetCount!indexedJumpTableTargetClassCountsindexedJumpTableAuditRows-indexedJumpTableAllTargetsLocalToEdgeHandlers-indexedJumpTableOutsideEdgeHandlerTargetCountresolvedPointerCandidateCount!unresolvedRegisterOrComputedCounttransitionTargetHitCountrouteImmediateHitCounttransitionHitRowsr   a  The indirect call/jump-like opcodes reachable from the actor movement/collision ranges have no static absolute or resolved target matching the map loader, script runner, selector table, selected pointer, current root, or route map strings. Their indexed jump-table entries stay inside the actor-controller/collision-helper edge handlers, so they are local movement branches rather than map-transition proof.zAt least one indirect call/jump-like opcode has a static route or transition target candidate and must be reviewed before generic edge-trigger promotion.)routeHitRowsr   
conclusion)rp   r.  rq   r  sumr(  r~   r   )r   r   static_absolute_rowsindexed_table_rowsindexed_table_audit_rowsr  indexed_table_target_hexesindexed_table_target_vas!indexed_table_target_class_countsr   r  !outside_edge_handler_target_countresolved_rowstransition_hits
route_hitsunresolved_rowstable_entry_countproof_foundr   s                      r6   indirect_call_graph_rejectionr    s   +/_C377=3IM^3^C__)-`#1GK_1_#``<=OP &"''"?@FB"  	"" " Gaa
J 3aa8:%- 
	0;-11,BQF 	*,7

 )J(M(M	)% %)JSCGG4H,ISJMJGG,-ww01ww./	 	O  77&'3773G+HCGGTfLg 	J 
 77=!%DD 	O  eRdee4*5KJ	QL"."k" 	#d)" 	-c2F.G	"
 	)#.@*A" 	%&7" 	&s+C'D" 	,S5M1N-O" 	,-N" 	$%=" 	8#$O)Ja)O" 	89Z" 	(]);"  	,S-A!"" 	#C$8#"$ 	!#j/%"& 	_Sb1'"( #3B3Bi $/" ">F?" "[ ``"  b Ks?   JJJJ%JJJ3J=<J?<J J%c                
  ' dt        t        d         t        t        d          dt        t        d          t        ddt        t        d         t        t        d          dt        t        d          t        dg}t        t        t
        d}g }t               }t               }g }	g }
g }g }g }d}d}d}d}|D ]$  }|d   }|j                  |d	   d||d	   gd
       & |r|j                  d      }|d   }||v r|j                  |       |d   }t        ||      }t        | |||      }|j                  d      xs i j                         D cg c]  \  }}|D ]  }||d	  }}}}t        |j                  dd      |j                  dd      |j                  dd      |j                  dd      g      }|r,|j                  |d	   ||j                  d      |d   |d       |ro|j                  |d	   ||j                  d      |d   |j                  dd      |j                  dd      |j                  dd      |j                  dd      d       |t        |      z  }||z  }t!        | ||||d	   ||d         }|j#                  |       |t        |      z  }|	j                  |d	   ||j                  d      |d   t        t%        | ||            t        |      |d       ||k\  rt%        | ||      D ]  }t'        |d         't)        'fd|j                         D        d'd      }|
j                  |d	   |dz   |d   |d   |g |d   |d    d|d    d       '|v rs|j                  '       |j                  ||dz   t+        | |'      g |d   |d    d|d    d
        |r|
D ch c]  }t'        |d   d       } }|j                         D !ci c]
  \  }}!||!| v  }"}}!t-        |      }#t/        |"j1                               xs |dkD  xs |dkD  xs |#d    d!u }$|$rd"nd#}%i d$|%d |$d%|d&|d'|D &!cg c],  }|j                         D &!ci c]  \  }&}!|&dk7  s|&|! c}!}&. c}!}&}d(t        |	      d)t        |
      d*|"d+t        d, |"j1                         D              d-|d.|d/|d0|#d1|#d$   d2|#d    d3|#d4   d5|#d6   i d7|#d8   d9|#d:   d;|#d<   d=|#d>   d?|#d@   dA|#dB   dC|#dD   dE|#dF   dG|#dH   dI|#dJ   dK|#d-   dL|#d.   dM|d dN dO|d dN dP|
d dQ dR|	dS|	d dQ dT|$sdUiS dViS c c}}}w c c}w c c}!}w c c}!}&w c c}!}&}w )WNactor-controllerr   rf   r
   )r   
startVaHexr   r|   collision-helperr4  r|   r   )r   r  r|   r   r  transitionLikeDirectRelHits)r   r   #selectedPointerGlobalImmediateCount!currentSelectorRootImmediateCountsourceMapStringImmediateCounttargetMapStringImmediateCountr   r   )r   r  r   r   r   )r   r  r   r   r  r  r  r  )r   r  r   r   directCallCounttransitionLikeDirectRelHitCountr  r   c              3  4   K   | ]  \  }}|k(  s|  y wr9  r3   )r;  rn   r5   r   s      r6   r=  z-direct_call_graph_evidence.<locals>.<genexpr>m  s     O+$EY<NOr>  sub_r2   r   r   z->)fromr  r   r   r   r   r   ru  Tz&direct-callgraph-transition-path-foundz+bounded-direct-callgraph-no-transition-pathr   maxDepthobservedMaxDepth
rootRangesreachableFunctionCountdirectCallEdgeCounttransitionTargetReachabilitytransitionTargetReachableCountc              3  &   K   | ]	  }|sd   yw)r
   Nr3   )r;  r5   s     r6   r=  z-direct_call_graph_evidence.<locals>.<genexpr>  s     -cE]ba-cs   r  r  indirectCallLikeByteCountindirectCallGraphRejection(indirectCallGraphRejectionClassificationindirectCallGraphProofFoundindirectCallGraphCandidateCountrv  3indirectCallGraphStaticAbsoluteMemoryCandidateCountrw  /indirectCallGraphIndexedJumpTableCandidateCountrx  +indirectCallGraphIndexedJumpTableEntryCountr   ,indirectCallGraphIndexedJumpTableTargetCountry  2indirectCallGraphIndexedJumpTableUniqueTargetCountrz  2indirectCallGraphIndexedJumpTableTargetClassCountsr{  *indirectCallGraphIndexedJumpTableAuditRowsr|  >indirectCallGraphIndexedJumpTableAllTargetsLocalToEdgeHandlersr}  >indirectCallGraphIndexedJumpTableOutsideEdgeHandlerTargetCountr~  .indirectCallGraphResolvedPointerCandidateCountr  2indirectCallGraphUnresolvedRegisterOrComputedCountr  )indirectCallGraphTransitionTargetHitCount'indirectCallGraphRouteImmediateHitCountr     routeImmediateHitRowssampleCallEdgesr   reachableFunctionssampleReachableFunctionsr  am  A bounded direct-call graph from the actor-controller and collision-helper ranges did not reach the map loader, script runner, selector table, selected-pointer global, current root, or route map strings. The indirect call/jump-like candidates in the same reachable graph also have no static route or transition target; computed operands still require runtime proof.zA bounded direct-call graph found transition-like evidence. This must be reviewed before any generic edge trigger can be promoted.)r7   r  r  r   r   r   r   r   popr   r}   direct_ref_countsrp   r   r  r~   ro  r   r   rq   rY  r   r  anyrA   )(rQ   rR   r   	max_depthrootsr   queuevisited_rangesvisited_targetsreachable_functions
call_edgestransition_hit_rowsroute_immediate_hit_rowsindirect_rowsindirect_counttransition_target_hit_countroute_immediate_hit_countmax_observed_depthroot
root_ranger  rg   r  refsrn   r   va_hexr  route_immediate_countrange_indirect_rowsedger   reachable_target_vasr5   target_reachabilityindirect_rejectionr  r   r   r   s(                                          @r6   direct_call_graph_evidencer    s    ( 6q 9: !7!:;<BuE[\]E^?_>`a+		
 ( <Q ?@ !=a!@AB"UKghiKjEkDlm1		
E 1 6'FG
 E+.5N #OJ!MN"# ! ']
']']O	
 	 yy|=~%8$W !3U; hB  $xx(EFL"SSU
 
d
  &1
1
 

 !$HH:A>HH8!<HH4a8HH4a8	%
 ! &&g HHZ0V'(  !$++g HHZ0V7;xx@egh7i59XX>acd5e15:Y[\1]15:Y[\1]	- 	 	$s?';;#!%::!5ML
 	01#122""'],L"#4S(H#MN/2?/C&;$
 	 I%c8X> 	DD,-IOOyo&E W!+.#M2$V$v,V4+<*=R]@S?T(UV  O+	*LL/XyIV$v,V4+<*=R]@S?T(UV	 #	 r  	D$  #==?D% 	e+++  7}E&&() 	4&*	4$q(	4 l+t3	   	1: 
G.GkG 	IG 	.	G
 	
 
 +/**,IJC#.S%ZI
G 	!#&9":G 	s:G 	'(;G 	)#-c=P=W=W=Y-c*cG 	#$?G 	!";G 	$^G  	%&8!G" 	34FGW4X#G$ 	&'9,'G%G& 	*+=>N+O'G( 	>?Q0@
)G. 	:;M,<
/G4 	67I(8
5G: 	78J)9
;G@ 	=>P/?
AGF 	=>P/?
GGL 	56H'7
MGR 	IJ\;K
SGX 	IJ\;K
YG^ 	9:L+;
_Gd 	=>P/?
eGj 	45GHb5ckGl 	23EF^3_mGn 	0"5oGp 	 !9#2!>qGr 	:cr?sGt 	1uGv 	#$7$<wGx 	 `{G GH4IG GE
\, J
s0   U&U-9U2 U>8U8U8U>8U>c                   i d| d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d	|j                  d	      d
|j                  d
      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      |j                  d      xs i |j                  d      |j                  d      |j                  d      |j                  d      dS )Nr  r   ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  rr  )r  evidences     r6   compact_call_graph_depth_rowr    s   +I+(,,'78+ 	hll<0+ 	HLL);<	+
 	!(,,/G"H+ 	x||,AB+ 	)(,,7W*X+ 	#HLL1K$L+ 	!(,,/G"H+ 	$X\\2M%N+ 	3HLL65
+ 	&x||4Q'R+ 	*8<<8Y+Z+  	:8<<=<
!+& 	6x||98
'+, 	7:9
-+2 	=hll@?
3+8 ?Gll@?
 ?JR,,LK
 KS,,LK
 6>\\76
 4<<<54
Q+ +r8   c                \   t        t        |xs t                    }|D cg c]  }t        |t	        | |||             }}t        d |D        |r|d   ni       g dt        fdD              |D cg c]/  }t        |j                  d      t              r|d   t        k\  r|1 }}t        d |D              }	t        |      xr t        fd|D              }
|rt        |      nd }d	j                  d
 |D              xs d}|t        ||	|
|d| ddS c c}w c c}w )N)r  c              3  R   K   | ]  }|j                  d       t        k(  s| ! yw)r  N)rp   CALL_GRAPH_MAX_DEPTHrs  s     r6   r=  z6direct_call_graph_depth_sensitivity.<locals>.<genexpr>  s!     L
 37K KLs   '')r  r  r  r  r  r  r  r  r  r  r  c              3  @   K   | ]  }j                  |        y wr9  rr  )r;  r   default_rows     r6   r=  z6direct_call_graph_depth_sensitivity.<locals>.<genexpr>.  s     Ac[__S)A   r  c              3  l   K   | ],  }|j                  d       du xr |j                  d      du  . yw)ru  Fr  Nrr  rs  s     r6   r=  z6direct_call_graph_depth_sensitivity.<locals>.<genexpr>3  s>       	&Z3773P+QUZ+ZZs   24c              3  N   K   | ]  t        fd D              k(    yw)c              3  @   K   | ]  }j                  |        y wr9  rr  )r;  r   r   s     r6   r=  z@direct_call_graph_depth_sensitivity.<locals>.<genexpr>.<genexpr>8  s     2scggcl2r  N)tuple)r;  r   baselinestable_keyss    @r6   r=  z6direct_call_graph_depth_sensitivity.<locals>.<genexpr>7  s)      < 	2k22h><s   !%r>   c              3  2   K   | ]  }t        |        y wr9  )r   )r;  r  s     r6   r=  z6direct_call_graph_depth_sensitivity.<locals>.<genexpr><  s     A#e*A   r?   z"Depth sensitivity over max depths z found no transition target, route immediate, or indirect route target. Counts are stable at and beyond the default depth, so increasing the bounded call-graph depth does not make the edge candidates promotable.)depthsCheckeddefaultDepthmaxDepthCheckedproofAbsentAcrossCheckedDepths#countsStableAtAndBeyondDefaultDepthdefaultDepthRowr   r  )r   r   #CALL_GRAPH_DEPTH_SENSITIVITY_DEPTHSr  r  rY  r  rZ  rp   rq   r  allr(  r}   r@   )rQ   rR   r   depthschecked_depthsr  r   r   rows_at_or_beyond_defaultproof_absentcounts_stablemax_checked
depth_textr  r  r  s                @@@r6   #direct_call_graph_depth_sensitivityr    sk    C M*MNON (
 	 	%&sHgS	
D  LLRbKK A[AAH!cggj)3/C
OG[4[ 	! !   L 23  <,< 9M *8#n%TKA.AAHSJ',&*6/<&0 =U U O2!s    D$<4D)c                p    t        | |      j                         D ci c]  \  }}|d d | c}}S c c}}w )N)r   r   )rQ   rR   rS   rn   s       r6   cns_string_vasr  M  s4    *:3*I*O*O*QRhb$D"IrMRRRs   2c                <   |j                  t              }|j                  t              }dt        fdt        fdt
        fg}t        |d          dt        |d          t        t        | ||t                    t        t        | ||t                    t        t        | ||t
                    |D ci c]  \  }}|t        | |||       c}}t        | ||t              t        | ||t              |rt        | |||      nd|rt        | |||      d	S dd	S c c}}w )Nr5  r6  r7  r   rf   r
   )	r   mapLoaderDirectRelHitCountscriptRunnerDirectRelHitCountselectorTableDirectRelHitCountr  r  r  r  r  )rp   r   r   r   r   r   r7   r~   r   rz   r   r   )	rQ   rR   r   rg   source_stringtarget_stringr]  rn   r   s	            r6   r  r  Q  sI    KK'MKK'M	12	!78	&(GH Xa[)*"U8A;-?,@A&)/#xSf*g&h),_S(HVl-m)n*-C85TU+

 !3(
f /#x6BB(
 0C8%<0
 .A8%:.
 LYXxG^_ LYXxG+ * _`+ (
s   3Dc                `   t        ||      }|}|t        |      t        |      dddd dS d}d }|dk\  r,| |dz
  | dk(  r!d}|dz
  }|dz   t        |       k  rg| |dz      }n^|d	k\  r| |d	z
     d
k(  rd}|d	z
  }nF|d	k\  r| |d	z
     dk(  rd}|d	z
  }n.|dk\  r| |dz
  | dk(  rd}|dz
  }n|dk\  r| |dz
  | dv rd}|dz
  }t        d   |cxk  rt        d	   k  rn nd}n!t        d   |cxk  rt        d	   k  rn nd}nd}t        |      t        |      t        | ||d      |||d|ddS d dS )N unknown)referenceVaHexr  instructionBytesHexr   r|   r   	immediater   s   zwrite-immediate-u8r   r
      zread-al   zwrite-alr   s   zread-movzx-u8)s   s   zread-byte-to-regr   r  r  
other-text   r1   rK  )r	   r7   r~   r  r  rZ   )rQ   rR   ref_varU   instruction_var   r5   
range_names           r6   classify_latch_referencer  x  s   (F+FN~#Fm %n 5#%
 	
 DE{s6A:f-<#!A:C 
OE	1VaZD0!	1VaZD0!	1VaZ/?B!	1VaZ/3MM!!a FF-CA-FF'
	%a	(F	T5QRS5T	T'
!
-!.1(hK(-(9bs$  @D r8   c           	         t        | j                  dd      | j                  dd      | j                  dd      | j                  dd      g      S )Nr  r   r  r  r  )r  rp   	near_refss    r6   r  r    sP    ;Q?91=5q95q9	  r8   c                h    t        d | j                  d      xs i j                         D              S )Nc              3  2   K   | ]  }t        |        y wr9  r~   )r;  rA   s     r6   r=  z'transition_rel_count.<locals>.<genexpr>  s       	Fr  r  )r  rp   rA   r  s    r6   transition_rel_countr    s4      }}%BCIrQQS  r8   c                2   t        t        | j                  d      xs d      d      }t        |      }t	        |      }|dk(  rd}d}n*d|cxk  rdk  rn nd	}d
}nd|cxk  rdk  rn nd	}d}nd}d}i | |||j                  d      |||dkD  xs |dkD  dS )Nr  0x0r   iUC  movement-state-initializer-resetzDwrites direction latch 0x00 while resetting actor/list display statei]C iC actor-state-continuation-readzLcompares latch against 0x05..0x08 and selects actor +0x68 state 0x07 or 0x03iC iC zLcompares latch against 0x05..0x08 and selects actor +0x68 state 0x08 or 0x04!unclassified-other-text-referencez*not classified by the current static auditr   r   )consumerClassobservedEffect	windowHextransitionLikeWindowRelHitCountrouteImmediateWindowHitCounttransitionConsumerProofFound)rq   r   rp   r  r  )r   r  r  local_transition_countlocal_route_countconsumer_classeffects          r6   "classify_latch_other_text_consumerr-    s    SWW%78AEBBGN1)<-i8#;W	~	3	38_	~	3	38_<=
' ]]:.+A(9(>(B([FWZ[F[ r8   c                X   t        |d      \  }}t        | |||f      }t        j                  dt              }g }d}t               }	d}
g }g }i }i }g }	 |j                  ||      }|dk  rn||z   }t        | ||      }t        ||t        z
        t        ||t        z         f}t        | |||      }|j                  dt        |       ||j                  d      d       |j                  d      xs i j!                         D ]  }|D ]  }|	j#                  |         t%        |      }|
|z  }
|s)t'        |j                  di       j!                               r'|j                  i ||j                  d      |d       |d	   d
k(  r|j                  t)        ||             |j                  |       |j                  |d   d      dz   ||d   <   |j                  |d	   d      dz   ||d	   <   |dz   }t+        d |j-                         D              }t+        d |j-                         D              }t+        d |D              }t+        d |D              }t+        d |D              }t+        d |D              }t+        d |D              }t+        d |D              }i dt        t              dt        |       dt        |       dt        dt        dt/        |      d|d|d|j                  d
d      dt1        t3        |j-                                     dt1        t3        |j-                                     d t/        |	      d!t3        |	      d"|
d#|d$|d%|d&|||||||dk(  xr% |dk(  xr t/        |      |j                  d
d      k(  |d d' d(d)S )*Nr   rw   r   zdirection-latch:r   r   r|   r   r  )r%  nearReferencesr|   r  r   r
   c              3  H   K   | ]  \  }}|j                  d       r|  yw)readN
startswithr;  r   rx   s      r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>   s(      $??6" 	    "c              3  H   K   | ]  \  }}|j                  d       r|  yw)writeNr3  r5  s      r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s(      $??7# 	r6  c              3  F   K   | ]  }|j                  d       du rd  yw)r(  Tr
   Nrr  rs  s     r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s*      /7712d: 	
/rt  c              3  H   K   | ]  }|j                  d       dk(  rd  yw)r#  r   r
   Nrr  rs  s     r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s*      !77?#'II 	
!r6  c              3  H   K   | ]  }|j                  d       dk(  rd  yw)r#  r!  r
   Nrr  rs  s     r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s*      ,77?#'FF 	
,r6  c              3  H   K   | ]  }|j                  d       dk(  rd  yw)r#  r"  r
   Nrr  rs  s     r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s*      (77?#'JJ 	
(r6  c              3  @   K   | ]  }|j                  d d        yw)r'  r   Nrr  rs  s     r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s$      , 	.2,   c              3  @   K   | ]  }|j                  d d        yw)r&  r   Nrr  rs  s     r6   r=  z5direction_latch_reference_evidence.<locals>.<genexpr>  s$      1 	1151r>  directionLatchGlobalHextextRangeHexrf   windowBeforeByteswindowAfterBytesdirectRefCountreadRefCountwriteRefCountotherTextRefCountbyKindbyRanger&  !transitionLikeWindowRelHitVaHexesr'  routeWindowHitRowswindowRangesallOtherTextReferences otherTextTransitionConsumerCount   a  All direct .text references to the direction latch were scanned with local windows. None of those windows contains a direct map-loader/script-runner/selector-table branch or a selected-pointer, current-root, source-map, or target-map immediate. The refs outside the bounded helper/controller ranges are one movement-state reset and two nearby actor-state compare clusters that select actor +0x68 states, not a map transition consumer. Direction latch use therefore remains actor movement/collision state, not edge-transition proof.)otherTextResetCount(otherTextActorStateContinuationReadCountotherTextUnclassifiedCount%otherTextRouteImmediateWindowHitCount(otherTextTransitionLikeWindowRelHitCount*otherTextReferencesClassifiedNonTransitionsampleReferencesr  )rs   rl   r`   ry   DIRECTION_LATCH_GLOBALr   r   r  r}   LATCH_WINDOW_BEFOREr   LATCH_WINDOW_AFTERr  r   r7   rp   rA   r   r  r  r-  r  r   r~   r   r   ) rQ   rR   r   r   r   textr   r  r   transition_rel_hit_vas route_immediate_window_hit_countroute_window_hit_rowswindow_rangesby_kindby_rangeother_text_audit_rowsr   r  r   r  r  r   r  row_route_immediate_count
read_countwrite_count$other_text_transition_consumer_countother_text_reset_count!other_text_actor_state_read_countother_text_unclassified_count!other_text_route_window_hit_count&other_text_transition_window_hit_counts                                    r6   "direction_latch_reference_evidencerk    s   (7;JsHz8&<=Dkk$ 67GDE U'($M G!H
ii'7c!&sHf=
F%889&#556
 &c8WfE	'f7!j1
 	
 ]]#@AGROOQ 	3D 3&**623	3 %:)$D!(,EE($IMM:WY[,\,c,c,e(f!(( **&]]:6"+* 
 w<<'!(()KCQZ)[\C&{{3v;:Q>F!)c'lA!>!BWaA B  !( J  !( K ,/ /*/ ,( ! !*!  ), ,*, )% %( (*( %! ), ,(, )% .1 1(1 .*%!5)?#@%5,-Rh/@A% 	0% 	.	%
 	#d)% 	
% 	% 	X\\,:% 	$vgmmo./% 	4x~~/01% 	*3/E+F% 	,V4J-K% 	'(H% 	3% 	%  	!"7!%" 	+,P#%$  64U&C1R4Z0A5 L-2L)*hll<.KK "IC=% %r8   c                    t        |d      }t        | |||      }t        | ||t              }t        | ||t              }t        |d          dt        |d          |t        |      |d d t        |      |d d ddS )Nr   r   rf   r
   r  a#  A whole-.text direct-reference scan finds actor movement/collision entry points, but no direct map-loader or selector-table branch tied to the edge path. The few direct script-runner calls are outside the actor movement/collision ranges and do not carry the current source/target immediates.)rA  directReferences actorControllerDirectRelHitCount"actorControllerDirectRelHitVaHexes collisionHelperDirectRelHitCount"collisionHelperDirectRelHitVaHexesr  )rs   r  r   ACTOR_CONTROLLER_FUNCTIONACTOR_COLLISION_HELPER_FUNCTIONr7   r~   )rQ   rR   r   r   direct_refsactor_controller_hitscollision_helper_hitss          r6   $global_transition_reference_evidencerw  H  s    x1J#C7JGK+C:G`a+C:Gfg A/05A3G2HI',/0E,F.CCR.H,/0E,F.CCR.Hq r8   c                   t        |d      \  }}t        | |||f|      }d}t               }	g }
g }g }|D ]g  }t        |d      }t	        ||t
        z
        t        ||t        z         f}t        | |||      }|j                  | d| ||j                  d      d       |j                  d      xs i j                         D cg c]  }|D ]  }|  }}}|D ]  }|	j                  |        t        |j                  dd      |j                  d	d      |j                  d
d      |j                  dd      g      }||z  }||j                  d      t        |      ||d}t        |      dk  r|j                  |       |s|sW|
j                  |       j |t        |      t        |       dt        |       t
        t        t        |      t        |	      t!        |	      ||
||d| ddS c c}}w )Nr   r   r   z-caller:r   r/  r  r  r  r  r  )r   r%  r  r  r0  r  rf   zAll direct callers of z were scanned with local windows. Any transition-like branch or source/target/current-root immediate near those calls must still be tied to the edge path before it can prove a generic boundary transition.)r   r   rA  rB  rC  callerCountr&  rJ  r'  rK  rL  sampleCallerWindowsr  )rs   r   r   rq   r}   CALLER_WINDOW_BEFOREr   CALLER_WINDOW_AFTERr  r   rp   rA   r   r  r~   r7   r   )rQ   rR   r   r   r   r   r   hit_vasr\  r[  r]  sample_rowsr^  hit_hexhit_var  r  r   r  r  r  r   s                         r6   caller_window_evidencer  \  sY    )7;Jc8j(-CVLG'($ UKM $.Wb!
F%99:&#667
 &c8WfE	whwi0!j1
 	 #'DEKSSU

  

 

 & 	/F"&&v.	/ #MM?CMM=qAMM91=MM91=	%
 ! 	),AA( "z2/2?/C&;'
 {b s# O!((-I$.L V} ,-Rh/@A1/7|+./E+F-34J-K(H3%*$UG ,A A 3
s   G6c                   t        |d      \  }}t        | |||ft              }g }g }dddddddd}d}	|D ]  }
t        |
d      }t        d   |cxk  rt        d   k  rn n|dz  }t
        d   |cxk  rt
        d   k  rn n|	dz  }	t        ||t        z
        t        ||t        z         f}t        | |||      }|j                  d|
 ||j                  d      d       d	xx   |j                  d
d      z  cc<   dxx   |j                  dd      z  cc<   dxx   |j                  dd      z  cc<   dxx   |j                  dd      z  cc<   dxx   |j                  dd      z  cc<   dxx   |j                  dd      z  cc<   |j                  |
|j                  d      |j                  d
d      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      d        t        fddD              }dt        t              t        |       dt        |       t        t        t        |      ||	|d	||ddS )Nr   r   ),selectedPointerGlobalImmediateWindowHitCount*currentSelectorRootImmediateWindowHitCount&sourceMapStringImmediateWindowHitCount&targetMapStringImmediateWindowHitCountmapLoaderWindowRelHitCountselectorTableWindowRelHitCountr   r
   zscript-runner-call:r   r/  r  r  r  r  r  r  r  r  r  r  r  r  )r   r%  r  r  r  r  r  r  c              3  (   K   | ]	  }|     y wr9  r3   )r;  r   totalss     r6   r=  z6script_runner_call_context_evidence.<locals>.<genexpr>  s        	s s   )r  r  r  r  zscript-runnerrf   )	r   r   rA  rB  rC  ry  actorControllerRangeCallerCountcollisionHelperRangeCallerCountr'  a  All direct script-runner calls were scanned with local windows. They are outside the actor-controller/collision-helper ranges and their windows contain no map-loader or selector-table rel branches and no selected-pointer, current-root, source-map, or target-map immediates.)rL  sampleCallWindowsr  )rs   r   r   rq   r  r  r}   r{  r   r|  r  r   rp   r  r7   r~   )rQ   rR   r   r   r   r}  r~  r^  actor_range_countcollision_range_countr  r  r  r  r  r  s                  @r6   #script_runner_call_context_evidencer    s   (7;Jc8j(-CE[\GKM89672323&'*+F  'Wb!!!$J1G1JJ"'*fV7STU7VV!Q&!
F%99:&#667
 !h@*7)4,
 	
 	=>$((11C
 	
> 	;</A
 	
< 	78DHH+Q=
 	
8 	78DHH+Q=
 	
8 	+,9UWX0YY,/0DHH=]_`4aa0 *-3788<acd3e15:]_`1a-1XX6UWX-Y-1XX6UWX-Y*.((3OQR*S.2hh7WYZ.[	
 		='P    
   '34 ,-Rh/@A1/7|+<+@(=  &(h r8   c                   t        |d      \  }}t        | |||ft              }ddddddd}g }g }|D ]  }	t        |	d      }
t	        ||
t
        z
        t        ||
t        z         f}t        | |||      }|j                  d|	 ||j                  d      d       |dxx   |j                  d	d      z  cc<   |d
xx   |j                  dd      z  cc<   |dxx   |j                  dd      z  cc<   |dxx   |j                  dd      z  cc<   |dxx   |j                  dd      z  cc<   |dxx   |j                  dd      z  cc<   |j                  |	|j                  d      |j                  dd      |j                  d	d      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      d	        t        |j                               }dt        t              t        |       dt        |       t
        t        t        |      |d|||ddS )Nr   r   )r  r  r  r  scriptRunnerWindowRelHitCountr  r   zselected-pointer-ref:r   r/  r  r  r  r  r  r  r  r  r  r  r  r  r  )	refVaHexr%  r  r  r  r  r  r  r  r   rf   )r   r   rA  rB  rC  immediateRefCountrouteSpecificWindowHitCounta  All direct selected-pointer global immediates in .text were scanned with local windows. Those windows do not contain current-root, source-map, target-map, map-loader, script-runner, or selector-table evidence that would tie the global selected-pointer access to this edge path.)rL  sampleReferenceWindowsr  )rs   r   r   rq   r}   r{  r   r|  r  r   rp   r  rA   r7   r~   )rQ   rR   r   r   r   r}  r  r~  r^  r  r  r  r  route_specific_window_hit_counts                 r6   +selected_pointer_immediate_context_evidencer    s   
 )7;J hX0FH_`G672323&')**+F KM "Wb!
F%99:&#667
 !h@,WI6,
 	
 	;</A
 	
< 	78DHH+Q=
 	
8 	78DHH+Q=
 	
8 	+,9UWX0YY,./488<[]^3__//0DHH=]_`4aa0*-3788<acd3e15:]_`1a-1XX6UWX-Y-1XX6UWX-Y*.((3OQR*S-1XX6UWX-Y.2hh7WYZ.[

 
	1"F '*&--/&:#045 ,-Rh/@A1/ \'F  &"-n r8   c                   |j                  d      xs i j                  d      xs i }|j                  d      xs g D ci c]  }|j                  d      | }}g }t        j                         D ]  \  }}t        j	                  |d         }	t        | ||d   t        |	            }
t        | ||d         }|j                  |      xs i }|j                  ||j                  d      |j                  d	      t        |d         t        |d         t        |      |t        k(  |d
   |d   |
|
|d   k(  d        |S c c}w )NactorMotionr   directionCases	directionr,   r)   r*   inputLatchHexboundaryRuler+   )r  r  r  edgeCheckVaHexcaseExitJumpVaHexcaseExitJumpTargetHexfallsThroughToActorOverlapLoopr+   expectedSnippetHexactualSnippetHexsnippetMatchesExpected)rp   BOUNDARY_SNIPPETSr   bytesfromhexrZ   r~   rd   r   r7   ACTOR_OVERLAP_LOOP)rQ   rR   runtime_movementhelperr   casesr   r  expectedexpected_bytes
actual_hexjump_targetcases                r6   boundary_case_evidencer  A  sb   ##M28b==>OPVTVF ::./52 	c!E  D0668 	8x'>?sHh}.Es>GZ[
"3(;K2LMyy#)r"!XXo6 HH^4#H]$;<!&x0@'A!B%*;%7.9=O.O'/0I'J"*="9 *&0H]4K&K
 	$ K/s    Ec                R   | j                  d      }| j                  d      }| j                  d      }|j                  d      }|j                  d      }|dk(  r|dk(  S |dk(  rt        |t              xr ||d	z
  k(  S |d
k(  r|dk(  S |dk(  rt        |t              xr ||d	z
  k(  S y)NsiderP  yr   heightr&   r   r'   r
   r$   r%   F)rp   rZ  rq   )	candidatesource_statsr  rP  r  r   r  s          r6   source_boundary_matchr  ]  s    == DcAcAW%Eh'Fu}Avx&#&:1
?:v~Avw%%8!uqy.8r8   c                >   | j                  d      xs g }| j                  d      xs i j                  t              xs i }|j                  d      xs i j                  d      xs i j                  d      xs g D ci c]  }|j                  d      | }}g }|D ]v  }|j                  d      }t        j                  t        |      d      }	|j                  |	      xs i }
t	        ||      }|j                  d	      d
u }|j                  i d|d|	d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|d	|j                  d	      d|j                  d      d|xr |d|j                  d      d|j                  d      d|
j                  d      d|
j                  d      d|
j                  d      d|j                  d      xs i d|j                  d             y |S c c}w )Nr   originalLayer1MapStatsr  r   r  r  r  r
  outwardMoveWouldStayInBoundsFrP  r  edgeDistanceautoTriggersourceAtOuterBoundaryoutwardMoveAllowedInsideMapboundaryCandidateoriginalStandableoutwardFootprintDirectionClearr  r  r+   targetSpawntargetSpawnOriginalLayer1FlagsrouteAssistUrl)rp   r   SIDE_TO_DIRECTIONr   r  r   )original_collision_route_auditr  route_candidatesstatsr   	case_rowsr   r  r  r  r  at_source_boundaryout_of_boundss                r6   candidate_rowsr  n  s   599:KLRPR+//0HIORTTU[\b`bE '**=9?RDDEVW][]bbcstzxz 	c!I  D% 	}}V$%))#d)R8	}}Y'-229eD!&DEN 
D

 s#
 s#	

 IMM.9
 9==7
 $%7
 +IMM:X,Y
 *9==9V+W
  !3!E
  /B!C
 -imm<\.]
 DHH^4
 dhh'78
 &txx0I'J
  9==)IJPb!
" imm,<=#
 	2 K=s   ?Hc                   |xs t        t        dz  i       }|xs t        t        dz  i       }| j                         }t        |      }t	        ||      }t        ||      }|D cg c]  }|j                  d      s| }}t        |||t              t        |||t              t        |||      }	t        |||      }
t        |||      }t        |||      }t        |||      }t        |||      }t!        |||t"        d      }t!        |||t$        d      }t'        ||t        t$              }t)        |||      }t+        d |D              }t+        d |D              }t-        fdd	   D              }t-        d
   d   d   d   d
   d   d   d   g      }t/        |      }t1        ||dt        ddt        dg|      }t3        g |	j                  d      xs g |j                  d      xs g |j                  d      xs g       }t1        ||||      }|j                  d      xs g D cg c]1  }d|j                  d       t5        |j                  d            d3 }}t1        ||||      }t1        ||t3        g |j                  d      xs g |j                  d      xs g       |      }i dddt6        dt8        dddddddddt:        dt<        d t>        d!tA        t>              d"tA        |      d#tA        |      d$t-        d% |D              d&|d'tC        t$              tC        t        d(          d)tC        t        d*          tC        tD              tC        tF              |||d+d,tC        t"              tC        t        d(          d)tC        t        d*          tA        |      |d-i d.|	d/|
d0|d1|d2|d3|d4|d5   d6|d7   d8|d9   d:|d;   d<|d=   d>|d?   d@|dA|d5   dB|d7   dC|d9   dD|d;   i dE|d=   dF|d?   dG|dH|d5   dI|d7   dJ|d9   dK|d;   dL|d=   dM|d?   dN|dO|d5   dP|d7   dQ|d9   dR|d;   dS|d=   dT|d?   dU|i dV|dW|j                  d5      dX|j                  d      dY|j                  dZ      d[|j                  d\      d]|j                  d^      d_|j                  d`      da|j                  db      dc|j                  dd      de|j                  df      dg|j                  dh      di|j                  dj      dk|j                  dl      dm|j                  dn      do|j                  dp      dq|j                  dr      ds|j                  dt      i du|j                  dv      dw|j                  dx      dy|j                  dz      d{|j                  d|      d}|j                  d~      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|d|dt6        tC        |j                  t6                    t8        tC        |j                  t8                    id|d|dt<        ddS c c}w c c}w )Nruntime_movement.json#original_collision_route_audit.jsonr  r  r  c              3  >   K   | ]  }|j                  d         yw)r  Nrr  rs  s     r6   r=  z build_summary.<locals>.<genexpr>  s     %bCcgg.F&G%b   c              3  >   K   | ]  }|j                  d         yw)r  Nrr  rs  s     r6   r=  z build_summary.<locals>.<genexpr>  s     ,q[^SWW5U-V,qr  c              3  d   K   | ]'  }t        d    |         t        d    |         z    ) yw)r  Nr  )r;  rn   controller_refshelper_refss     r6   r=  z build_summary.<locals>.<genexpr>  sD        	K56t<=
o;<TB
C	Ds   -0r  r  r  r  r  )r   r|   rL  r  z
callgraph:r   r   titlezmap1_01a Edge Trigger Gapsourcer   r   z%blocked-generic-edge-trigger-unprovenpromotionAllowedFru  edgeTriggerProofFoundfailedEdgeTriggerGateIdsmissingEvidenceevidenceRefsevidenceRefCountrouteCandidateCountsourceBoundaryCandidateCountautoBoundaryCandidateCountc              3  H   K   | ]  }|j                  d       du sd  yw)r  Tr
   Nrr  rs  s     r6   r=  z build_summary.<locals>.<genexpr>  s"     )mcggVcNdhlNl!)ms   ""candidateRowscollisionHelperEvidencer   rf   r
   )functionVaHexr   r@  actorOverlapLoopVaHexboundaryCases allBoundarySnippetsMatchExpected-allBoundaryCasesFallThroughToActorOverlapLooprm  actorControllerEvidence)r  r   collisionHelperCallCountcollisionHelperCallVaHexesrm  directionLatchReferenceEvidence!globalTransitionReferenceEvidencescriptRunnerCallContextEvidence'selectedPointerImmediateContextEvidenceencodedScanTargetsedgeHandlerEncodedTargetScan&edgeHandlerEncodedTargetClassificationr   /edgeHandlerEncodedTargetRawScalarCandidateCountr   9edgeHandlerEncodedTargetTransitionRawScalarCandidateCountr   9edgeHandlerEncodedTargetRouteProofRawScalarCandidateCountr   >edgeHandlerEncodedTargetSelectedPointerRawScalarCandidateCountr   /edgeHandlerEncodedTargetPromotingCandidateCountr    edgeLocalWindowEncodedTargetScan*edgeLocalWindowEncodedTargetClassification3edgeLocalWindowEncodedTargetRawScalarCandidateCount=edgeLocalWindowEncodedTargetTransitionRawScalarCandidateCount=edgeLocalWindowEncodedTargetRouteProofRawScalarCandidateCountBedgeLocalWindowEncodedTargetSelectedPointerRawScalarCandidateCount3edgeLocalWindowEncodedTargetPromotingCandidateCountedgeCallGraphEncodedTargetScan(edgeCallGraphEncodedTargetClassification1edgeCallGraphEncodedTargetRawScalarCandidateCount;edgeCallGraphEncodedTargetTransitionRawScalarCandidateCount;edgeCallGraphEncodedTargetRouteProofRawScalarCandidateCount@edgeCallGraphEncodedTargetSelectedPointerRawScalarCandidateCount1edgeCallGraphEncodedTargetPromotingCandidateCount)edgeGlobalContrastWindowEncodedTargetScan3edgeGlobalContrastWindowEncodedTargetClassification<edgeGlobalContrastWindowEncodedTargetRawScalarCandidateCountFedgeGlobalContrastWindowEncodedTargetTransitionRawScalarCandidateCountFedgeGlobalContrastWindowEncodedTargetRouteProofRawScalarCandidateCountKedgeGlobalContrastWindowEncodedTargetSelectedPointerRawScalarCandidateCount<edgeGlobalContrastWindowEncodedTargetPromotingCandidateCountdirectCallGraphEvidencedirectCallGraphDepthSensitivity0directCallGraphTransitionRejectionClassification#directCallGraphTransitionProofFound%directCallGraphReachableFunctionCountr  "directCallGraphDirectCallEdgeCountr  -directCallGraphTransitionTargetReachableCountr  'directCallGraphTransitionTargetHitCountr  %directCallGraphRouteImmediateHitCountr  (directCallGraphIndirectCallLikeByteCountr  .directCallGraphIndirectRejectionClassificationr  !directCallGraphIndirectProofFoundr  9directCallGraphIndirectStaticAbsoluteMemoryCandidateCountr  5directCallGraphIndirectIndexedJumpTableCandidateCountr  1directCallGraphIndirectIndexedJumpTableEntryCountr  2directCallGraphIndirectIndexedJumpTableTargetCountr  8directCallGraphIndirectIndexedJumpTableUniqueTargetCountr  8directCallGraphIndirectIndexedJumpTableTargetClassCountsr  0directCallGraphIndirectIndexedJumpTableAuditRowsr  DdirectCallGraphIndirectIndexedJumpTableAllTargetsLocalToEdgeHandlersr  DdirectCallGraphIndirectIndexedJumpTableOutsideEdgeHandlerTargetCountr  4directCallGraphIndirectResolvedPointerCandidateCountr  8directCallGraphIndirectUnresolvedRegisterOrComputedCountr  /directCallGraphIndirectTransitionTargetHitCountr  -directCallGraphIndirectRouteImmediateHitCountr  .directCallGraphDepthSensitivityMaxDepthCheckedr  =directCallGraphDepthSensitivityProofAbsentAcrossCheckedDepthsr  BdirectCallGraphDepthSensitivityCountsStableAtAndBeyondDefaultDepthr  #actorControllerCallerWindowEvidence#collisionHelperCallerWindowEvidencesourceTargetStringVas3transitionLikeDirectRelHitCountInHelperOrController-directRouteImmediateCountInHelperOrControllermissingPromotionEvidencer  a%  The top and bottom map1_01a routeAssist candidates are real map-edge boundary candidates, but the original collision helper evidence only shows boundary fallback writes to the direction latch before returning to the actor collision/overlap path. No direct map-loader, selected-pointer, current-root, or map1_01a/map2_02d string reference is present in the helper/controller ranges or near any direct direction-latch reference in .text, and the bounded direct-call graph from the actor movement/collision ranges remains stable through the deeper sensitivity pass without reaching a transition target or route-specific immediate. This keeps the manual movement trigger consumer unidentified; it does not support a scene-auto-transition interpretation, and a generic edge-trigger transition remains unproven.)$rL   OUT
read_bytesr   r  r  rp   r  r  r  rk  rw  r  r  r  r  r  rr  rs  r   r  r  r  r   r  r	  r   r   r   FAILED_EDGE_TRIGGER_GATE_IDSEDGE_TRIGGER_MISSING_EVIDENCEEDGE_TRIGGER_EVIDENCE_REFSr~   r7   rW  r  ) exe_pathr  r  rQ   rR   r   
candidatesr   boundary_candidates
latch_refsglobal_refsscript_runner_call_contextselected_pointer_contextdirect_call_graphcall_graph_depth_sensitivityactor_controller_caller_windowscollision_helper_caller_windowscontroller_helper_callsboundary_casesall_boundary_snippets_match"all_boundary_cases_fall_to_overlaptransition_ref_countdirect_route_ref_countencoded_targetsedge_handler_encoded_scanlatch_caller_rangesedge_local_window_encoded_scancall_graph_rangescall_graph_encoded_scan#global_contrast_window_encoded_scanr  r  s                                  @@r6   build_summaryrN    s   
 (W9S;R5RTV+W%C &y33
H" 


CS!HS(+G >@PQJ*4U3@S8T3UU#C7<XYK'Xw@VWO3C7KJ6sHgNK!DS(T[!\J3PXZab23'J#FsHV]#^ &<!'# '=''# .'	 ,C;KLN"%%bSa%b"b),,qbp,q)q&    => 
 !9:783434=>;<7878	" 	 +73O 7(3OP(3IJ	
 	! / 0
..
(
.B0
)
-
-n
=
C0 *
-
-n
=
C0 
 &=	&" %(()=>D"
  "#'''"2!34$SWWZ%89	
  6	 +B 
(,,^<B
&**>:@b
 	 	+'@,@&@ 	&@ 	B	@
 	E@ 	e@ 	 @ 	#$@@ 	8@ 	2@ 	C :;@ 	s:@ 	',?(@@ 	%c)m7J)m&m@ 	@  	""#BC !=a!@AB"UKghiKjEkDlm',-C'D%*+=%>+0K=_ +	$
!@4 	""#<= !7!:;<BuE[\]E^?_>`a(+,C(D*A /$
5@B 	*:C@D 	,[E@F 	*+EG@H 	23KI@J 	oK@L 	'(AM@N 	12KL\2]O@P 	:;T%<
Q@V 	DE^/F
W@\ 	DE^/F
]@b 	IJc4K
c@h 	:;T%<
i@n 	+,Jo@p 	56TUe6fq@r 	>?]%@
s@x 	HIg/J
y@~ 	HIg/J
@D 	MNl4O
E@J 	>?]%@
K@P 	)*AQ@R 	34KL\4]S@T 	<=T%>
U@Z 	FG^/H
[@` 	FG^/H
a@f 	KLc4M
g@l 	<=T%>
m@r 	45Xs@t 	>/0@Aw@z 	G/0IJ}@@ 	Q/0STC@F 	Q/0STI@L 	V/0XYO@R 	G/0IJU@X 	"#4Y@Z 	*+G[@\ 	;<M<Q<QRb<c]@^ 	./@/D/D\/R_@` 	01B1F1FG_1`a@b 	-.?.C.CDY.Zc@d 	89J9N9N,:
e@j 	23D3H3HIc3dk@l 	01B1F1FG_1`m@n 	34E4I4IJe4fo@p 	9:K:O:O6;
q@v 	,->-B-BC`-aw@x 	DEVEZEZAF
y@~ 	@ARAVAV=B
@D 	<=N=R=R9>
E@J 	=>O>S>S:?
K@P 	CDUDYDY@E
Q@V 	CDUDYDY@E
W@\ 	;<M<Q<Q8=
]@b 	OPaPePeLQ
c@h 	OPaPePeLQ
i@n 	?@Q@U@U<A
o@t 	CDUDYDY@E
u@z 	:;L;P;P7<
{@@ 	89J9N9N5:
A@F 	9:V:Z:Z;
G@L 	H(,,-MNO@R 	M(,,-RSU@X 	./NY@Z 	./N[@\ 	 E'++f-.E'++f-."
]@d 	>?Se@f 	89Og@h 	#$Ai@j 	8m@ @u VHs   (Z>?Z>?6[c           (        g 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dt        | d          dd| j                  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/| d,   d0    d1| d,   d2    d3	d4| d5   d6    d7| d5   d8    d9d:| d;    d<| d=    d<| d>    d<| d?    d<| d@    dA| dB    dCdD| dE    d<| dF    d<| dG    d<| dH    d<| dI    dA| dJ    dCdK| dL    d<| dM    d<| dN    d<| dO    d<| dP    dA| dQ    dCdR| dS    d<| dT    d<| dU    d<| dV    d<| dW    dA| dX    dCdY| dZ    d[| d\    d]| d^    d_| d`    da| db    dc| dd    de| df    dg| dh    ddi| dj    dk| dl    dm| dn    ddo| dp    d[| dq    dr| ds    dt| du    dv| dw    dx| dy    dv| dz    d{| d|    d}| d~    d| d    d| d    dc| 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|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d      xs d d|j                  d      xs d d        |j	                  g d       | d   d   D ]  }|j                  d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d        | d   d   }| d   d   }| d   d   }|j	                  g d       d|fd|fd|ffD ]  \  }}|j                  d| d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d        | d    }|j	                  g d       | d5   d   D ]  }|j                  d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d        |j	                  d| d5   d   dddddg       | d,   d   D ]  }|j                  d|j                  d«       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d        |j	                  d| d,   d   ddd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    dr| d   d    dt| d   d    dv| d   d    dx| d   d    dv| d   d    d{| d   d    d}| d   d    d| d   d    d| d   d    dc| d   d    d| d   d    ddddg       | d   d   D ]  }|j                  d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  dΫ       d        |j	                  g d       | d   d   D ]  }|j                  d|j                  d       d|j                  d       d|j                  dɫ       d|j                  dʫ       d|j                  d̫       d|j                  dͫ       d|j                  dΫ       d|j                  dЫ       d|j                  d       d|j                  dƫ       d        |j	                  d| d   d   ddddddg       | d   j                  d      xs i j                  d      xs g D ]L  }|j                  d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d      xs d d|j                  d      xs d d|j                  d      xs d d|j                  d      xs d d|j                  d      xs- |j                  d      xs t        |j                  d             d|j                  d       xs/ |j                  d      xs t        |j                  d             d       O |j	                  g d       | d   j                  d      xs i j                  d      xs g D ]  }dj                  d t        |j                  d      xs i j                               D              xs d}	|j                  d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|	 d|j                  d       d|j                  d       dt        |j                  d             dt        |j                  d             d        |j	                  d| d   d   d| d   j                  d      xs i j                  dd      dd	dd
|d    dd|d!    dA|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%   j                         D               ddd&d'g       |d(   D ]c  }|j                  d|j                  d)       d|j                  d*       d|j                  d       d|j                  d+      xs d d	       e |j	                  d|d   dd,dd-d.g       |d/   D ]  }|j                  d|j                  d       d|j                  d)       d|j                  d0       d|j                  d1       d|j                  d#       d|j                  d%       d|j                  d2       d        |j	                  g d3       | d(   | d*   fD ]D  }
|j                  d|
d4    d|
d5    d|
d-    d|
d#    d|
d%    dt        |
d6          d       F |j	                  d| d(   d   d| d*   d   g       |j	                  dd7d| d   dd8dg       | d9   D ]  }|j                  d:|         |j                  d       d;j                  |      S (<  Nz# map1_01a Edge Trigger Gapr
  zRoute: `r  z -> r   `zThis audit checks whether the geometry-only edge candidates can be promoted as a generic original edge/boundary transition. It keeps promotion blocked.z## Gatez- promotionAllowed: `r  z- promotionStatus: `r   z- proofFound: `ru  z- failed edge trigger gates: `, r  z- missingEvidenceCount: `r  z- evidenceRefs: `r  z- source boundary candidates: `r  z- auto boundary candidates: `r  z9- transition-like direct rel hits in helper/controller: `r.  z1- route direct immediates in helper/controller: `r/  z&- direction latch direct .text refs: `r  rD  z&- direction latch route-window hits: `r&  z	` rel / `r'  z` immediatesz(- actor-controller caller-window hits: `r+  z(- collision-helper caller-window hits: `r,  z- script-runner call windows: `r  ry  z` calls / `z` route immediates / `r  z` map-loader rel / `r  z` selector-table relz'- selected-pointer immediate windows: `r  r  z
` refs / `r  z` route-specific hitsz.- edge handler encoded route-target scalars: `r  z` / `r  r  r  r  z` (`r  z`)z3- edge local-window encoded route-target scalars: `r  r  r  r  r   r  z1- edge call-graph encoded route-target scalars: `r  r  r  r  r  r  z8- global contrast-window encoded route-target scalars: `r
  r  r  r  r  r	  z- direct call graph: `r  z` / proof `r  z` / functions `r  z` / edges `r  z` / transition targets `r  z` / transition hits `r  z` / route immediates `r  z` / indirect-like bytes `r  z2- direct call graph depth sensitivity: max depth `r(  z` / no proof `r)  z` / stable beyond default `r*  z"- indirect call graph rejection: `r  r  z` / absolute `r  z` / jump tables `r  z`/`r  z` entries / targets `r  r  z` unique / local `r"  z` / outside `r#  z` / resolved `r$  z` / unresolved `r%  r&  z` / route hits `r'  z!- global .text transition refs: `r  rm  r  z` map-loader / `r  z` script-runner / `r  z` selector-table rel hitsz## Candidate Rowsz~| side | tile | direction | edge | auto | source boundary | in-bounds move | original standable | helper rule | helper check |zB| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | --- | --- |r  z| r  z | rP  r>   r  r  r  r  r  r  r  r  r?   z | `r  z` |)r
  z## Boundary Helper Evidencer
  zE| direction | rule | check | fallback latch | exit target | snippet |z&| --- | --- | --- | --- | --- | ---: |r  r  z` | `r+   r  z` | r  z |r  )r
  z## Direct Reference Checksr
  z| range | map loader rel | script runner rel | selector table rel | selected ptr imm | current root imm | source string imm | target string imm |z8| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |collision helperactor controllerglobal .textz `r   r  r  r  r  )r
  z%## Selected Pointer Immediate Contextr
  z| ref | window | selected ptr imm | current root imm | source string imm | target string imm | map-loader rel | script-runner rel | selector-table rel |z>| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |r  z| `r  r%  r  z## Script Runner Call Contextz| call | window | selected ptr imm | current root imm | source string imm | target string imm | map-loader rel | selector-table rel |z7| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |r  r   z## Direct Call Graphz- classification: `r  r   z- proof found: `z,- reachable functions / direct call edges: `r  r  zF- transition targets reachable / transition hits / route immediates: `r  r  r  z- indirect call-like bytes: `r  z=- depth sensitivity max / no proof / stable beyond default: `r  r  r  r  z- indirect rejection: `r  r  r  r  r  r  r  r  r  r  r  r  r  zI| function | depth | range | calls | transition hits | route immediates |z)| --- | ---: | --- | ---: | ---: | ---: |r  r   r  r  r  )r
  z'### Direct Call Graph Depth Sensitivityr
  z| max depth | observed depth | functions | edges | transition targets | transition hits | route immediates | indirect-like bytes | proof | stable class |zF| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- |r   r  r  z!### Indirect Call/Jump Candidateszt| function | depth | instruction | kind | operand | table | entries | absolute | resolved | target hit | route hit |zE| --- | ---: | --- | --- | --- | --- | ---: | --- | --- | --- | --- |r  r   r  r  r   r  r  r   r   rQ  rS  rU  rV  r  rW  rX  r  )r
  z### Indirect Jump Table Auditr
  zw| function | instruction | table | entries | target classes | local-only | outside | transition labels | route labels |z9| --- | --- | --- | ---: | --- | --- | ---: | --- | --- |r|  c              3  0   K   | ]  \  }}| d |   yw:Nr3   r;  r   r5   s      r6   r=  zmarkdown.<locals>.<genexpr>u  '      "
U e1UG"
   r"  r#  r$  z## Direction Latch Global Scanz
- latch: `r@  z- text refs: `rE  z` reads / `rF  z` writes / `rG  z"` outside helper/controller range)z- local route-window hits: `z` transition rel / `z` route immediatesz)- outside helper/controller refs: reset `rP  z#`, actor-state continuation reads `rQ  z`, transition consumers `rN  z`, unclassified `rR  z0- outside helper/controller route-window hits: `rT  rS  z+- outside refs classified non-transition: `rU  z- by kind: `c              3  0   K   | ]  \  }}| d |   yw)=Nr3   )r;  kvs      r6   r=  zmarkdown.<locals>.<genexpr>  s      P1A3as PrZ  rH  z| ref | range | kind | value |z| --- | --- | --- | --- |rV  r  r|   r   z3### Direction Latch Outside Helper/Controller AuditzK| instruction | ref | class | effect | transition rel | route imm | bytes |z-| --- | --- | --- | --- | ---: | ---: | --- |rM  r#  r$  r  )r
  z## Caller Window Scansr
  zW| target | callers | local transition rel hits | local route immediates | hit windows |z#| --- | ---: | ---: | ---: | ---: |r   r   rK  z## Conclusionz## Missing Evidencer0  z- 
)r@   r~   rp   r   r   rB   r   r   )summarylinesr   r  r  r:  r   r  latchtarget_classescallsr  s               r6   markdownre    sC   ,%,
, 78$%T'(*;)<A>, 		,M, 	, 	, 	,  (: ;<A>, w'89:!<, ',/02, )7;U3V)W(XXYZ,  $C0A(B$C#DAF!," GKK(:;<A>#,$ *'2P*Q)RRST%,& (0L(M'NaP',( DG  MB  EC  DD  DE  	F),* <GDs<t;uuvw+,, 19Z1[\l1m0nnop-,. 19Z1[\}1~0  @I  JQ  Rs  Jt  uS  JT  IU  Ua  	b/,0 37;`3a  cD  4E  3F  FO  PW  X}  P~  ]  P^  O_  _k  	l1,2 37;`3a  cD  4E  3F  FO  PW  X}  P~  ]  P^  O_  _k  	l3,4 *'2S*TUb*c)ddopw  yZ  q[  \z  q{  p|  |R  SZ  [|  S}  ~Z  S[  R\  \p  qx  yZ  q[  \|  q}  p~  ~R  	S5,6 2':c2dex2y1z  {E  FM  Nw  Fx  yV  FW  EX  Xm  	n7,8 9Ar9s8tty  {B  C~  {  z@  @E  FM  NI  FJ  EK  KP  QX  YY  QZ  P[  [`  ah  iZ  a[  `\  \`  ah  iQ  aR  `S  SU  	V9,: >gF{>|=}  ~C  DK  LK  DL  CM  MR  SZ  [Z  S[  R\  \a  bi  jn  bo  ap  pu  v}  ~s  vt  uu  uy  zA  Bn  zo  yp  pr  	s;,< <GDw<x;yy~  @G  HE  @F  G  GL  MT  UR  MS  LT  TY  Za  bd  Ze  Yf  fk  ls  tg  lh  ki  im  nu  v`  na  mb  bd  	e=,> C7  LJ  DK  CL  LQ  RY  Zb  Rc  Qd  di  jq  rz  j{  i|  |A  BI  JW  BX  AY  Y^  _f  ge  _f  ^g  gk  ls  ti  lj  kk  km  	n?,@ !)[!\ ]]hip  rW  jX  iY  Yh  ip  qX  iY  hZ  Ze  fm  nR  fS  eT  Tl  mt  ud  me  lf  f{  |C  Dm  |n  {o  oE  FM  Nu  Fv  Ew  wP  QX  YC	  QD	  PE	  E	F	  	G	A,B =WEu=v<w  xF  GN  ON  GO  FP  Pk  ls  tx  ly  kz  z{  	|C,D -W5e-f,ggrsz  |_  t`  sa  ao  pw  xs  pt  ou  uF  GN  OF  GG  FH  HK  LS  TG  LH  KI  I^  _f  g[  _\  ^]  ]`  ah  ic  ad  `e  ew  x  @	F
  xG
  wH
  H
U
  V
]
  ^
d  V
e  U
f  ft  u|  }s  ut  tu  uE  FM  NH  FI  EJ  J_  `g  hY  `Z  _[  [k  ls  tc  ld  ke  ef  	gE,F	789KLMijk l789KLMlmn o789KLMmno  pI	JG,N 	O,P 	Q,R 	S,T 	IU,V 	MW,EZ ' 
!SWWS\N!CGGCL>SWW[EYDZZ]ww~&'s377=+A*B#cggNaFbEccfww567s377CV;W:XX[ww~&-#.d377;K3L3SPS2TTWY	

 
LL   01/B 
%&c#''.*A)B$swwO_G`Fa b1235AX9Y8ZZ^ww/015	

 345GHK789KLO=>?QRK	LL   
[)	_-	% 

t
 	r$((:./tDHH=Y4Z3[[^xx789TXXFf=g<hhkxx=>?s488LoCpBqqtxx789TXXFe=f<ggik	


 56E	LL   @ABZ[ 
#''*%&eCGGK,@+Aww<=>c#''JmBnAoorww678CGGDc<d;eehww345SA`9a8bbeww789	=	

 
LL
9:<H
'
 	PA  89:MN 
#''+&'uSWW[-A,B$ww<=>c#''JmBnAoorww678CGGDc<d;eehww345SAa9b8cceg	

 
LL
12<@


g&?@AQRSSTU
7#<=lKLAN
6w?X7YZr7s6tty  {B  C\  {]  ^s  {t  zu  uv  	w
PQXYrQs  uU  RV  QW  W\  ]d  e~  ]  @Z  ][  \\  \a  bi  jC  bD  E]  b^  a_  _`  	a
'0I(JKf(g'hhij
GPqHr  tE  IF  HG  GL  MT  Uv  Mw  xX  MY  LZ  Z_  `g  hI  `J  Kp  `q  _r  rs  	t
!'*C"DEo"p!qq|  ~E  F_  ~`  a~  ~  }@  @N  OV  Wp  Oq  rg  Oh  Ni  iz  {B  C\  {]  ^O  {P  zQ  QT  U\  ]v  Uw  xe  Uf  Tg  g|  }D  E^  }_  `N	  }O	  |P	  P	S	  T	[	  \	u	  T	v	  w	k
  T	l
  S	m
  m

  @G  Ha  @b  cc  @d  
e  er  sz  {T  sU  VV  sW  rX  Xf  gn  oH  gI  Jz  g{  f|  |L  MT  Un  Mo  pd  Me  Lf  f{  |C  D]  |^  _J  |K  {L  L\  ]d  e~  ]  @i  ]j  \k  kl  	m
S3 " 012LM 
!"#cggg&6%7tCGGJ<O;PPTww()*#cgg6W.X-YY\ww/015	

 
LL   89&A 
$%S1C)D(ESww/01SWW=R5S4TTWww789SWWE_=`<aadww/01SWW=X5Y4ZZ]ww|$%S1A)B(C2	G	

 
LL
12<@

+
~O	 	 12667STZXZ__`lmsqs 
)*#cggg.>-?tCGGL^D_C``dwwvs377=#9":$swwG^?_?fcf>ggkww349:$swwG\?]?dad>e f,-45Tww/0  HCGG<U4V  HZefifmfm  oF  gG  [H  I  ILww*+xsww7K/LxP[\_\c\cdv\wPxyy{}	

 
LL   12667STZXZ__`{|  C  AC 
 "
$cgg.A&B&Hb%O%O%QR"
 
   	 	)*$sww7I/J.K L/01cgg>Z6[5\ ]tCGG,K$L#MSww678 9CGG$;<=> ?CGG$6789>	

 
LL
)*<8
	*	+	/	/0L	M	SQSXXYegij
(

U456a8
/01eN6K5LKX]^mXnWoo{  }B  CV  }W  |X  Xz  	{
&u-N'O&PPdej  lJ  fK  eL  L^  	_
3E:O4P3QQtuz  |f  vg  uh  hA  BG  Hj  Bk  Al  l}  ~C  D`  ~a  }b  bc  	d
:5Ak;l:m  nB  CH  Ip  Cq  Br  rD  	E
5e<h6i5jjkl
tyy Ph8M8M8O PPQQRS
(## & '( 
#''*+,D1A0B#cggfoEVVZ[^[b[bcm[n[uruZvvyz	

 
LL
l
=
U7  -. 
#'',-.eCGG<L4M3Ndww'(CGG4D,E+Fcww89:#cggFd>e=f g-./s4	

 
LL   	5656 
 	}%&b})=(>d5CWBXX[678EB`<a;bbe5-./04	
	
 
LL
56|D
56|D	  
LL



  23 "r$[!"	LL99Ur8   c                2   g }| d   D ];  }|j                  dj                  ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   dt        j                  t	        |j                  d	                   ddt        j                  t	        |j                  d
                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d      xs d             ddt        j                  t	        |j                  d      xs d             ddg             > g }| d   d   D ]E  }|j                  dj                  ddt        j                  t	        |j                  d
                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddt        j                  t	        |j                  d                   ddg             H g }| d   d   }d| d   d   fd| d   d   fd |ffD ]  \  }}|j                  dj                  ddt        j                  |       d!t        j                  t	        |j                  d"                   dd|j                  d#       dd|j                  d$       dd|j                  d%       dd|j                  d&       dd|j                  d'       dd|j                  d(       dd|j                  d)       ddg
              | d*   }g }	| d+   d,   D ]E  }|	j                  dj                  ddt        j                  t	        |j                  d-                   ddt        j                  t	        |j                  d.                   ddt        j                  t	        |j                  d"                   ddt        j                  t	        |j                  d/                   ddt        j                  t	        |j                  d0                   ddt        j                  t	        |j                  d1                   ddg             H g }
| d2   d3   D ]  }|
j                  dj                  ddt        j                  t	        |j                  d4                   ddt        j                  t	        |j                  d5                   ddt        j                  t	        |j                  d6                   ddt        j                  t	        |j                  d7                   ddt        j                  t	        |j                  d8                   ddt        j                  t	        |j                  d9                   ddt        j                  t	        |j                  d1                   ddt        j                  t	        |j                  d:                   ddt        j                  t	        |j                  d;                   ddt        j                  t	        |j                  d<                   ddg              g }| d+   j                  d=      xs i j                  d>      xs g D ]  }|j                  dj                  ddt        j                  t	        |j                  d?                   ddt        j                  t	        |j                  d.                   ddt        j                  t	        |j                  d@                   ddt        j                  t	        |j                  dA                   ddt        j                  t	        |j                  dB                   ddt        j                  t	        |j                  dC      xs d             ddt        j                  t	        |j                  dD      xs dE             ddt        j                  t	        |j                  dF      xs d             ddt        j                  t	        |j                  dG      xs d             ddt        j                  t	        |j                  dH      xs- |j                  dI      xs t        |j                  dJ                         ddt        j                  t	        |j                  dK      xs- |j                  dL      xs t        |j                  dM                         ddg              g }| d+   j                  d=      xs i j                  dN      xs g D ]  }dOj                  dP t        |j                  dQ      xs i j                               D              xs d}|j                  dj                  ddt        j                  t	        |j                  d?                   ddt        j                  t	        |j                  d@                   ddt        j                  t	        |j                  dC                   ddt        j                  t	        |j                  dD                   ddt        j                  |       ddt        j                  t	        |j                  dR                   ddt        j                  t	        |j                  dS                   ddt        j                  t        |j                  dJ                   ddt        j                  t        |j                  dM                   ddg              g }| dT   | dU   fD ]  }|j                  dj                  ddt        j                  t	        |j                  dV                   d!t        j                  t	        |j                  dW                   dd|j                  dX       dd|j                  dY       dd|j                  dZ       ddt        |j                  d[      xs g        ddg              g }|d\   D ]  }|j                  dj                  ddt        j                  t	        |j                  d]                   ddt        j                  t	        |j                  d^                   ddt        j                  t	        |j                  dA                   ddt        j                  t	        |j                  d_      xs d             ddg              g }|d`   D ]u  }|j                  dj                  ddt        j                  t	        |j                  d@                   ddt        j                  t	        |j                  d]                   ddt        j                  t	        |j                  da                   ddt        j                  t	        |j                  db                   ddt        j                  t	        |j                  dY                   ddt        j                  t	        |j                  dZ                   ddt        j                  t	        |j                  dc                   ddg	             x g }| dd   de   D ]  }|j                  dj                  ddt        j                  t	        |j                  df                   ddt        j                  t	        |j                  dg                   dd|j                  d&       dd|j                  d'       dd|j                  d(       dd|j                  d)       dd|j                  d#       dd|j                  d%       ddg
              g }| dh   di   D ]  }|j                  dj                  ddt        j                  t	        |j                  dj                   ddt        j                  t	        |j                  dg                   dd|j                  d&       dd|j                  d'       dd|j                  d(       dd|j                  d)       dd|j                  d#       dd|j                  d$       dd|j                  d%       ddg              dj                  g dkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dt        j                  | d          dt        j                  | d          dt        j                  | d          d| d    d	d| d;    dt        j                  dj                  | d                dt        | d          d| j                  d       d	d| d    d| d    d| d    d| d    d	d|d    d|dY    d|dZ    dd|d    d|d    d|d    d|d    dt        j                  t	        |d                dd| dT   dY    d| dT   dZ    d| dU   dY    d| dU   dZ    d	d| dd   dX    d| dd   dZ    d| dd   d    d| dd   d    d	d| dh   d    d| dh   d    dd| d    d| d    d| d    d| d    d| d    dt        j                  t	        | d                dd| d    d| d    d| d    d| d    d| d    dt        j                  t	        | d                dd| d    d| d    d| d    d| d    d| d    dt        j                  t	        | d                dd| d    d| d    d| d    d| d    d| d    dt        j                  t	        | d                ddt        j                  t	        | d                dt        j                  t	        | d                d| d    d| d    d| d    d| d    d| d    d| d    dd| d    dt        j                  t	        | d                dt        j                  t	        | d                ddt        j                  t	        | d                dt        j                  t	        | d                d| d    d| d    d| d    d| d    d| d    dt        j                  t	        | 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dt        j                  | 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dt        j                  | d+   d           dddd	|	d
dddt        j                  | d2   d           dddd	|
d
dddt        j                  t	        | d+   j                  d=      xs i j                  d       xs d             dddd	|d
ddddd	|d
dddt        j                  | dh   d           dddd	|d
dddt        j                  | dd   d           dddd	|d
dddt        j                  |d           dddd	|d
dddd d	|d
dd!dd"d	|d
dd#d$d      S (%  Nr  r_  z<tr>z  <td>r  z</td>rP  rQ  r  r  r  r  r  r  r  r  r?   z  <td><code>r  z</code></td>z</tr>r  r  r+   r  r  r  rm  rR  rS  r  rT  z <code>r   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  ru  r   r  r   r  r  r   r  r  r   r   rQ  rS  rU  rV  r  rW  rX  r  r|  r>   c              3  0   K   | ]  \  }}| d |   ywrV  r3   rX  s      r6   r=  zhtml_page.<locals>.<genexpr>9	  rY  rZ  r"  r#  r$  r+  r,  r   r   ry  r&  r'  rK  rV  r  r|   r   rM  r#  r$  r  r  r  r   r%  r  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>map1_01a Edge Trigger Gap</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,    h1 { margin: 0 0 8px; font-size: 24px; }z0    h2 { margin: 26px 0 10px; font-size: 18px; }zM    p { margin: 0 0 14px; color: #bbb; max-width: 980px; line-height: 1.45; }zX    table { width: 100%; border-collapse: collapse; margin: 0 0 16px; font-size: 13px; }zi    th, td { border-bottom: 1px solid #303030; padding: 7px 8px; text-align: left; vertical-align: top; }zR    th { position: sticky; top: 0; background: #181818; z-index: 1; color: #ddd; }z    code { color: #d8d8d8; }z
  </style>z</head>z<body>z$  <h1>map1_01a Edge Trigger Gap</h1>z  <p>Route <code>r  z -&gt; r   z</code>; promotion <code>r   z</code>; allowed <code>r  z</code>.</p>z  <p>proof found <code>z)</code>; failed edge trigger gates <code>r  z&</code>; missing evidence count <code>r  z</code>; evidence refs <code>r  z&  <p>source boundary candidates <code>r  z(</code>; auto boundary candidates <code>r  z#</code>; transition rel hits <code>r.  z$</code>; route immediate hits <code>r/  z-  <p>direction latch direct .text refs <code>rD  z1</code>; direction latch route-window hits <code>z</code> rel / <code>z</code> immediates.</p>zA  <p>direction latch outside helper/controller refs: reset <code>rP  z.</code>; actor-state continuation reads <code>rQ  z$</code>; transition consumers <code>rN  z</code>; unclassified <code>rR  z)</code>; non-transition classified <code>rU  z/  <p>actor-controller caller-window hits <code>z></code> immediates; collision-helper caller-window hits <code>z&  <p>script-runner call windows <code>z </code>; route immediates <code>z</code>; map-loader rel <code>r  z"</code>; selector-table rel <code>r  z.  <p>selected-pointer immediate windows <code>r  z#</code>; route-specific hits <code>r  zP  <p>edge handler encoded scalars raw/transition/route/selected/promoting <code>r  z</code>/<code>r  r  r  r  z</code> (<code>r  z</code>).</p>zU  <p>edge local-window encoded scalars raw/transition/route/selected/promoting <code>r  r  r  r  r   r  zS  <p>edge call-graph encoded scalars raw/transition/route/selected/promoting <code>r  r  r  r  r  r  zZ  <p>global contrast-window encoded scalars raw/transition/route/selected/promoting <code>r
  r  r  r  r  r	  z  <p>direct call graph <code>r  z</code>; proof <code>r  z</code>; functions <code>r  z</code>; edges <code>r  z"</code>; transition targets <code>r  z</code>; transition hits <code>r  r  z#</code>; indirect-like bytes <code>r  z:  <p>direct call graph depth sensitivity: max depth <code>r(  z</code>; no proof <code>r)  z%</code>; stable beyond default <code>r*  z  <p>indirect call graph <code>r  r  z</code>; absolute <code>r  z</code>; jump tables <code>r  r  z</code>; targets <code>r  r  z</code> unique; local <code>r"  z</code>; outside <code>r#  z</code>; resolved <code>r$  z</code>; unresolved <code>r%  r&  z</code>; route hits <code>r'  z4  <p>global .text transition refs: map-loader <code>z</code>; script-runner <code>z</code>; selector-table <code>z  <p>r  z</p>z  <h2>Missing Evidence</h2>z  <ul>c              3  N   K   | ]  }d t        j                  |       d  yw)z    <li>z</li>N)htmlescape)r;  r  s     r6   r=  zhtml_page.<locals>.<genexpr>	  s#     	U$HT[[&'u
-	Us   #%z  </ul>z  <h2>Candidate Rows</h2>z	  <table>z    <thead><tr><th>side</th><th>tile</th><th>direction</th><th>edge</th><th>auto</th><th>boundary</th><th>in-bounds</th><th>standable</th><th>rule</th><th>check</th></tr></thead>z    <tbody>z    </tbody>z
  </table>z#  <h2>Boundary Helper Evidence</h2>z~    <thead><tr><th>direction</th><th>rule</th><th>check</th><th>fallback</th><th>exit target</th><th>snippet</th></tr></thead>z"  <h2>Direct Reference Checks</h2>z    <thead><tr><th>range</th><th>map loader rel</th><th>script runner rel</th><th>selector table rel</th><th>selected ptr imm</th><th>current root imm</th><th>source string imm</th><th>target string imm</th></tr></thead>z  <h2>Direct Call Graph</h2>z    <thead><tr><th>function</th><th>depth</th><th>range</th><th>calls</th><th>transition hits</th><th>route immediates</th></tr></thead>z.  <h2>Direct Call Graph Depth Sensitivity</h2>z    <thead><tr><th>max depth</th><th>observed depth</th><th>functions</th><th>edges</th><th>transition targets</th><th>transition hits</th><th>route immediates</th><th>indirect-like bytes</th><th>proof</th><th>classification</th></tr></thead>z(  <h2>Indirect Call/Jump Candidates</h2>r
  z    <thead><tr><th>function</th><th>depth</th><th>instruction</th><th>kind</th><th>operand</th><th>table</th><th>entries</th><th>absolute</th><th>resolved</th><th>target hit</th><th>route hit</th></tr></thead>z$  <h2>Indirect Jump Table Audit</h2>z    <thead><tr><th>function</th><th>instruction</th><th>table</th><th>entries</th><th>target classes</th><th>local-only</th><th>outside</th><th>transition labels</th><th>route labels</th></tr></thead>z-  <h2>Selected Pointer Immediate Context</h2>z    <thead><tr><th>ref</th><th>window</th><th>selected ptr imm</th><th>current root imm</th><th>source string imm</th><th>target string imm</th><th>map-loader rel</th><th>script-runner rel</th><th>selector-table rel</th></tr></thead>z%  <h2>Script Runner Call Context</h2>z    <thead><tr><th>call</th><th>window</th><th>selected ptr imm</th><th>current root imm</th><th>source string imm</th><th>target string imm</th><th>map-loader rel</th><th>selector-table rel</th></tr></thead>z&  <h2>Direction Latch Global Scan</h2>zQ    <thead><tr><th>ref</th><th>range</th><th>kind</th><th>value</th></tr></thead>z:  <h2>Direction Latch Outside Helper/Controller Audit</h2>z    <thead><tr><th>instruction</th><th>ref</th><th>class</th><th>effect</th><th>transition rel</th><th>route imm</th><th>bytes</th></tr></thead>z  <h2>Caller Window Scans</h2>z    <thead><tr><th>target</th><th>callers</th><th>local transition rel hits</th><th>local route immediates</th><th>hit windows</th></tr></thead>z</body>z</html>)
r   r@   ri  rj  r   rp   rB   r   r   r~   )r`  r  r   boundary_rowsdirect_rowsr:  r   r  rb  call_graph_rowsdepth_sensitivity_rowsindirect_call_graph_rowsindirect_jump_table_audit_rowsrc  caller_window_rowsrd  
latch_rowslatch_other_text_rowsscript_runner_rowsr   s                       r6   	html_pageru    s&   N' 
IIS%9:;5AS%6784;;s377SV<GX;Y:ZZ_`S)=%>?@FS)@%ABC5IS)?%@AB%HS1D)E%FGHNS1O)P%QRSSXYS1D)E%FGHNS)@)GC%HIJ%Pt{{3sww7G/H/OC+PQRR^_ 	

" M01/B 
IIS)=%>?@FS)@%ABC5It{{3sww7G/H+IJK<Xt{{3sww7P/Q+RSTT`at{{3sww7N/O+PQRR^_S1I)J%KLMUS	 		

 K=>?QRK	W%>?@RST	W%>?@RST	% 
t
 	IIU+,GDKKDHHZDX@Y4Z3[[gh">?@F"ABC5I"BCDEJ"GHIO"EFGuM"ABC5I"ABC5I 	

& 56EO012LM 
IIS)9%:;<EBS)9%:;<EBt{{3swwz/B+CDE\RS1B)C%DEFeLS1R)S%TUVV[\S1I)J%KLMUS	 		

  89&A 
%%IIS)<%=>?uES1C)D%EFGuMS1I)J%KLMUSS1F)G%HIJ%PS1Q)R%STUUZ[S1K)L%MNOuUS1I)J%KLMUSS1L)M%NOPPUVS)>%?@AGS1A)B%CDEUK 	

"  "12667STZXZ__`lmsqs 
 ''IIS)A%BCDEJS)9%:;<EBt{{3sww7I/J+KLM\ZS%9:;5AS)?%@AB%Ht{{3sww7N/O/VSV+WXYYefS1M)N)SRS%TUVV[\t{{3sww7L/M/TQT+UVWWcdt{{3sww7K/L/SPS+TUVVbcS1I)J  *bcggVoNp  *bt  AD  AH  AH  I`  Aa  ub  &c  d  e  ej  kS1D)E  *SQeIf  *Sjuvyv}v}  Q  wR  kS  &T  U  V  V[  \ 	

$ &("12667STZXZ__`{|  C  AC 
 "
$cgg.A&B&Hb%O%O%QR"
 
   	 	'--IIS)A%BCDEJt{{3sww7I/J+KLM\Zt{{3sww7N/O+PQRR^_S1M)N%OPQQVWt{{>:;<HS1P)Q%RSTTYZS1P)Q%RSTTYZt{{;sww?V7W+XYZZfgt{{;sww?Q7R+STUUab 	

( 5656 
 	!!IIS=)A%BCDGDKKX[\a\e\efs\tXuLvKw  xD  E=12%8#DEFeL#ABC5IUYY';<BCDEJ 
	
	
 J'( 

IIt{{3sww7G/H+IJK<XS)9%:;<EBS%9:;5At{{3swwz/B/Ic+JKLLY 		


 -. 
$$IIt{{3sww7I/J+KLM\Zt{{3sww7G/H+IJK<XS)A%BCDEJS1A)B%CDEUKS1R)S%TUVV[\S1O)P%QRSSXYt{{3sww7L/M+NOPP\]
 
	

 89:MN 
!!IIt{{3sww{/C+DEFlSt{{3sww{/C+DEFlS!FGHN!DEFeL!@AB%H!@AB%H!=>?uE!ABC5I 	

 @ABZ[ 
$$IIt{{3swwz/B+CDE\Rt{{3sww{/C+DEFlS!FGHN!DEFeL!@AB%H!@AB%H!=>?uE!@AB%H!ABC5I 	

  99 GGG 	G 	#	G
 	QG 	5G 	G 	rG 	1G 	7G 	;G 	XG 	cG 	tG 	]G  	'!G" 	#G$ 	%G& 	'G( 	/)G* DKK(9:;74;;wW_O`CaBbb{  }A  }H  }H  IP  Qb  Ic  }d  |e  e|  }D  EW  }X  |Y  Ye  	f+G, "',"7!88abfbmbmnrnwnwx  A[  y\  o]  c^  b_  _E  FI  JQ  Rc  Jd  Fe  Ef  fC  DK  DO  DO  Pb  Dc  Cd  dp  	q-G. 19W1X0Y  ZB  CJ  Kg  Ch  Bi  iL  MT  UJ  MK  LL  Lp  qx  yh  qi  pj  jv  	w/G0 8>N8O7P  QB  CH  Ij  Ck  Bl  l@  AF  Ge  Af  @g  g~  	1G2 LERgLhKi  jX  Y^  _I  YJ  XK  Ko  pu  vX  pY  oZ  Zv  w|  }Y  wZ  v[  [D  EI  EP  EP  QT  UZ  [G  UH  QI  EJ  DK  KW  	X3G4 :'Bg:h  jK  ;L  :M  Ma  bi  jO  bP  Qo  bp  aq  qo  pw  x]  p^  _@  pA  oB  BV  W^  _D  WE  Fd  We  Vf  f}  	~5G6 19Z1[\i1j0k  lL  MT  Uv  Mw  xV  MW  LX  Xv  w~  `  wa  b~  w  v@  @b  cj  kL  cM  Nn  co  bp  p|  	}7G8 9Aj9kl  :A  9B  Be  fm  nW  fX  Yv  fw  ex  xD  	E9G: [[b  dU  \V  [W  We  fm  ni  fj  ek  ky  zA  B}  z~  y  M  NU  VV  NW  MX  Xf  gn  o`  ga  fb  bq  rv  r}  r}  ~A  BI  Jr  Bs  ~t  ru  qv  vC	  	D	;G< ``g  i^  a_  ``  `n  ov  wv  ow  nx  xF  GN  ON  GO  FP  P^  _f  gk  _l  ^m  m{  |C  Dy  |z  {{  {J  KO  KV  KV  WZ  [b  cO	  [P	  WQ	  KR	  JS	  S	`	  	a	=G> ^^e  gZ  _[  ^\  \j  kr  sp  kq  jr  r@  AH  IF  AG  @H  HV  W^  _a  Wb  Vc  cq  ry  zm  rn  qo  o~  C  J  J  KN  OV  WA	  OB	  KC	  D	  ~E	  E	R	  	S	?G@ eel  nl  fm  en  n|  }D  EM  }N  |O  O]  ^e  fn  ^o  ]p  p~  F  GT  U  ~V  Vd  el  mk  el  dm  m|  }A	  }H	  }H	  I	L	  M	T	  U	J
  M	K
  I	L
  }M
  |N
  N
[
  	\
AGB (C@r8s4t(u'v  wL  MQ  MX  MX  Y\  ]d  eJ  ]K  YL  MM  LN  Ng  ho  pW  hX  gY  Yn  ov  w[  o\  n]  ]  @G  Hw  @x  y  yX  Y`  aJ  YK  XL  Ll  mt  u\	  m]	  l^	  ^	A
  B
I
  J
t
  B
u
  A
v
  v
B  	CCGD EWM}E~D  @X  Y]  Yd  Yd  eh  ip  qp  iq  er  Ys  Xt  tY  Z^  Ze  Ze  fi  jq  rv  jw  fx  Zy  Yz  zF  	GEGF *$++c'Br:s6t*u)v  wL  MQ  MX  MX  Y\  ]d  eH  ]I  YJ  MK  LL  Ld  el  mh  ei  dj  jE  FM  NE  FF  EG  GU  V]  ^Q  VR  US  Sj  kr  sg  kh  ji  iw  x  @	z	  x{	  w|	  |	X
  Y
]
  Y
d
  Y
d
  e
h
  i
p
  q
w  i
x  e
y  Y
z  X
{  {R  SZ  [a  Sb  Rc  c{  |C  Dz  |{  {|  |V  W^  _Y  WZ  V[  [z  {B  Ct  {u  zv  vP  QX  YH  QI  PJ  JV  	WGGH ?wGj?kl~?  A]  @^  ?_  _|  }D  Eh  }i  j|  }}  ~]  }^  |_  _}  ~E  Fi  ~j  k}  ~~  _  ~`  }a  am  	nIGJ GL12348KGL 	&MGN 	OGP 
V'BS:T	UQGR 	SGT 	$UGV 	WGX 	}YGZ 	[G\ 
]G^ 	_G` 	aGb 	.cGd 	eGf 	IgGh 	iGj 
kGl 	mGn 	oGp 	-qGr 	sGt 	guGv 	wGx 
yGz 	{G| 	}G~ 	'G@ G$=>|LMNdSAGB 	CGD 	SEGF 	GGH 
IGJ 	KGL 	MGN 	9OGP G$EF|TUVVZ[QGR 	SGT 	}UGV 	WGX 
 YGZ 	[G\ 	]G^ 	3_G` C)B!C!G!GHd!e!kik p pq} ~  !E  CE  F  G  H  HL  	MaGb 	cGd 	\eGf 	gGh 
"iGj 	kGl 	mGn 	/oGp 	qGr 	SsGt 	uGv 
(wGx 	yGz 	{G| 	8}G~ G$MN|\]^^bcG@ 	AGB 	tCGD 	EGF 
GGH 	IGJ 	KGL 	0MGN G$EF|TUVVZ[OGP 	QGR 	[SGT 	UGV 
WGX 	YGZ 	[G\ 	1]G^ E,/016_G` 	aGb 	\cGd 	eGf 
gGh 	iGj 	kGl 	EmGn 	oGp 	[qGr 	sGt 
uGv 	wGx 	yGz 	){G| 	}G~ 	[G@ 	AGB 
CGD 	EGF 	GGH 	IGJ 	KGL 	MG G Gr8   c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  t	        |       d	       y )NT)parentsexist_okzmap1_01a_edge_trigger_gap.jsonFr   )ensure_asciiindentr_  rD   rE   map1_01a_edge_trigger_gap.md)mkdir
write_textrH   dumpsre  )r`  out_dirs     r6   write_outputsr  "
  sd    MM$M.//;;

7q9D@ <  --99(7:KV]9^r8   c                 $   t        j                  t              } | j                  dt        t
               | j                  dt        t        dz         | j                  dt        t        dz         | j                  dt        t               | j                         }t        |j                  t        |j                  i       t        |j                  i             }t        ||j                         t        d	|j                  d
z          y )N)descriptionz--exe)typedefaultz--runtime-movementr  z --original-collision-route-auditr  z	--out-dirz#wrote map1_01a edge trigger gap -> r{  )argparseArgumentParser__doc__add_argumentr   EXEr1  
parse_argsrN  rQ   rL   r  r  r  r  print)parserargsr`  s      r6   mainr  +
  s    $$9F
dC8
,4G^A^_
:sUzOz{
$<D$'',$55r:G
 '4<<(	/?]0]/^
_`r8   __main__)r5   
int | Nonereturn
str | None)r5   rq   r  rq   )rA   zlist[str] | Noner  r   )r   r   rK   r   r  r   )
rQ   r  rR   
list[dict]rS   rq   rT   rq   r  r  )
rQ   r  rR   r  rS   rq   rT   rq   r  r   )rQ   r  rR   r  rS   rq   r  r  )rQ   r  rR   r  rg   tuple[int, int]r  r  )rR   r  rn   r   r  r  )r5   rq   rg   r  r  r(  )
rQ   r  rR   r  rg   r  r5   rq   r  rq   )
rQ   r  rR   r  rg   r  r   rq   r  	list[str])
rQ   r  rR   r  rg   r  r5   rq   r  r  )rQ   r  rR   r  rg   r  r  r  )
rQ   r  rR   r  r   rq   r   rq   r  r  )rQ   r  rR   r  r   rq   r  r  )rQ   r  rR   r  rg   r  r  rq   )rR   r  rS   r  r  r  )r5   r  r  ztuple[int, int] | None)@   )
rQ   r  rR   r  r   r  r   rq   r  z	list[int])r   dict[str, int]r  r  )rQ   r  rR   r  rg   r  r   r   r   r  r  r  )r   r  r  r   )
rQ   r  rR   r  r  r  r   r  r  r   )r   r  r  r  )r   rq   r  r   )r  r  r  r  )rQ   r  rR   r  r   r  rg   r  r   r   r  rq   r   r  r  r  )
rQ   r  rR   r  r   r  r  rq   r  r   )r  rq   r  r   r  r   r9  )
rQ   r  rR   r  r   r  r  zlist[int] | Noner  r   )rQ   r  rR   r  r  r  )
rQ   r  rR   r  r   r  rg   r  r  r   )rQ   r  rR   r  r  rq   r  r   )r  r   r  rq   )r   r   r  r   r  r   )rQ   r  rR   r  r   r  r  r   )rQ   r  rR   r  r   r  r   rq   r   r   r  r   )rQ   r  rR   r  r  r   r  r  )r  r   r  r   r  r(  )r  r   r  r   r  r  )r6  r   r  dict | Noner  r  r  r   )r`  r   r  r   )r`  r   r  r   r  None)r  r  )fr  
__future__r   r  ri  rH   r`   pathlibr   typingr   probe_exe_scene_tablesr   r   r   r	   __file__resolverw  ROOTr1  r  r   r   r3  r4  r5  rr  r  rs  r  r  r   r   r   r   r   rW  rX  rY  r{  r|  r  r  r   r  r  r7   r:   r<   rB   rL   rV   rZ   rd   rl   rs   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r.  ro  r  r  r  r  r  r  r  r  r  r-  rk  rw  r  r  r  r  r  r  rN  re  ru  r  r  __name__r3   r8   r6   <module>r     s   V "       ^ ^ H~''*
Ul
]		  
!  &BC+g
 :J
  ' 1 ", 7    # ", $ " #      &8 # %  	  "$#)E	 "$#)E	 "$#)E	 "$#)E	' 88@)8&5(2.P*$5	; 		  	
 &*Z6	66 6 	6
 6 6r&R(	(( ( 	(
 
(4 "@N	NN N 	N
 N N N NbPn *	a	aa a 	a
 
aH,f  $	;	;; ; 	;
 
;|S$	$$ $ 	$
 
$N,^6sl(E	EE E 	E
 E 
EPRjE	EE E 
	EP8"!J $(26hh!h %0h 
	hV	M`Rj
 25 _a  zF r8   