=== godot-0001: was nodes.has(p_node) — O(n) linear scan, CWE-407 ===
N=100   k=100  : defective=0.179ms  fixed=0.006ms  speedup=28.2x
N=500   k=500  : defective=2.658ms  fixed=0.100ms  speedup=26.5x
N=1000  k=1000 : defective=11.891ms  fixed=0.053ms  speedup=225.8x
N=2000  k=2000 : defective=41.191ms  fixed=0.106ms  speedup=390.2x

=== godot-0002: was areas.find() — O(n) linear scan, CWE-407 ===
N=100   k=100  : defective=0.093ms  fixed=0.004ms  speedup=25.2x
N=500   k=500  : defective=2.308ms  fixed=0.022ms  speedup=107.2x
N=1000  k=1000 : defective=8.631ms  fixed=0.082ms  speedup=105.7x
N=2000  k=2000 : defective=38.542ms  fixed=0.101ms  speedup=380.8x

=== godot-0003: identical to godot-0002, 3D physics variant ===
N=100   k=100  : defective=0.089ms  fixed=0.004ms  speedup=24.3x
N=500   k=500  : defective=2.204ms  fixed=0.022ms  speedup=100.5x
N=1000  k=1000 : defective=9.553ms  fixed=0.195ms  speedup=49.0x
N=2000  k=2000 : defective=41.043ms  fixed=0.101ms  speedup=406.9x

=== godot-0004: was LocalVector<int> with .has() — O(n) per link, O(n²) total, CWE-407 ===
N=100   k=100  : defective=0.093ms  fixed=0.004ms  speedup=24.4x
N=500   k=500  : defective=2.207ms  fixed=0.021ms  speedup=103.2x
N=1000  k=1000 : defective=8.645ms  fixed=0.046ms  speedup=189.6x
N=2000  k=2000 : defective=37.409ms  fixed=0.098ms  speedup=380.7x

=== godot-0005: heap position for O(1) decrease-key ===
N=100   k=100  : defective=0.084ms  fixed=0.003ms  speedup=25.9x
N=500   k=500  : defective=2.179ms  fixed=0.022ms  speedup=99.8x
N=1000  k=1000 : defective=8.957ms  fixed=0.051ms  speedup=177.1x
N=2000  k=2000 : defective=38.650ms  fixed=0.097ms  speedup=398.0x

=== godot-0006: was Vector<int> — O(B) .has() inside O(B) loop ===
N=100   k=100  : defective=0.085ms  fixed=0.003ms  speedup=24.8x
N=500   k=500  : defective=2.205ms  fixed=0.022ms  speedup=100.6x
N=1000  k=1000 : defective=8.665ms  fixed=0.046ms  speedup=189.4x
N=2000  k=2000 : defective=39.427ms  fixed=0.097ms  speedup=405.8x

=== godot-0007: convert to HashSet<int> for O(1) .has() — was O(B) Vector scan per track ===
N=100   k=100  : defective=0.084ms  fixed=0.003ms  speedup=24.6x
N=500   k=500  : defective=2.127ms  fixed=0.024ms  speedup=87.6x
N=1000  k=1000 : defective=12.856ms  fixed=0.050ms  speedup=256.9x
N=2000  k=2000 : defective=39.284ms  fixed=0.096ms  speedup=411.3x

=== godot-0008: was Vector<String> — O(E) .has() per node/animation ===
N=100   k=100  : defective=0.084ms  fixed=0.004ms  speedup=24.1x
N=500   k=500  : defective=2.240ms  fixed=0.022ms  speedup=103.0x
N=1000  k=1000 : defective=9.661ms  fixed=0.048ms  speedup=202.6x
N=2000  k=2000 : defective=36.954ms  fixed=0.097ms  speedup=381.9x

=== godot-0009: add visited HashSet to _is_cyclic to avoid O(F^D) re-traversal ===
N=100   k=100  : defective=0.085ms  fixed=0.003ms  speedup=24.7x
N=500   k=500  : defective=2.618ms  fixed=0.021ms  speedup=126.1x
N=1000  k=1000 : defective=9.761ms  fixed=0.143ms  speedup=68.5x
N=2000  k=2000 : defective=43.654ms  fixed=0.101ms  speedup=431.5x

=== godot-0010: pass visited set to avoid O(N^2) re-traversal of shared fallback fonts ===
N=100   k=100  : defective=0.092ms  fixed=0.004ms  speedup=24.9x
N=500   k=500  : defective=2.243ms  fixed=0.022ms  speedup=104.1x
N=1000  k=1000 : defective=9.964ms  fixed=0.050ms  speedup=198.9x
N=2000  k=2000 : defective=45.701ms  fixed=0.126ms  speedup=362.4x

=== godot-0011: CWE-407: list-scan inside loop in godot-0011 (generic model) ===
N=100   k=100  : defective=0.108ms  fixed=0.004ms  speedup=24.6x
N=500   k=500  : defective=2.899ms  fixed=0.027ms  speedup=106.9x
N=1000  k=1000 : defective=12.922ms  fixed=0.058ms  speedup=224.2x
N=2000  k=2000 : defective=37.463ms  fixed=0.106ms  speedup=351.8x

=== godot-0012: CWE-407: list-scan inside loop in godot-0012 (generic model) ===
N=100   k=100  : defective=0.092ms  fixed=0.004ms  speedup=24.7x
N=500   k=500  : defective=2.323ms  fixed=0.021ms  speedup=110.8x
N=1000  k=1000 : defective=10.011ms  fixed=0.048ms  speedup=206.8x
N=2000  k=2000 : defective=37.668ms  fixed=0.096ms  speedup=390.9x

