# Optimization Pass 01 Log This log records the step-by-step measurements for the first visibility-focused optimization pass. Each section is appended after a discrete code change using `scripts/diff_performance_baseline.py`. ## Step 0 - Pre-optimization baseline Measured on 2026-03-31T18:02:56-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Current default tangent-corner routing still pays for eager exact visibility-graph construction. - Visibility-build ray casts dominate all three hotspot scenarios before any routing changes. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_04_sbends_and_radii | duration_s | 1.9938 | 2.0940 | +0.1002 | | example_04_sbends_and_radii | nodes_expanded | 15.0000 | 15.0000 | +0.0000 | | example_04_sbends_and_radii | visibility_builds | 3.0000 | 3.0000 | +0.0000 | | example_04_sbends_and_radii | visibility_corner_pairs_checked | 18148.0000 | 18148.0000 | +0.0000 | | example_04_sbends_and_radii | ray_cast_calls | 18218.0000 | 18218.0000 | +0.0000 | | example_04_sbends_and_radii | ray_cast_calls_visibility_build | 18148.0000 | 18148.0000 | +0.0000 | | example_04_sbends_and_radii | ray_cast_exact_geometry_checks | 21265.0000 | 21265.0000 | +0.0000 | | example_04_sbends_and_radii | ray_cast_candidate_bounds | 50717.0000 | 50717.0000 | +0.0000 | | example_06_bend_collision_models | duration_s | 4.1186 | 4.2483 | +0.1297 | | example_06_bend_collision_models | nodes_expanded | 240.0000 | 240.0000 | +0.0000 | | example_06_bend_collision_models | visibility_builds | 6.0000 | 6.0000 | +0.0000 | | example_06_bend_collision_models | visibility_corner_pairs_checked | 39848.0000 | 39848.0000 | +0.0000 | | example_06_bend_collision_models | ray_cast_calls | 40530.0000 | 40530.0000 | +0.0000 | | example_06_bend_collision_models | ray_cast_calls_visibility_build | 39848.0000 | 39848.0000 | +0.0000 | | example_06_bend_collision_models | ray_cast_exact_geometry_checks | 36858.0000 | 36858.0000 | +0.0000 | | example_06_bend_collision_models | ray_cast_candidate_bounds | 121732.0000 | 121732.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 1.3734 | 1.4031 | +0.0297 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | visibility_builds | 11.0000 | 11.0000 | +0.0000 | | example_07_large_scale_routing | visibility_corner_pairs_checked | 10768.0000 | 10768.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_calls | 11151.0000 | 11151.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_calls_visibility_build | 10768.0000 | 10768.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_exact_geometry_checks | 11651.0000 | 11651.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_candidate_bounds | 21198.0000 | 21198.0000 | +0.0000 | ## Step 1 - Lazy visibility state split Measured on 2026-03-31T18:05:49-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Corner-index rebuilds are now measured separately from exact visibility-graph builds. - Default tangent-corner routing still triggers exact graph work at query time, so visibility-build counters remain hot in this step. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_04_sbends_and_radii | duration_s | 1.9938 | 0.2543 | -1.7395 | | example_04_sbends_and_radii | nodes_expanded | 15.0000 | 15.0000 | +0.0000 | | example_04_sbends_and_radii | visibility_corner_index_builds | - | 2.0000 | - | | example_04_sbends_and_radii | visibility_builds | 3.0000 | 2.0000 | -1.0000 | | example_04_sbends_and_radii | visibility_corner_pairs_checked | 18148.0000 | 1892.0000 | -16256.0000 | | example_04_sbends_and_radii | ray_cast_calls | 18218.0000 | 1962.0000 | -16256.0000 | | example_04_sbends_and_radii | ray_cast_calls_visibility_build | 18148.0000 | 1892.0000 | -16256.0000 | | example_04_sbends_and_radii | ray_cast_exact_geometry_checks | 21265.0000 | 2445.0000 | -18820.0000 | | example_04_sbends_and_radii | ray_cast_candidate_bounds | 50717.0000 | 3864.0000 | -46853.0000 | | example_06_bend_collision_models | duration_s | 4.1186 | 0.2055 | -3.9131 | | example_06_bend_collision_models | nodes_expanded | 240.0000 | 240.0000 | +0.0000 | | example_06_bend_collision_models | visibility_corner_index_builds | - | 3.0000 | - | | example_06_bend_collision_models | visibility_builds | 6.0000 | 3.0000 | -3.0000 | | example_06_bend_collision_models | visibility_corner_pairs_checked | 39848.0000 | 396.0000 | -39452.0000 | | example_06_bend_collision_models | ray_cast_calls | 40530.0000 | 1078.0000 | -39452.0000 | | example_06_bend_collision_models | ray_cast_calls_visibility_build | 39848.0000 | 396.0000 | -39452.0000 | | example_06_bend_collision_models | ray_cast_exact_geometry_checks | 36858.0000 | 0.0000 | -36858.0000 | | example_06_bend_collision_models | ray_cast_candidate_bounds | 121732.0000 | 877.0000 | -120855.0000 | | example_07_large_scale_routing | duration_s | 1.3734 | 1.3958 | +0.0224 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | visibility_corner_index_builds | - | 10.0000 | - | | example_07_large_scale_routing | visibility_builds | 11.0000 | 10.0000 | -1.0000 | | example_07_large_scale_routing | visibility_corner_pairs_checked | 10768.0000 | 10768.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_calls | 11151.0000 | 11151.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_calls_visibility_build | 10768.0000 | 10768.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_exact_geometry_checks | 11651.0000 | 11651.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_candidate_bounds | 21198.0000 | 21198.0000 | +0.0000 | ## Step 2 - Tangent-corner cheap path Measured on 2026-03-31T18:06:53-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Default tangent-corner expansion now uses only the corner index and never requests the exact corner graph. - The expected win is zero visibility-build ray casts in the hotspot trio while keeping node counts stable. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_04_sbends_and_radii | duration_s | 1.9938 | 0.0280 | -1.9659 | | example_04_sbends_and_radii | nodes_expanded | 15.0000 | 15.0000 | +0.0000 | | example_04_sbends_and_radii | visibility_corner_index_builds | - | 2.0000 | - | | example_04_sbends_and_radii | visibility_builds | 3.0000 | 0.0000 | -3.0000 | | example_04_sbends_and_radii | visibility_corner_pairs_checked | 18148.0000 | 0.0000 | -18148.0000 | | example_04_sbends_and_radii | ray_cast_calls | 18218.0000 | 70.0000 | -18148.0000 | | example_04_sbends_and_radii | ray_cast_calls_visibility_build | 18148.0000 | 0.0000 | -18148.0000 | | example_04_sbends_and_radii | ray_cast_exact_geometry_checks | 21265.0000 | 0.0000 | -21265.0000 | | example_04_sbends_and_radii | ray_cast_candidate_bounds | 50717.0000 | 4.0000 | -50713.0000 | | example_06_bend_collision_models | duration_s | 4.1186 | 0.1900 | -3.9286 | | example_06_bend_collision_models | nodes_expanded | 240.0000 | 240.0000 | +0.0000 | | example_06_bend_collision_models | visibility_corner_index_builds | - | 3.0000 | - | | example_06_bend_collision_models | visibility_builds | 6.0000 | 0.0000 | -6.0000 | | example_06_bend_collision_models | visibility_corner_pairs_checked | 39848.0000 | 0.0000 | -39848.0000 | | example_06_bend_collision_models | ray_cast_calls | 40530.0000 | 682.0000 | -39848.0000 | | example_06_bend_collision_models | ray_cast_calls_visibility_build | 39848.0000 | 0.0000 | -39848.0000 | | example_06_bend_collision_models | ray_cast_exact_geometry_checks | 36858.0000 | 0.0000 | -36858.0000 | | example_06_bend_collision_models | ray_cast_candidate_bounds | 121732.0000 | 97.0000 | -121635.0000 | | example_07_large_scale_routing | duration_s | 1.3734 | 0.2042 | -1.1693 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | visibility_corner_index_builds | - | 10.0000 | - | | example_07_large_scale_routing | visibility_builds | 11.0000 | 0.0000 | -11.0000 | | example_07_large_scale_routing | visibility_corner_pairs_checked | 10768.0000 | 0.0000 | -10768.0000 | | example_07_large_scale_routing | ray_cast_calls | 11151.0000 | 383.0000 | -10768.0000 | | example_07_large_scale_routing | ray_cast_calls_visibility_build | 10768.0000 | 0.0000 | -10768.0000 | | example_07_large_scale_routing | ray_cast_exact_geometry_checks | 11651.0000 | 150.0000 | -11501.0000 | | example_07_large_scale_routing | ray_cast_candidate_bounds | 21198.0000 | 683.0000 | -20515.0000 | ## Step 3 - Final optimized baseline Measured on 2026-03-31T18:08:19-07:00. Baseline: `/tmp/inire_pre_optimization_baseline.json`. Findings: - Committed baseline artifacts were regenerated from the optimized router after the tangent-corner change landed. - The hotspot trio now reaches the same node counts with zero exact visibility-graph builds in default tangent-corner mode. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_04_sbends_and_radii | duration_s | 1.9938 | 0.0279 | -1.9659 | | example_04_sbends_and_radii | nodes_expanded | 15.0000 | 15.0000 | +0.0000 | | example_04_sbends_and_radii | visibility_corner_index_builds | - | 2.0000 | - | | example_04_sbends_and_radii | visibility_builds | 3.0000 | 0.0000 | -3.0000 | | example_04_sbends_and_radii | visibility_corner_pairs_checked | 18148.0000 | 0.0000 | -18148.0000 | | example_04_sbends_and_radii | ray_cast_calls | 18218.0000 | 70.0000 | -18148.0000 | | example_04_sbends_and_radii | ray_cast_calls_visibility_build | 18148.0000 | 0.0000 | -18148.0000 | | example_04_sbends_and_radii | ray_cast_exact_geometry_checks | 21265.0000 | 0.0000 | -21265.0000 | | example_04_sbends_and_radii | ray_cast_candidate_bounds | 50717.0000 | 4.0000 | -50713.0000 | | example_06_bend_collision_models | duration_s | 4.1186 | 0.1900 | -3.9286 | | example_06_bend_collision_models | nodes_expanded | 240.0000 | 240.0000 | +0.0000 | | example_06_bend_collision_models | visibility_corner_index_builds | - | 3.0000 | - | | example_06_bend_collision_models | visibility_builds | 6.0000 | 0.0000 | -6.0000 | | example_06_bend_collision_models | visibility_corner_pairs_checked | 39848.0000 | 0.0000 | -39848.0000 | | example_06_bend_collision_models | ray_cast_calls | 40530.0000 | 682.0000 | -39848.0000 | | example_06_bend_collision_models | ray_cast_calls_visibility_build | 39848.0000 | 0.0000 | -39848.0000 | | example_06_bend_collision_models | ray_cast_exact_geometry_checks | 36858.0000 | 0.0000 | -36858.0000 | | example_06_bend_collision_models | ray_cast_candidate_bounds | 121732.0000 | 97.0000 | -121635.0000 | | example_07_large_scale_routing | duration_s | 1.3734 | 0.2004 | -1.1730 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | visibility_corner_index_builds | - | 10.0000 | - | | example_07_large_scale_routing | visibility_builds | 11.0000 | 0.0000 | -11.0000 | | example_07_large_scale_routing | visibility_corner_pairs_checked | 10768.0000 | 0.0000 | -10768.0000 | | example_07_large_scale_routing | ray_cast_calls | 11151.0000 | 383.0000 | -10768.0000 | | example_07_large_scale_routing | ray_cast_calls_visibility_build | 10768.0000 | 0.0000 | -10768.0000 | | example_07_large_scale_routing | ray_cast_exact_geometry_checks | 11651.0000 | 150.0000 | -11501.0000 | | example_07_large_scale_routing | ray_cast_candidate_bounds | 21198.0000 | 683.0000 | -20515.0000 | ## Step 4 - Tangent candidate scan baseline Measured on 2026-03-31T18:33:15-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The next hotspot is tangent-corner candidate scanning, especially example_02 and example_07. - This baseline captures current candidate-check volume before narrowing the corner-index query window. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3365 | 0.3321 | -0.0044 | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | visibility_tangent_candidate_scans | 363.0000 | 363.0000 | +0.0000 | | example_02_congestion_resolution | visibility_tangent_candidate_corner_checks | 18991.0000 | 18991.0000 | +0.0000 | | example_02_congestion_resolution | visibility_tangent_candidate_ray_tests | 253.0000 | 253.0000 | +0.0000 | | example_02_congestion_resolution | ray_cast_calls | 1164.0000 | 1164.0000 | +0.0000 | | example_02_congestion_resolution | danger_map_lookup_calls | 2208.0000 | 2208.0000 | +0.0000 | | example_02_congestion_resolution | score_component_calls | 976.0000 | 976.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2503 | 0.2404 | -0.0099 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | visibility_tangent_candidate_scans | 280.0000 | 280.0000 | +0.0000 | | example_05_orientation_stress | visibility_tangent_candidate_corner_checks | 1483.0000 | 1483.0000 | +0.0000 | | example_05_orientation_stress | visibility_tangent_candidate_ray_tests | 9.0000 | 9.0000 | +0.0000 | | example_05_orientation_stress | ray_cast_calls | 1243.0000 | 1243.0000 | +0.0000 | | example_05_orientation_stress | danger_map_lookup_calls | 2079.0000 | 2079.0000 | +0.0000 | | example_05_orientation_stress | score_component_calls | 1198.0000 | 1198.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2034 | 0.1962 | -0.0072 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | visibility_tangent_candidate_scans | 68.0000 | 68.0000 | +0.0000 | | example_07_large_scale_routing | visibility_tangent_candidate_corner_checks | 34735.0000 | 34735.0000 | +0.0000 | | example_07_large_scale_routing | visibility_tangent_candidate_ray_tests | 77.0000 | 77.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_calls | 383.0000 | 383.0000 | +0.0000 | | example_07_large_scale_routing | danger_map_lookup_calls | 681.0000 | 681.0000 | +0.0000 | | example_07_large_scale_routing | score_component_calls | 291.0000 | 291.0000 | +0.0000 | ## Step 5 - Tangent candidate strip query Measured on 2026-03-31T18:34:10-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tangent-corner candidate collection now queries orientation-aware radius strips instead of scanning a full square around each search state. - The main acceptance signal is lower tangent corner checks with unchanged node counts and route outcomes. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3365 | 0.3361 | -0.0004 | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | visibility_tangent_candidate_scans | 363.0000 | 363.0000 | +0.0000 | | example_02_congestion_resolution | visibility_tangent_candidate_corner_checks | 18991.0000 | 873.0000 | -18118.0000 | | example_02_congestion_resolution | visibility_tangent_candidate_ray_tests | 253.0000 | 253.0000 | +0.0000 | | example_02_congestion_resolution | ray_cast_calls | 1164.0000 | 1164.0000 | +0.0000 | | example_02_congestion_resolution | danger_map_lookup_calls | 2208.0000 | 2208.0000 | +0.0000 | | example_02_congestion_resolution | score_component_calls | 976.0000 | 976.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2503 | 0.2500 | -0.0003 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | visibility_tangent_candidate_scans | 280.0000 | 280.0000 | +0.0000 | | example_05_orientation_stress | visibility_tangent_candidate_corner_checks | 1483.0000 | 70.0000 | -1413.0000 | | example_05_orientation_stress | visibility_tangent_candidate_ray_tests | 9.0000 | 9.0000 | +0.0000 | | example_05_orientation_stress | ray_cast_calls | 1243.0000 | 1243.0000 | +0.0000 | | example_05_orientation_stress | danger_map_lookup_calls | 2079.0000 | 2079.0000 | +0.0000 | | example_05_orientation_stress | score_component_calls | 1198.0000 | 1198.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2034 | 0.1874 | -0.0160 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | visibility_tangent_candidate_scans | 68.0000 | 68.0000 | +0.0000 | | example_07_large_scale_routing | visibility_tangent_candidate_corner_checks | 34735.0000 | 321.0000 | -34414.0000 | | example_07_large_scale_routing | visibility_tangent_candidate_ray_tests | 77.0000 | 77.0000 | +0.0000 | | example_07_large_scale_routing | ray_cast_calls | 383.0000 | 383.0000 | +0.0000 | | example_07_large_scale_routing | danger_map_lookup_calls | 681.0000 | 681.0000 | +0.0000 | | example_07_large_scale_routing | score_component_calls | 291.0000 | 291.0000 | +0.0000 | ## Step 6 - Empty danger-map fast path Measured on 2026-03-31T18:50:25-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Scoring now skips danger-map sampling when the KD-tree is empty, which should primarily help obstacle-free scenarios. - The no-warm-start example_07 variant is included as a canary; it is not part of the default baseline corpus, so baseline values may be absent on first measurement. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3325 | 0.3260 | -0.0065 | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | score_component_calls | 976.0000 | 976.0000 | +0.0000 | | example_02_congestion_resolution | danger_map_lookup_calls | 2208.0000 | 0.0000 | -2208.0000 | | example_02_congestion_resolution | danger_map_cache_hits | 1433.0000 | 0.0000 | -1433.0000 | | example_02_congestion_resolution | danger_map_cache_misses | 775.0000 | 0.0000 | -775.0000 | | example_02_congestion_resolution | warm_start_paths_built | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | warm_start_paths_used | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2404 | 0.2375 | -0.0029 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | score_component_calls | 1198.0000 | 1198.0000 | +0.0000 | | example_05_orientation_stress | danger_map_lookup_calls | 2079.0000 | 0.0000 | -2079.0000 | | example_05_orientation_stress | danger_map_cache_hits | 1386.0000 | 0.0000 | -1386.0000 | | example_05_orientation_stress | danger_map_cache_misses | 693.0000 | 0.0000 | -693.0000 | | example_05_orientation_stress | warm_start_paths_built | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | warm_start_paths_used | 2.0000 | 2.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | added | - | - | - | ## Step 7 - Verification baseline Measured on 2026-03-31T19:00:03-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The next low-risk optimization target is redundant verification during refinement, especially in example_02. - The no-warm-start example_07 canary stays in the measurement set even though it is not part of the default baseline corpus. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3220 | 0.3304 | +0.0084 | | example_02_congestion_resolution | verify_path_report_calls | 35.0000 | 35.0000 | +0.0000 | | example_02_congestion_resolution | refine_path_calls | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | refinement_candidates_verified | 26.0000 | 26.0000 | +0.0000 | | example_02_congestion_resolution | refinement_candidates_accepted | 2.0000 | 2.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | warm_start_paths_built | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | warm_start_paths_used | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2340 | 0.2348 | +0.0008 | | example_05_orientation_stress | verify_path_report_calls | 12.0000 | 12.0000 | +0.0000 | | example_05_orientation_stress | refine_path_calls | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | refinement_candidates_verified | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | refinement_candidates_accepted | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | warm_start_paths_built | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | warm_start_paths_used | 2.0000 | 2.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | added | - | - | - | ## Step 8 - Deferred refinement verification Measured on 2026-03-31T19:02:46-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Per-net verification inside _refine_results() is now deferred to the final verification pass to avoid verifying the same refined path twice. - The main expected signal is fewer verify_path_report_calls with unchanged route outcomes. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3220 | 0.3273 | +0.0052 | | example_02_congestion_resolution | verify_path_report_calls | 35.0000 | 32.0000 | -3.0000 | | example_02_congestion_resolution | refine_path_calls | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | refinement_candidates_verified | 26.0000 | 26.0000 | +0.0000 | | example_02_congestion_resolution | refinement_candidates_accepted | 2.0000 | 2.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | warm_start_paths_built | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | warm_start_paths_used | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2340 | 0.2350 | +0.0011 | | example_05_orientation_stress | verify_path_report_calls | 12.0000 | 9.0000 | -3.0000 | | example_05_orientation_stress | refine_path_calls | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | refinement_candidates_verified | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | refinement_candidates_accepted | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | warm_start_paths_built | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | warm_start_paths_used | 2.0000 | 2.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | added | - | - | - | ## Step 9 - Dynamic rtree for congestion and verification Measured on 2026-03-31T20:12:56-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Dynamic congestion confirmation and dynamic-path verification now use the mutable rtree index instead of rebuilding a transient STRtree. - The expected signal is dynamic_tree_rebuilds dropping to zero on the normal corpus while route outcomes stay unchanged. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3211 | 0.3273 | +0.0062 | | example_02_congestion_resolution | dynamic_tree_rebuilds | 6.0000 | 0.0000 | -6.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | verify_path_report_calls | 32.0000 | 32.0000 | +0.0000 | | example_02_congestion_resolution | verify_dynamic_exact_pair_checks | 90.0000 | 130.0000 | +40.0000 | | example_05_orientation_stress | duration_s | 0.2351 | 0.2324 | -0.0028 | | example_05_orientation_stress | dynamic_tree_rebuilds | 10.0000 | 0.0000 | -10.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 66.0000 | 68.0000 | +2.0000 | | example_05_orientation_stress | verify_path_report_calls | 9.0000 | 9.0000 | +0.0000 | | example_05_orientation_stress | verify_dynamic_exact_pair_checks | 2.0000 | 4.0000 | +2.0000 | | example_07_large_scale_routing_no_warm_start | added | - | - | - | ## Step 10 - Incremental dynamic congestion grid Measured on 2026-03-31T20:29:38-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Dynamic path removal is now net-owned and the congestion grid is updated incrementally instead of being invalidated and rebuilt. - The expected signal is dynamic_grid_rebuilds dropping to zero and better performance on congestion-heavy or no-warm-start routing. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2394 | 0.2605 | +0.0211 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 68.0000 | 68.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | dynamic_grid_rebuilds | 3.0000 | 0.0000 | -3.0000 | | example_05_orientation_stress | dynamic_path_objects_added | 37.0000 | 37.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_removed | 25.0000 | 25.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | added | - | - | - | ## Step 11 - Per-polygon congestion broad phase Measured on 2026-03-31T20:36:35-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion candidate collection now scans per dilated polygon bounds instead of the move-wide union bounds. - The main expected signal is fewer broad-phase candidate ids, especially on large dynamic-path states such as example_07 without warm start. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2541 | 0.2488 | -0.0053 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | - | 83.0000 | - | | example_05_orientation_stress | congestion_exact_pair_checks | 68.0000 | 70.0000 | +2.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | dynamic_grid_rebuilds | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_added | 37.0000 | 37.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_removed | 25.0000 | 25.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1984 | 0.1867 | -0.0118 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | - | 0.0000 | - | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | dynamic_grid_rebuilds | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | dynamic_path_objects_added | 88.0000 | 88.0000 | +0.0000 | | example_07_large_scale_routing | dynamic_path_objects_removed | 44.0000 | 44.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | added | - | - | - | ## Step 12 - Cheap exact congestion predicates Measured on 2026-03-31T20:47:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion and dynamic verification now use non-constructive overlap predicates instead of building intersection geometries for every exact pair check. - The no-warm-start example_07 canary now reports its current metrics directly in the log, which makes the congestion hot path measurable even though it is not part of the committed baseline corpus. - The canary runtime dropped materially with unchanged node and congestion counts, which confirms that exact confirmation cost was a major part of the remaining congestion overhead. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2541 | 0.2682 | +0.0141 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | - | 83.0000 | - | | example_05_orientation_stress | congestion_exact_pair_checks | 68.0000 | 70.0000 | +2.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | dynamic_grid_rebuilds | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_added | 37.0000 | 37.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_removed | 25.0000 | 25.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 109.2839 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 641300.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 1737551.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 1192907.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 5379.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 641300.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_grid_rebuilds | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_added | - | 1601.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_removed | - | 1462.0000 | - | ## Step 13 - Relevant-polygon exact congestion checks Measured on 2026-03-31T21:03:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion candidate tracking now remembers which dilated move polygons produced each candidate object, so exact confirmation no longer retests candidates against unrelated polygons. - This slice was largely neutral in aggregate counters: the no-warm-start canary still spent most of its time in congestion, which means the next win had to come from reducing how often congestion is queried at all. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2523 | 0.2753 | +0.0230 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 83.0000 | 83.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 70.0000 | 70.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | dynamic_grid_rebuilds | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_added | 37.0000 | 37.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_removed | 25.0000 | 25.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 104.0661 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 641300.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 1737551.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 1208409.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 5379.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 641300.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_grid_rebuilds | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_added | - | 1601.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_removed | - | 1462.0000 | - | ## Step 14 - Self-collision before congestion Measured on 2026-03-31T21:08:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Moves that self-intersect the ancestor chain are now rejected before congestion scoring, so the search no longer spends congestion work on moves that will be discarded anyway. - This is the first slice that materially cut congestion volume on the no-warm-start example_07 canary. - Relative to Step 13, the canary dropped from `641300` to `529038` congestion checks, from `1737551` to `1164421` candidate ids, and from `1208409` to `838008` exact pair checks while runtime improved from `104.07s` to `102.02s`. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2523 | 0.2662 | +0.0139 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 83.0000 | 83.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 70.0000 | 70.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 412.0000 | 412.0000 | +0.0000 | | example_05_orientation_stress | dynamic_grid_rebuilds | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_added | 37.0000 | 37.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_removed | 25.0000 | 25.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 102.0202 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 529038.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 1164421.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 838008.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 3933.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 529038.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_grid_rebuilds | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_added | - | 1601.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_removed | - | 1462.0000 | - | ## Step 15 - Uncongested dominance before congestion Measured on 2026-03-31T21:18:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Admission now computes the uncongested component score before congestion and prunes moves that are already closed-set-dominated even with zero congestion penalty. - This slice materially reduced congestion misses without increasing `score_component_calls`, so it removed congestion work instead of shifting it into scoring. - Relative to Step 14, the no-warm-start example_07 canary dropped from `529038` to `344747` congestion checks, from `1164421` to `375624` candidate ids, and from `838008` to `314367` exact pair checks while runtime improved from `102.02s` to `88.86s`. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2494 | 0.2619 | +0.0125 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 412.0000 | 213.0000 | -199.0000 | | example_05_orientation_stress | congestion_candidate_ids | 83.0000 | 19.0000 | -64.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 70.0000 | 18.0000 | -52.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 412.0000 | 213.0000 | -199.0000 | | example_05_orientation_stress | dynamic_grid_rebuilds | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_added | 37.0000 | 37.0000 | +0.0000 | | example_05_orientation_stress | dynamic_path_objects_removed | 25.0000 | 25.0000 | +0.0000 | | example_05_orientation_stress | score_component_calls | 1198.0000 | 1198.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 88.8639 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 375624.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 314367.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 3300.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_grid_rebuilds | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_added | - | 1601.0000 | - | | example_07_large_scale_routing_no_warm_start | dynamic_path_objects_removed | - | 1462.0000 | - | | example_07_large_scale_routing_no_warm_start | score_component_calls | - | 534994.0000 | - | ## Step 16 - Lazy congestion on pop (rejected) Measured on 2026-03-31T23:55:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion resolution was moved from move generation to node pop, with penalized nodes requeued after their overlap count was resolved. - The first cut reduced raw congestion misses on the no-warm-start example_07 canary from `344747` to `331308`, but runtime still regressed to about `99.00s` and nodes expanded rose to `184853`. - Tightening lazy-requeue bookkeeping did not recover the search-order penalty. A later measurement pushed the same canary to `153.63s`, `247887` expanded nodes, `427874` congestion misses, and `166395` lazy requeues. - This pass was rejected and reverted. The remaining congestion misses appear structural, but optimistic unresolved nodes created too much extra search churn. ## Step 17 - Grid-span congestion broad-phase cache Measured on 2026-03-31T22:44:31-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion broad-phase candidate unions are now cached by queried grid-cell span within a single A* run. - The exact overlap cache still misses at the previous rate, but the new grid-span cache hits heavily on repeated local congestion probes. - Relative to the reverted Step 15 state, the no-warm-start example_07 canary improved from about 87.20s to 84.71s with unchanged nodes expanded and congestion check calls. - The canary's broad-phase work also dropped modestly, from 375624 to 364731 candidate ids and from 314367 to 305397 exact pair checks. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2386 | 0.2380 | -0.0007 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | moves_generated | 1624.0000 | 1624.0000 | +0.0000 | | example_05_orientation_stress | moves_added | 681.0000 | 681.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_grid_span_cache_hits | - | 133.0000 | - | | example_05_orientation_stress | congestion_grid_span_cache_misses | - | 22.0000 | - | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1885 | 0.1841 | -0.0044 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | moves_generated | 372.0000 | 372.0000 | +0.0000 | | example_07_large_scale_routing | moves_added | 227.0000 | 227.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_grid_span_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_grid_span_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 84.8404 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | moves_generated | - | 857732.0000 | - | | example_07_large_scale_routing_no_warm_start | moves_added | - | 348559.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 3300.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_hits | - | 199762.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_misses | - | 26740.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 364731.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 305397.0000 | - | ## Step 18 - Net-envelope maintenance and counters Measured on 2026-03-31T23:05:08-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Added per-net dynamic envelope state and public counters without changing congestion or verification query behavior yet. - The expected result for this slice is unchanged routing behavior; the new envelope counters should stay at zero until the broad phase starts using them. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2312 | 0.2343 | +0.0031 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | - | 0.0000 | - | | example_05_orientation_stress | congestion_net_envelope_cache_hits | - | 0.0000 | - | | example_05_orientation_stress | congestion_net_envelope_cache_misses | - | 0.0000 | - | | example_05_orientation_stress | congestion_grid_span_cache_hits | 133.0000 | 133.0000 | +0.0000 | | example_05_orientation_stress | congestion_grid_span_cache_misses | 22.0000 | 22.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_05_orientation_stress | verify_dynamic_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing | duration_s | 0.1858 | 0.1833 | -0.0026 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing | congestion_net_envelope_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_net_envelope_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_grid_span_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_grid_span_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | verify_dynamic_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | duration_s | - | 84.6663 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_hits | - | 199762.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_misses | - | 26740.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 364731.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 305397.0000 | - | | example_07_large_scale_routing_no_warm_start | verify_dynamic_candidate_nets | - | 0.0000 | - | ## Step 19 - Route-time net-envelope broad phase Measured on 2026-03-31T23:10:12-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion checks now query per-net dynamic envelopes before descending into cached per-object candidate sets. - Search order is unchanged in this slice; the acceptance signal is lower candidate-net and exact-pair work at the same node count. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2312 | 0.2443 | +0.0131 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | - | 15.0000 | - | | example_05_orientation_stress | congestion_net_envelope_cache_hits | - | 133.0000 | - | | example_05_orientation_stress | congestion_net_envelope_cache_misses | - | 22.0000 | - | | example_05_orientation_stress | congestion_grid_span_cache_hits | 133.0000 | 11.0000 | -122.0000 | | example_05_orientation_stress | congestion_grid_span_cache_misses | 22.0000 | 4.0000 | -18.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_05_orientation_stress | verify_dynamic_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing | duration_s | 0.1858 | 0.1940 | +0.0081 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing | congestion_net_envelope_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_net_envelope_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_grid_span_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_grid_span_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | verify_dynamic_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | duration_s | - | 85.7274 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 557244.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_hits | - | 199762.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_misses | - | 26740.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_hits | - | 193229.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_misses | - | 25872.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 364731.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 305397.0000 | - | | example_07_large_scale_routing_no_warm_start | verify_dynamic_candidate_nets | - | 0.0000 | - | ## Step 20 - Verification net-envelope broad phase Measured on 2026-03-31T23:14:19-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Final verification now queries dynamic net envelopes before descending into per-object overlap checks. - This slice should leave routing search metrics stable and reduce dynamic verification scans when non-overlapping nets are present. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2312 | 0.2370 | +0.0058 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | - | 15.0000 | - | | example_05_orientation_stress | congestion_net_envelope_cache_hits | - | 133.0000 | - | | example_05_orientation_stress | congestion_net_envelope_cache_misses | - | 22.0000 | - | | example_05_orientation_stress | congestion_grid_span_cache_hits | 133.0000 | 11.0000 | -122.0000 | | example_05_orientation_stress | congestion_grid_span_cache_misses | 22.0000 | 4.0000 | -18.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_05_orientation_stress | verify_dynamic_candidate_nets | - | 3.0000 | - | | example_05_orientation_stress | verify_dynamic_exact_pair_checks | 4.0000 | 4.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1858 | 0.1843 | -0.0016 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | - | 0.0000 | - | | example_07_large_scale_routing | congestion_net_envelope_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_net_envelope_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_grid_span_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_grid_span_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | verify_dynamic_candidate_nets | - | 158.0000 | - | | example_07_large_scale_routing | verify_dynamic_exact_pair_checks | 27.0000 | 24.0000 | -3.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 85.5035 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 557244.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_hits | - | 199762.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_misses | - | 26740.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_hits | - | 193229.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_misses | - | 25872.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 364731.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 305397.0000 | - | | example_07_large_scale_routing_no_warm_start | verify_dynamic_candidate_nets | - | 3723.0000 | - | | example_07_large_scale_routing_no_warm_start | verify_dynamic_exact_pair_checks | - | 1428.0000 | - | ## Step 21 - Per-net grid occupancy before object descent Measured on 2026-03-31T23:45:12-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Congestion checks now cache candidate net ids from dynamic grid occupancy before building the heavier per-span object unions. - On the no-warm-start example_07 canary, candidate nets fell materially from the prior net-envelope pass while nodes expanded and congestion check calls stayed flat. - Object-level candidate ids and exact pair checks stayed essentially unchanged, so the next likely win is a finer-grained dynamic structure per long net rather than more cache layering. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2327 | 0.2399 | +0.0072 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_net_envelope_cache_hits | 133.0000 | 133.0000 | +0.0000 | | example_05_orientation_stress | congestion_net_envelope_cache_misses | 22.0000 | 22.0000 | +0.0000 | | example_05_orientation_stress | congestion_grid_net_cache_hits | - | 11.0000 | - | | example_05_orientation_stress | congestion_grid_net_cache_misses | - | 4.0000 | - | | example_05_orientation_stress | congestion_grid_span_cache_hits | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | congestion_grid_span_cache_misses | 4.0000 | 4.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_05_orientation_stress | verify_dynamic_candidate_nets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | verify_dynamic_exact_pair_checks | 4.0000 | 4.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1865 | 0.1881 | +0.0015 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_net_envelope_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_net_envelope_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_grid_net_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_grid_net_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_grid_span_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_grid_span_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | verify_dynamic_candidate_nets | 158.0000 | 158.0000 | +0.0000 | | example_07_large_scale_routing | verify_dynamic_exact_pair_checks | 24.0000 | 24.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 85.4211 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 386147.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_hits | - | 199762.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_net_envelope_cache_misses | - | 26740.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_net_cache_hits | - | 193229.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_net_cache_misses | - | 25872.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_hits | - | 189741.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_grid_span_cache_misses | - | 25579.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 364731.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 305397.0000 | - | | example_07_large_scale_routing_no_warm_start | verify_dynamic_candidate_nets | - | 3723.0000 | - | | example_07_large_scale_routing_no_warm_start | verify_dynamic_exact_pair_checks | - | 1436.0000 | - | ## Step 22 - Segmented per-net dynamic envelopes (rejected) Measured on 2026-04-01T00:02:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Dynamic objects were grouped into small per-net segment envelopes and congestion/verification descended through those groups before raw object checks. - This was the first pass aimed at reducing object-level confirmation work directly, but it regressed the no-warm-start example_07 canary instead of helping it. - Relative to the accepted per-net grid-occupancy state, the canary worsened from about `85.36s` to `99.81s`, from `173498` to `187339` expanded nodes, from `344747` to `378630` congestion checks, and from `364731` to `392058` candidate ids. - The segment layer appears to have increased search churn and broad-phase overhead enough to outweigh any local pruning benefit, so this pass was rejected and reverted. ## Step 23 - End-of-iteration reverify only Measured on 2026-04-01T19:00:59-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Added full end-of-iteration reverify using final installed geometry before deciding whether negotiated congestion should continue. - This slice still reroutes every net every iteration; it only changes conflict truth and iteration metrics. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3241 | 0.3359 | +0.0118 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | - | 0.0000 | - | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_reverify_calls | - | 1.0000 | - | | example_02_congestion_resolution | iteration_reverified_nets | - | 3.0000 | - | | example_02_congestion_resolution | iteration_conflicting_nets | - | 0.0000 | - | | example_02_congestion_resolution | iteration_conflict_edges | - | 0.0000 | - | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2283 | 0.2312 | +0.0029 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nets_carried_forward | - | 0.0000 | - | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | iteration_reverify_calls | - | 2.0000 | - | | example_05_orientation_stress | iteration_reverified_nets | - | 6.0000 | - | | example_05_orientation_stress | iteration_conflicting_nets | - | 2.0000 | - | | example_05_orientation_stress | iteration_conflict_edges | - | 1.0000 | - | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1888 | 0.1921 | +0.0032 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_reverify_calls | - | 1.0000 | - | | example_07_large_scale_routing | iteration_reverified_nets | - | 10.0000 | - | | example_07_large_scale_routing | iteration_conflicting_nets | - | 0.0000 | - | | example_07_large_scale_routing | iteration_conflict_edges | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 85.3822 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 15.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 150.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 173498.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 344747.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverify_calls | - | 15.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverified_nets | - | 150.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflicting_nets | - | 145.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflict_edges | - | 165.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 386147.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 364731.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 305397.0000 | - | ## Step 24 - Early stop on stalled conflict graph Measured on 2026-04-01T19:16:22-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Rejected selective reroute working-set policies after they made the no-warm-start canary dramatically slower. - Kept end-of-iteration reverify and now stop negotiated-congestion once the final conflict graph repeats twice with no structural change. - On the no-warm-start canary this cut runtime from about 85.9s to 5.45s, with route iterations dropping from 15 to 4 and congestion checks from 344747 to 12096. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3241 | 0.3460 | +0.0219 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | - | 0.0000 | - | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_reverify_calls | - | 1.0000 | - | | example_02_congestion_resolution | iteration_reverified_nets | - | 3.0000 | - | | example_02_congestion_resolution | iteration_conflicting_nets | - | 0.0000 | - | | example_02_congestion_resolution | iteration_conflict_edges | - | 0.0000 | - | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2283 | 0.3251 | +0.0968 | | example_05_orientation_stress | route_iterations | 2.0000 | 3.0000 | +1.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 9.0000 | +3.0000 | | example_05_orientation_stress | nets_carried_forward | - | 0.0000 | - | | example_05_orientation_stress | nodes_expanded | 286.0000 | 571.0000 | +285.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 306.0000 | +93.0000 | | example_05_orientation_stress | congestion_cache_misses | 213.0000 | 306.0000 | +93.0000 | | example_05_orientation_stress | iteration_reverify_calls | - | 3.0000 | - | | example_05_orientation_stress | iteration_reverified_nets | - | 9.0000 | - | | example_05_orientation_stress | iteration_conflicting_nets | - | 6.0000 | - | | example_05_orientation_stress | iteration_conflict_edges | - | 3.0000 | - | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 92.0000 | +77.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 80.0000 | +61.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 68.0000 | +50.0000 | | example_07_large_scale_routing | duration_s | 0.1888 | 0.1998 | +0.0110 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_reverify_calls | - | 1.0000 | - | | example_07_large_scale_routing | iteration_reverified_nets | - | 10.0000 | - | | example_07_large_scale_routing | iteration_conflicting_nets | - | 0.0000 | - | | example_07_large_scale_routing | iteration_conflict_edges | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.4956 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4580.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 12096.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 12096.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverify_calls | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverified_nets | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflicting_nets | - | 34.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflict_edges | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 24413.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 21820.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 18030.0000 | - | ## Step 25 - Finalize stalled conflict stop Measured on 2026-04-01T19:17:59-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Removed the leftover full-reroute pre-eviction from the rejected working-set experiment so normal multi-net cases keep their previous search behavior. - Accepted state: end-of-iteration reverify plus early termination when the conflict graph repeats twice without structural change. - The no-warm-start example_07 canary now runs in about 5.8s with 4 iterations and 9865 congestion checks, while example_05 returns to 2 iterations and 213 congestion checks. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3241 | 0.3451 | +0.0209 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | - | 0.0000 | - | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_reverify_calls | - | 1.0000 | - | | example_02_congestion_resolution | iteration_reverified_nets | - | 3.0000 | - | | example_02_congestion_resolution | iteration_conflicting_nets | - | 0.0000 | - | | example_02_congestion_resolution | iteration_conflict_edges | - | 0.0000 | - | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2283 | 0.2433 | +0.0150 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nets_carried_forward | - | 0.0000 | - | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | iteration_reverify_calls | - | 2.0000 | - | | example_05_orientation_stress | iteration_reverified_nets | - | 6.0000 | - | | example_05_orientation_stress | iteration_conflicting_nets | - | 2.0000 | - | | example_05_orientation_stress | iteration_conflict_edges | - | 1.0000 | - | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1888 | 0.1982 | +0.0094 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_reverify_calls | - | 1.0000 | - | | example_07_large_scale_routing | iteration_reverified_nets | - | 10.0000 | - | | example_07_large_scale_routing | iteration_conflicting_nets | - | 0.0000 | - | | example_07_large_scale_routing | iteration_conflict_edges | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.7283 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 9865.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 9865.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverify_calls | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverified_nets | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflicting_nets | - | 35.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflict_edges | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 12879.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11116.0000 | - | ## Step 24 - Conflict-directed reroute working set Measured on 2026-04-01T19:30:43-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Later iterations now reroute only unresolved nets plus a deterministic greedy cover of the end-of-iteration conflict graph. - Repeated conflict signatures widen the working set to all conflicting nets and then all nets once if the graph keeps stalling. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3241 | 0.3261 | +0.0020 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | - | 0.0000 | - | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_reverify_calls | - | 1.0000 | - | | example_02_congestion_resolution | iteration_reverified_nets | - | 3.0000 | - | | example_02_congestion_resolution | iteration_conflicting_nets | - | 0.0000 | - | | example_02_congestion_resolution | iteration_conflict_edges | - | 0.0000 | - | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2283 | 0.2246 | -0.0037 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 5.0000 | -1.0000 | | example_05_orientation_stress | nets_carried_forward | - | 1.0000 | - | | example_05_orientation_stress | nodes_expanded | 286.0000 | 284.0000 | -2.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 207.0000 | -6.0000 | | example_05_orientation_stress | congestion_cache_misses | 213.0000 | 207.0000 | -6.0000 | | example_05_orientation_stress | iteration_reverify_calls | - | 2.0000 | - | | example_05_orientation_stress | iteration_reverified_nets | - | 6.0000 | - | | example_05_orientation_stress | iteration_conflicting_nets | - | 2.0000 | - | | example_05_orientation_stress | iteration_conflict_edges | - | 1.0000 | - | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1888 | 0.1884 | -0.0004 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_reverify_calls | - | 1.0000 | - | | example_07_large_scale_routing | iteration_reverified_nets | - | 10.0000 | - | | example_07_large_scale_routing | iteration_conflicting_nets | - | 0.0000 | - | | example_07_large_scale_routing | iteration_conflict_edges | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 1626.2304 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 13.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 108.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 13.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1559998.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3699692.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 3699692.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverify_calls | - | 12.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverified_nets | - | 120.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflicting_nets | - | 113.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflict_edges | - | 138.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 3444090.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 2987961.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 2440828.0000 | - | ## Step 26 rejected - Progressive freezing reverted Measured on 2026-04-01T20:20:32-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The progressive-freezing experiment was reverted after bounded no-warm-start probes reached only 2 valid routes after 4 iterations and consumed the one-shot thaw without restoring correctness. - The tree below is the restored pre-freezing state so later passes can continue from the last accepted congestion baseline. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3384 | 0.3500 | +0.0115 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_reverify_calls | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | iteration_conflicting_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_conflict_edges | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2366 | 0.2547 | +0.0180 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 213.0000 | +0.0000 | | example_05_orientation_stress | iteration_reverify_calls | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | iteration_conflicting_nets | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | iteration_conflict_edges | 1.0000 | 1.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1994 | 0.2061 | +0.0067 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_reverify_calls | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | iteration_conflicting_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_conflict_edges | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.9146 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 9865.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverify_calls | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflicting_nets | - | 35.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflict_edges | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 12879.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11116.0000 | - | ## Step 26 - Progressive freezing and frozen hard prunes Measured on 2026-04-01T20:33:10-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Completed nets are now frozen after end-of-iteration reverify, later iterations reroute only the remaining unlocked nets, and overlaps with frozen nets are rejected as hard collisions. - This slice also tracks best-so-far iteration quality so later slices can safely restore the strongest partial solution. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3384 | 0.3202 | -0.0182 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | frozen_nets_promoted | - | 3.0000 | - | | example_02_congestion_resolution | frozen_nets_thawed | - | 0.0000 | - | | example_02_congestion_resolution | frozen_net_hard_prunes | - | 0.0000 | - | | example_02_congestion_resolution | best_iteration_completed_nets | - | 3.0000 | - | | example_02_congestion_resolution | best_iteration_conflict_edges | - | 0.0000 | - | | example_02_congestion_resolution | best_iteration_dynamic_collisions | - | 0.0000 | - | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2366 | 11.5966 | +11.3600 | | example_05_orientation_stress | route_iterations | 2.0000 | 6.0000 | +4.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 14.0000 | +8.0000 | | example_05_orientation_stress | nets_carried_forward | 0.0000 | 4.0000 | +4.0000 | | example_05_orientation_stress | frozen_nets_promoted | - | 2.0000 | - | | example_05_orientation_stress | frozen_nets_thawed | - | 1.0000 | - | | example_05_orientation_stress | frozen_net_hard_prunes | - | 865.0000 | - | | example_05_orientation_stress | best_iteration_completed_nets | - | 1.0000 | - | | example_05_orientation_stress | best_iteration_conflict_edges | - | 1.0000 | - | | example_05_orientation_stress | best_iteration_dynamic_collisions | - | 2.0000 | - | | example_05_orientation_stress | nodes_expanded | 286.0000 | 14395.0000 | +14109.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 24765.0000 | +24552.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 8658.0000 | +8643.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 10770.0000 | +10751.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 8579.0000 | +8561.0000 | | example_07_large_scale_routing | duration_s | 0.1994 | 0.1901 | -0.0092 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | frozen_nets_promoted | - | 10.0000 | - | | example_07_large_scale_routing | frozen_nets_thawed | - | 0.0000 | - | | example_07_large_scale_routing | frozen_net_hard_prunes | - | 0.0000 | - | | example_07_large_scale_routing | best_iteration_completed_nets | - | 10.0000 | - | | example_07_large_scale_routing | best_iteration_conflict_edges | - | 0.0000 | - | | example_07_large_scale_routing | best_iteration_dynamic_collisions | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 2136.7523 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 8.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 62.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | frozen_nets_promoted | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | frozen_nets_thawed | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | frozen_net_hard_prunes | - | 76321.0000 | - | | example_07_large_scale_routing_no_warm_start | best_iteration_completed_nets | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | best_iteration_conflict_edges | - | 12.0000 | - | | example_07_large_scale_routing_no_warm_start | best_iteration_dynamic_collisions | - | 50.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1849024.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4049028.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 4889029.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 4032868.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 3215112.0000 | - | ## Step 26 - Progressive freezing and frozen hard prunes Measured on 2026-04-01T20:36:40-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Completed nets are frozen after end-of-iteration reverify, later iterations reroute only the remaining unlocked nets, and overlaps with frozen nets are rejected as hard collisions. - The router also restores the strongest reverified iteration snapshot before final refinement and verification. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_02_congestion_resolution | duration_s | 0.3384 | 0.3401 | +0.0017 | | example_02_congestion_resolution | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | nets_routed | 3.0000 | 3.0000 | +0.0000 | | example_02_congestion_resolution | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | frozen_nets_promoted | - | 3.0000 | - | | example_02_congestion_resolution | frozen_nets_thawed | - | 0.0000 | - | | example_02_congestion_resolution | frozen_net_hard_prunes | - | 0.0000 | - | | example_02_congestion_resolution | best_iteration_completed_nets | - | 3.0000 | - | | example_02_congestion_resolution | best_iteration_conflict_edges | - | 0.0000 | - | | example_02_congestion_resolution | best_iteration_dynamic_collisions | - | 0.0000 | - | | example_02_congestion_resolution | nodes_expanded | 366.0000 | 366.0000 | +0.0000 | | example_02_congestion_resolution | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_reverify_calls | 1.0000 | 1.0000 | +0.0000 | | example_02_congestion_resolution | iteration_conflicting_nets | 0.0000 | 0.0000 | +0.0000 | | example_02_congestion_resolution | iteration_conflict_edges | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | duration_s | 0.2366 | 12.3369 | +12.1002 | | example_05_orientation_stress | route_iterations | 2.0000 | 6.0000 | +4.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 14.0000 | +8.0000 | | example_05_orientation_stress | nets_carried_forward | 0.0000 | 4.0000 | +4.0000 | | example_05_orientation_stress | frozen_nets_promoted | - | 2.0000 | - | | example_05_orientation_stress | frozen_nets_thawed | - | 1.0000 | - | | example_05_orientation_stress | frozen_net_hard_prunes | - | 865.0000 | - | | example_05_orientation_stress | best_iteration_completed_nets | - | 1.0000 | - | | example_05_orientation_stress | best_iteration_conflict_edges | - | 1.0000 | - | | example_05_orientation_stress | best_iteration_dynamic_collisions | - | 2.0000 | - | | example_05_orientation_stress | nodes_expanded | 286.0000 | 14395.0000 | +14109.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 24765.0000 | +24552.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 8658.0000 | +8643.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 10770.0000 | +10751.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 8579.0000 | +8561.0000 | | example_05_orientation_stress | iteration_reverify_calls | 2.0000 | 6.0000 | +4.0000 | | example_05_orientation_stress | iteration_conflicting_nets | 2.0000 | 12.0000 | +10.0000 | | example_05_orientation_stress | iteration_conflict_edges | 1.0000 | 6.0000 | +5.0000 | | example_07_large_scale_routing | duration_s | 0.1994 | 0.1978 | -0.0016 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | frozen_nets_promoted | - | 10.0000 | - | | example_07_large_scale_routing | frozen_nets_thawed | - | 0.0000 | - | | example_07_large_scale_routing | frozen_net_hard_prunes | - | 0.0000 | - | | example_07_large_scale_routing | best_iteration_completed_nets | - | 10.0000 | - | | example_07_large_scale_routing | best_iteration_conflict_edges | - | 0.0000 | - | | example_07_large_scale_routing | best_iteration_dynamic_collisions | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_reverify_calls | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | iteration_conflicting_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_conflict_edges | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 1500.4410 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 7.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 60.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 8.0000 | - | | example_07_large_scale_routing_no_warm_start | frozen_nets_promoted | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | frozen_nets_thawed | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | frozen_net_hard_prunes | - | 37879.0000 | - | | example_07_large_scale_routing_no_warm_start | best_iteration_completed_nets | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | best_iteration_conflict_edges | - | 12.0000 | - | | example_07_large_scale_routing_no_warm_start | best_iteration_dynamic_collisions | - | 50.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1282078.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 2860073.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 3432589.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 2740129.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 2266598.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_reverify_calls | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflicting_nets | - | 51.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_conflict_edges | - | 77.0000 | - | ## Step 27 - Congestion presence precheck Measured on 2026-04-01T20:49:16-07:00. Baseline: `docs/performance_baseline.json`. Findings: - A cached per-span presence precheck now skips full congestion evaluation when a move's dilated polygons only cover dynamic-grid cells with no other routed nets. - The goal of this slice is to reduce congestion_check_calls without changing search outcomes or the dynamic exact-check path. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2366 | 0.2573 | +0.0206 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 213.0000 | 155.0000 | -58.0000 | | example_05_orientation_stress | congestion_presence_cache_hits | - | 185.0000 | - | | example_05_orientation_stress | congestion_presence_cache_misses | - | 30.0000 | - | | example_05_orientation_stress | congestion_presence_skips | - | 58.0000 | - | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 213.0000 | 155.0000 | -58.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1994 | 0.1977 | -0.0017 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_cache_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_presence_cache_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_presence_skips | - | 0.0000 | - | | example_07_large_scale_routing | congestion_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.6221 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4549.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_cache_hits | - | 7568.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_cache_misses | - | 2480.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_skips | - | 5482.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 16.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 4549.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 12879.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11116.0000 | - | ## Step 28 - Candidate-net congestion precheck Measured on 2026-04-01T20:59:46-07:00. Baseline: `docs/performance_baseline.json`. Findings: - After the dynamic-grid occupancy precheck passes, search now asks whether any candidate nets survive the existing envelope and grid-net filters before paying for full congestion evaluation. - This slice should reduce congestion_check_calls further if many occupied spans still have no candidate nets after the broad phases. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2491 | 0.2500 | +0.0009 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 18.0000 | -137.0000 | | example_05_orientation_stress | congestion_presence_cache_hits | 185.0000 | 185.0000 | +0.0000 | | example_05_orientation_stress | congestion_presence_cache_misses | 30.0000 | 30.0000 | +0.0000 | | example_05_orientation_stress | congestion_presence_skips | 58.0000 | 58.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_precheck_hits | - | 135.0000 | - | | example_05_orientation_stress | congestion_candidate_precheck_misses | - | 22.0000 | - | | example_05_orientation_stress | congestion_candidate_precheck_skips | - | 139.0000 | - | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 0.0000 | -2.0000 | | example_05_orientation_stress | congestion_cache_misses | 155.0000 | 18.0000 | -137.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 14.0000 | -1.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 18.0000 | -1.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 17.0000 | -1.0000 | | example_07_large_scale_routing | duration_s | 0.1978 | 0.1941 | -0.0037 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_skips | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_precheck_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_precheck_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_precheck_skips | - | 0.0000 | - | | example_07_large_scale_routing | congestion_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 89.2302 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 9.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 90.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 113735.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 136225.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_cache_hits | - | 217089.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_cache_misses | - | 18365.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_skips | - | 86782.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_precheck_hits | - | 135690.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_precheck_misses | - | 12826.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_precheck_skips | - | 10244.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 1893.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 136225.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 243951.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 228721.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 190301.0000 | - | ## Step 28b - Candidate-net congestion precheck (corrected) Measured on 2026-04-01T21:00:54-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The first candidate-net precheck attempt cached exact-bounds results by span and was not safe; this corrected slice uses a conservative span-based precheck. - Acceptance requires the no-warm-start canary to stay near the current 4-iteration / 40-net routed shape while still reducing congestion_check_calls. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2491 | 0.2461 | -0.0030 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_05_orientation_stress | congestion_presence_cache_hits | 185.0000 | 185.0000 | +0.0000 | | example_05_orientation_stress | congestion_presence_cache_misses | 30.0000 | 30.0000 | +0.0000 | | example_05_orientation_stress | congestion_presence_skips | 58.0000 | 58.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_precheck_hits | - | 135.0000 | - | | example_05_orientation_stress | congestion_candidate_precheck_misses | - | 22.0000 | - | | example_05_orientation_stress | congestion_candidate_precheck_skips | - | 0.0000 | - | | example_05_orientation_stress | congestion_cache_hits | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | congestion_cache_misses | 155.0000 | 155.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1978 | 0.1979 | +0.0001 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_presence_skips | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_precheck_hits | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_precheck_misses | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_precheck_skips | - | 0.0000 | - | | example_07_large_scale_routing | congestion_cache_hits | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_cache_misses | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.6758 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_cache_hits | - | 7568.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_cache_misses | - | 2480.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_presence_skips | - | 5482.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_precheck_hits | - | 2828.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_precheck_misses | - | 1737.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_precheck_skips | - | 129.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_hits | - | 16.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_cache_misses | - | 4420.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 12879.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11116.0000 | - | ## Step 29 - Correctness-aware measurement logging Measured on 2026-04-01T21:18:56-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The diff script now logs top-level outcome counts so future routing-loop changes can be judged on returned result quality as well as runtime and congestion counters. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2370 | 0.2507 | +0.0137 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1950 | 0.1992 | +0.0042 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.7234 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 1.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | ## Step 30 - Best iteration snapshot restoration Measured on 2026-04-01T21:20:51-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The routing loop now snapshots the strongest reverified intermediate result set and restores it before final refinement/final verification, including timeout exits. - This slice keeps the old repeated-conflict stop rule so any quality change can be attributed to snapshot restoration alone. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2370 | 0.2437 | +0.0067 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1950 | 0.1937 | -0.0013 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.5246 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | ## Step 31 - Improvement-based stagnation stop Measured on 2026-04-01T21:23:19-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The negotiated-congestion loop now stops after two consecutive iterations with no improvement in the best-so-far reverified snapshot instead of using repeated conflict signatures. - Best-snapshot restoration remains enabled, so the returned results should reflect the strongest intermediate iteration even if later iterations stall. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2370 | 0.2393 | +0.0023 | | example_05_orientation_stress | valid_results | 3.0000 | 1.0000 | -2.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1950 | 0.1884 | -0.0066 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.4360 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | ## Step 31 rejected - Improvement-based stagnation reverted Measured on 2026-04-01T21:25:17-07:00. Baseline: `docs/performance_baseline.json`. Findings: - The no-improvement stop rule was reverted because it regressed example_05 from 3 valid routes to 1 even though the no-warm-start canary stayed flat. - The tree below is the restored best-snapshot state with the older repeated-conflict stop rule still in place. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2370 | 0.2425 | +0.0055 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1950 | 0.1936 | -0.0014 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.5321 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | ## Step 32 tiered-iteration dynamic hard blocks Measured on 2026-04-01T21:42:45-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Treat already-routed dynamic paths as hard blockers only during iteration 0 when warm-start is disabled. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2466 | +0.0118 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 226.0000 | +71.0000 | | example_05_orientation_stress | tiered_dynamic_hard_prunes | - | 0.0000 | - | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 51.0000 | +36.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 67.0000 | +48.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 56.0000 | +38.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.1931 | -0.0014 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | tiered_dynamic_hard_prunes | - | 0.0000 | - | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 8.7624 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 11200.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 5355.0000 | - | | example_07_large_scale_routing_no_warm_start | tiered_dynamic_hard_prunes | - | 632.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 13623.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13469.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11346.0000 | - | ## Step 32 reverted Measured on 2026-04-01T21:44:47-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted tiered-iteration dynamic hard blockers after regressions in example_05 and the no-warm-start example_07 canary. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2462 | +0.0114 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.1940 | -0.0005 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.5497 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 12879.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11116.0000 | - | ## Step 34 rejected Measured on 2026-04-01T22:08:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Explored order/seed and reroute-heuristic sensitivity before the slice. One-iteration no-warm-start probes were flat at `1` valid route across `user`, `shortest`, `longest`, and seeds `41`-`44`; two-iteration probes were flat at `2` valid routes across the same variants. - Implemented a conflict-weighted congestion objective that weighted overlapping nets by prior completed status, conflict degree, and dynamic collision count. - Rejected the slice after the no-warm-start canary failed to finish within a reasonable window and ran far longer than the accepted `~5.6s` state. The code was reverted before accepting any documentation or baseline changes. ## Step 33 carry forward completed nets Measured on 2026-04-01T21:58:50-07:00. Baseline: `docs/performance_baseline.json`. Findings: - After each reverify, reroute only nets that are still colliding, partial, or unroutable; keep completed nets installed as ordinary soft blockers. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2528 | +0.0179 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 5.0000 | -1.0000 | | example_05_orientation_stress | nets_carried_forward | 0.0000 | 1.0000 | +1.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 284.0000 | -2.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 152.0000 | -3.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.1960 | +0.0015 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 49.8770 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 8.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 70.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 71162.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 80342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 152845.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 136026.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 116066.0000 | - | ## Step 33 reverted Measured on 2026-04-01T21:59:33-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted completed-net carry-forward after the no-warm-start canary exploded in iterations, nodes, and congestion checks without improving validity. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2572 | +0.0224 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 286.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 155.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.2024 | +0.0079 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nets_carried_forward | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 5.6270 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_carried_forward | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 6567.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4420.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 12879.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 13342.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 11116.0000 | - | ## Step 35 reroute seed guidance Measured on 2026-04-01T22:22:54-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Guide post-tiered reroutes with the previous reached-target path seed by giving matching path-prefix moves a small cost bonus. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2313 | -0.0036 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 299.0000 | +13.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 149.0000 | -6.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 23.0000 | +8.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 32.0000 | +13.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 30.0000 | +12.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.1881 | -0.0064 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5099 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 39 rejected Measured on 2026-04-01T22:58:58-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried adding a reroute-only uncongested `max_cost` ceiling derived from the previous reached-target path cost plus slack for two extra bends. - Rejected the slice before running the standard performance probe because it broke the stalled-conflict guardrail: the simple crossing case in `test_reverify_iterations_stop_early_on_stalled_conflict_graph` ran all `10` iterations instead of stopping early. - Reverted the slice and restored the accepted Step 35 full-seed guidance state. ## Step 36 rejected Measured on 2026-04-01T22:31:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Explored adding the longest still-valid prefix of the prior reached-target path as an additional seeded start node for later reroutes. - Rejected the slice on runtime: the no-warm-start `example_07` measurement ran far beyond the accepted Step 35 `~3.5s` state before completion, indicating the extra seeded branch was expanding too much search. - Reverted the slice and kept only the lighter Step 35 reroute-seed-guidance behavior. ## Step 34 conflict-weighted congestion objective Measured on 2026-04-01T22:38:11-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Weight congestion overlap cost by prior-iteration completed status, conflict degree, and dynamic collision count instead of counting every overlapping net equally. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2390 | +0.0041 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 282.0000 | -4.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 145.0000 | -10.0000 | | example_05_orientation_stress | congestion_candidate_nets | 15.0000 | 15.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 19.0000 | 19.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 18.0000 | 18.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.1918 | -0.0027 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 1795.1890 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 1.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 16.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1501303.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 1622620.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 5074171.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 4556689.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 4129698.0000 | - | ## Step 36 reusable prefix start nodes Measured on 2026-04-01T22:49:16-07:00. Baseline: `docs/performance_baseline.json`. Findings: - On later reroutes, add the longest still-valid prefix of the previous reached-target path as an additional seeded start node while keeping the original start branch available. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2249 | +0.0010 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | reroute_prefix_paths_used | - | 3.0000 | - | | example_05_orientation_stress | reroute_prefix_components_reused | - | 8.0000 | - | | example_05_orientation_stress | nodes_expanded | 299.0000 | 292.0000 | -7.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 125.0000 | -24.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 22.0000 | -1.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 31.0000 | -1.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 29.0000 | -1.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1916 | +0.0004 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reroute_prefix_paths_used | - | 0.0000 | - | | example_07_large_scale_routing | reroute_prefix_components_reused | - | 0.0000 | - | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 229.2009 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 9.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 90.0000 | - | | example_07_large_scale_routing_no_warm_start | reroute_prefix_paths_used | - | 65.0000 | - | | example_07_large_scale_routing_no_warm_start | reroute_prefix_components_reused | - | 172.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 350958.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 470234.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 929523.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 853594.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 712783.0000 | - | ## Step 37 capped guidance rejected Measured on 2026-04-01T22:53:55-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Exploratory probe showed a mild runtime win when reroute guidance was capped to 4 segments, but the code/test slice did not land cleanly and was reverted before acceptance. - Restored the accepted Step 35 full-seed guidance state and remeasured the standard probe set. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2304 | +0.0065 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1862 | -0.0050 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.4899 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 38 capped reroute guidance Measured on 2026-04-01T22:55:29-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Cap reroute guidance seeds to the first 4 segments on later iterations; keep the existing prefix-match bonus unchanged. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2388 | +0.0150 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1924 | +0.0012 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.6174 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 38 reverted Measured on 2026-04-01T22:56:22-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted the 4-segment reroute-guidance cap after the standard probe set showed no counter improvement and only runtime noise. - Restored the accepted Step 35 full-seed guidance state. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2463 | +0.0224 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1912 | -0.0000 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5580 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 40 partial straight guidance Measured on 2026-04-01T23:01:12-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Allow reroute guidance to consume straight seeds incrementally so split straight moves can continue following a prior reached-target path. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2329 | +0.0090 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1879 | -0.0033 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5305 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 40 reverted Measured on 2026-04-01T23:02:26-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted partial straight-seed guidance after the standard probe set showed no counter deltas and no correctness gain. - Restored the accepted Step 35 full-seed exact-match guidance state. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2353 | +0.0115 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1897 | -0.0015 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5522 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 41 guidance counters Measured on 2026-04-01T23:04:31-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Add public counters for reroute guidance matches and total guidance bonus applied so later guidance changes can be measured directly. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2239 | 0.2544 | +0.0306 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | - | 11.0000 | - | | example_05_orientation_stress | guidance_bonus_applied | - | 687.5000 | - | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1912 | 0.1940 | +0.0027 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied | - | 0.0000 | - | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.7438 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 42 scaled guidance bonus Measured on 2026-04-02T00:18:11-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Scale reroute guidance bonus by matched move cost, capped at 50% of the move's own cost, so matched straights no longer become nearly free. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2300 | 0.2276 | -0.0024 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 275.0000 | -24.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 10.0000 | -1.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 368.6994 | -318.8006 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 120.0000 | -29.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 15.0000 | -8.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 19.0000 | -13.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 18.0000 | -12.0000 | | example_07_large_scale_routing | duration_s | 0.2043 | 0.1861 | -0.0182 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 4.0027 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4747.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 2854.9698 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 11537.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 12027.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 9988.0000 | - | ## Step 42 reverted Measured on 2026-04-02T00:19:47-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted the scaled guidance bonus after the no-warm-start example_07 canary regressed in runtime, nodes, and congestion work without any validity gain. - Restored the accepted fixed-bonus Step 35 guidance behavior. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2300 | 0.2339 | +0.0039 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2043 | 0.1895 | -0.0148 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5410 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 43 guidance counters by move type Measured on 2026-04-02T00:24:23-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Split guidance matches and total applied bonus by move type so the next selective-guidance slice can target the dominant match class on the no-warm-start canary. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2300 | 0.2329 | +0.0030 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | - | 3.0000 | - | | example_05_orientation_stress | guidance_match_moves_bend90 | - | 8.0000 | - | | example_05_orientation_stress | guidance_match_moves_sbend | - | 0.0000 | - | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | - | 187.5000 | - | | example_05_orientation_stress | guidance_bonus_applied_bend90 | - | 500.0000 | - | | example_05_orientation_stress | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2043 | 0.1899 | -0.0143 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_sbend | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5484 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 50 terminal repair rejected Measured on 2026-04-02T10:18:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Added a bounded terminal repair phase for reached-but-colliding nets after best-snapshot restoration, with up to two sequential repair sweeps and completed nets treated as hard blockers during repair reroutes. - The slice stayed within the node and congestion guardrails, but it did not improve the only important outcome: the no-warm-start `example_07` canary remained at `2/10/10`. - Rejected the slice and reverted the code. The tree was restored to the accepted fixed-guidance branch without refreshing `docs/performance.md` or `docs/performance_baseline.json`. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2400 | +0.0125 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | terminal_repair_sweeps | - | 0.0000 | - | | example_05_orientation_stress | terminal_repair_nets_considered | - | 0.0000 | - | | example_05_orientation_stress | terminal_repair_nets_accepted | - | 0.0000 | - | | example_05_orientation_stress | terminal_repair_nets_rejected | - | 0.0000 | - | | example_05_orientation_stress | terminal_repair_completed_promotions | - | 0.0000 | - | | example_05_orientation_stress | repair_frozen_net_prunes | - | 0.0000 | - | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1969 | +0.0062 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | terminal_repair_sweeps | - | 0.0000 | - | | example_07_large_scale_routing | terminal_repair_nets_considered | - | 0.0000 | - | | example_07_large_scale_routing | terminal_repair_nets_accepted | - | 0.0000 | - | | example_07_large_scale_routing | terminal_repair_nets_rejected | - | 0.0000 | - | | example_07_large_scale_routing | terminal_repair_completed_promotions | - | 0.0000 | - | | example_07_large_scale_routing | repair_frozen_net_prunes | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | duration_s | - | 6.5413 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 56.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 10691.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4805.0000 | - | | example_07_large_scale_routing_no_warm_start | terminal_repair_sweeps | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | terminal_repair_nets_considered | - | 16.0000 | - | | example_07_large_scale_routing_no_warm_start | terminal_repair_nets_accepted | - | 8.0000 | - | | example_07_large_scale_routing_no_warm_start | terminal_repair_nets_rejected | - | 8.0000 | - | | example_07_large_scale_routing_no_warm_start | terminal_repair_completed_promotions | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | repair_frozen_net_prunes | - | 300.0000 | - | ## Step 50 rejected Measured on 2026-04-02T10:02:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried per-net incumbent acceptance with a second accepted-state reverify after each full candidate iteration. - Rejected the slice immediately: the no-warm-start `example_07` canary stayed at `2/10/10` valid but regressed to `179.0440s`, `8` iterations, `80` nets routed, `234493` expanded nodes, and `255901` congestion checks. - Reverted the code and restored the prior accepted fixed-guidance state without refreshing the committed baseline artifacts. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2406 | +0.0132 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | iteration_candidate_results_accepted | - | 5.0000 | - | | example_05_orientation_stress | iteration_incumbent_results_kept | - | 1.0000 | - | | example_05_orientation_stress | iteration_accept_reverify_calls | - | 2.0000 | - | | example_07_large_scale_routing | duration_s | 0.1907 | 0.2029 | +0.0122 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | iteration_candidate_results_accepted | - | 10.0000 | - | | example_07_large_scale_routing | iteration_incumbent_results_kept | - | 0.0000 | - | | example_07_large_scale_routing | iteration_accept_reverify_calls | - | 1.0000 | - | | example_07_large_scale_routing_no_warm_start | duration_s | - | 179.0440 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 8.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 80.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 234493.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 255901.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_candidate_results_accepted | - | 30.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_incumbent_results_kept | - | 50.0000 | - | | example_07_large_scale_routing_no_warm_start | iteration_accept_reverify_calls | - | 8.0000 | - | ## Step 44 selective straight guidance Measured on 2026-04-02T00:25:53-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Keep full reroute guidance bonus for bend90 and sbend matches, but cut straight-match bonus in half. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2300 | 0.2361 | +0.0061 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | - | 3.0000 | - | | example_05_orientation_stress | guidance_match_moves_bend90 | - | 8.0000 | - | | example_05_orientation_stress | guidance_match_moves_sbend | - | 0.0000 | - | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 593.7500 | -93.7500 | | example_05_orientation_stress | guidance_bonus_applied_straight | - | 93.7500 | - | | example_05_orientation_stress | guidance_bonus_applied_bend90 | - | 500.0000 | - | | example_05_orientation_stress | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2043 | 0.1912 | -0.0131 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_sbend | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 4.0413 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4747.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 4687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 1625.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3721.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 10835.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 11093.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 9328.0000 | - | ## Step 45 selective bend guidance Measured on 2026-04-02T00:27:37-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Restore full straight guidance, but cut bend90-match bonus in half while keeping sbend matches at full bonus. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2300 | 0.2211 | -0.0089 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 272.0000 | -27.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 10.0000 | -1.0000 | | example_05_orientation_stress | guidance_match_moves_straight | - | 3.0000 | - | | example_05_orientation_stress | guidance_match_moves_bend90 | - | 7.0000 | - | | example_05_orientation_stress | guidance_match_moves_sbend | - | 0.0000 | - | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 406.2500 | -281.2500 | | example_05_orientation_stress | guidance_bonus_applied_straight | - | 187.5000 | - | | example_05_orientation_stress | guidance_bonus_applied_bend90 | - | 218.7500 | - | | example_05_orientation_stress | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 108.0000 | -41.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 15.0000 | -8.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 19.0000 | -13.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 18.0000 | -12.0000 | | example_07_large_scale_routing | duration_s | 0.2043 | 0.1873 | -0.0170 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_sbend | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5628 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4320.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 4968.7500 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 1343.7500 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3594.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 10245.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10859.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8944.0000 | - | ## Step 45 reverted Measured on 2026-04-02T00:29:03-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted bend-selective guidance after the no-warm-start canary still regressed in nodes and congestion work without any validity gain. - Restored the accepted fixed-bonus guidance state while keeping the move-type counters. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2300 | 0.2387 | +0.0088 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | - | 3.0000 | - | | example_05_orientation_stress | guidance_match_moves_bend90 | - | 8.0000 | - | | example_05_orientation_stress | guidance_match_moves_sbend | - | 0.0000 | - | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | - | 187.5000 | - | | example_05_orientation_stress | guidance_bonus_applied_bend90 | - | 500.0000 | - | | example_05_orientation_stress | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2043 | 0.1906 | -0.0137 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_match_moves_sbend | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | - | 0.0000 | - | | example_07_large_scale_routing | guidance_bonus_applied_sbend | - | 0.0000 | - | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5968 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 46 later-iteration guidance decay Measured on 2026-04-02T00:38:26-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Keep the first reroute guidance bonus unchanged, then halve the guidance bonus on iteration 2 and later reroutes. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2316 | +0.0041 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 8.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 187.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 500.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1923 | +0.0016 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 4.1601 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4850.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 4093.7500 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 2125.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 1718.7500 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3917.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 11398.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 11839.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 9870.0000 | - | ## Step 46 reverted Measured on 2026-04-02T00:39:37-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted later-iteration guidance decay after the no-warm-start canary regressed in runtime, nodes, and congestion work with no validity gain. - Restored the accepted fixed-bonus guidance state while keeping the move-type counters. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2379 | +0.0105 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 8.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 187.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 500.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.2109 | +0.0202 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.6956 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 47 conflict-aware guidance decay Measured on 2026-04-02T00:44:37-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reduce reroute guidance bonus only when the net's own prior reached-target path still had dynamic collisions; keep full bonus for already-clean prior paths. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2439 | +0.0164 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 286.0000 | -13.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 10.0000 | -1.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 7.0000 | -1.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 500.0000 | -187.5000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 171.8750 | -15.6250 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 328.1250 | -171.8750 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 130.0000 | -19.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 15.0000 | -8.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 19.0000 | -13.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 18.0000 | -12.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1986 | +0.0079 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 4.0364 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4421.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 4890.6250 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 2515.6250 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2015.6250 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 359.3750 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3565.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 10202.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10558.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8814.0000 | - | ## Step 47 reverted Measured on 2026-04-02T00:45:52-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted conflict-aware guidance decay after the no-warm-start canary still regressed in runtime, nodes, and congestion work without any validity gain. - Restored the accepted fixed-bonus guidance state while keeping the move-type counters. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2330 | +0.0056 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 8.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 187.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 500.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1878 | -0.0029 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5878 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 48 best reverified guidance source Measured on 2026-04-02T08:41:26-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Prefer the best reverified per-net path snapshot as the reroute guidance seed, falling back to the most recent reached-target path only when no best snapshot exists. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2347 | +0.0073 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 8.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 187.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 500.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1934 | +0.0027 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5687 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 49 per-net best reverified guidance Measured on 2026-04-02T08:43:09-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Track the best reverified reached-target path per net, ranked by dynamic collisions, total collisions, then total length, and prefer that path as reroute guidance. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2432 | +0.0158 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 8.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 187.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 500.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1923 | +0.0016 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 4.7028 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 5664.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 95.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 49.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 5937.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3062.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2500.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3406.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9679.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10059.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8361.0000 | - | ## Step 49 reverted Measured on 2026-04-02T08:44:09-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Reverted per-net best reverified guidance after the no-warm-start canary regressed sharply in runtime and nodes without any validity gain. - Restored the accepted fixed-bonus guidance state while keeping the move-type counters. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2367 | +0.0093 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves | 11.0000 | 11.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_straight | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_bend90 | 8.0000 | 8.0000 | +0.0000 | | example_05_orientation_stress | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied | 687.5000 | 687.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_straight | 187.5000 | 187.5000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_bend90 | 500.0000 | 500.0000 | +0.0000 | | example_05_orientation_stress | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_nets | 23.0000 | 23.0000 | +0.0000 | | example_05_orientation_stress | congestion_candidate_ids | 32.0000 | 32.0000 | +0.0000 | | example_05_orientation_stress | congestion_exact_pair_checks | 30.0000 | 30.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1904 | -0.0003 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_match_moves_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_straight | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_bend90 | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | guidance_bonus_applied_sbend | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_nets | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_candidate_ids | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | congestion_exact_pair_checks | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.6154 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves | - | 101.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_straight | - | 52.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_bend90 | - | 43.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_match_moves_sbend | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied | - | 6312.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_straight | - | 3250.0000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_bend90 | - | 2687.5000 | - | | example_07_large_scale_routing_no_warm_start | guidance_bonus_applied_sbend | - | 375.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_nets | - | 9604.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_candidate_ids | - | 10010.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_exact_pair_checks | - | 8312.0000 | - | ## Step 51 conflict trace instrumentation Measured on 2026-04-02T11:20:41-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Added opt-in conflict-trace capture and a separate recorder script without changing routing policy. - The no-warm-start canary still finishes 2/10/10 with 4 iterations; tracing shows the same conflict structure at iteration, restored-best, and final stages. - Recurring hotspot edges cluster in two groups: net_00-net_03 and net_06-net_09. - Recurring component pairs also repeat across all traced stages, which points to stable geometric bottlenecks rather than seed noise. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2338 | +0.0064 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1896 | -0.0011 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5423 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 52 prefix-preserving hotspot repair rejected Measured on 2026-04-02T11:45:37-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried a bounded post-loop hotspot repair that preserved clean prefixes and rerouted only conflicted suffixes. - The no-warm-start canary stayed at 2/10/10 and the repair counters showed zero accepted repairs, so the slice did not move correctness. - The experiment temporarily raised the canary to 4258 nodes with one repair pass, two clusters attempted, and eight nets considered before it was reverted. - The tree is restored to the accepted fixed-guidance state: example_07_no_warm_start is back at 2 valid, 10 reached, 4250 nodes, and 3388 congestion checks. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2384 | +0.0110 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1909 | +0.0002 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5590 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 53 cluster repack repair rejected Measured on 2026-04-02T12:04:21-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried bounded post-loop clique reroute against frozen outside geometry. - No-warm-start canary stayed 2/10/10. - Final conflict edges improved 12 -> 10, but correctness did not improve and search cost rose materially. - Tree restored to the accepted fixed-guidance state after revert. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2364 | +0.0089 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1915 | +0.0008 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5998 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 54 hotspot keep-out repair rejected Measured on 2026-04-02T12:22:14-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried bounded post-loop clique reroute with temporary hotspot keep-out obstacles and frozen outside geometry. - The no-warm-start canary failed a bounded probe: a single-scenario diff run timed out at 20 seconds, far above the accepted ~3.5 second state. - Because the slice was clearly losing on runtime before showing any correctness gain, it was reverted. - Tree restored to the accepted fixed-guidance branch after revert. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2490 | +0.0216 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.2004 | +0.0097 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.8387 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 55 bounded portfolio rerun rejected Measured on 2026-04-02T12:50:58-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried a conservative top-level best-of-three portfolio for warm-start-disabled runs using alternate shuffle/order settings. - The no-warm-start canary was unchanged at 2/10/10, 4250 nodes, and 3388 congestion checks. - Because the added control-path complexity produced no correctness or cost improvement, the slice was reverted. - Tree restored to the accepted fixed-guidance branch after revert. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2408 | +0.0133 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1953 | +0.0046 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.6741 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 56 frontier hotspot instrumentation Measured on 2026-04-02T13:00:47-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Added opt-in frontier_trace diagnostics and recorder tooling without changing routing behavior. - No-warm-start canary stayed on the accepted 2/10/10, 4250-node, 3388-congestion-check shape. - Frontier trace shows hotspot-adjacent prunes are dominated by cost (3412) and closed-set (626), with zero hard-collision prunes near the traced hotspots. - Self-collision pruning is concentrated in net_02 (455 traced self-collision prunes); the other hotspot nets are mostly cost- and closed-set-limited. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2300 | +0.0026 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1891 | -0.0016 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.5576 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 57 frontier hotspot readout refinement Measured on 2026-04-02T13:11:47-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Extended frontier_trace reporting with per-net sampled reason x move_type and hotspot splits. - net_02 samples split across hotspots 0 and 6 and include heavy straight self-collision pruning; sampled mix is 36 cost, 23 self-collision, 5 closed-set. - net_03 and net_06 are almost entirely straight-move cost prunes at hotspot 0; their few traced bend90 samples are closed-set dominated, not geometry-blocked. - The sampled cost prunes are overshoot moves well outside the 0..1000 board bounds, so the current cost bucket is largely boundary-rejection rather than local corridor pricing. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2275 | 0.2365 | +0.0090 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.1907 | 0.1927 | +0.0020 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 3.6435 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 4.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 40.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 4250.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 3388.0000 | - | ## Step 58 large no-warm straight-bound cap Measured on 2026-04-02T13:22:28-07:00. Baseline: `/tmp/inire_pre_step58_baseline.json`. Findings: - Applied a board-boundary cap to straight candidate reach only for large warm-start-disabled multi-net runs. - The no-warm-start example_07 canary improved from 2/10/10 to 6/10/10. - Nodes fell from 4250 to 1764 and runtime fell to about 1.95s, while congestion checks rose modestly from 3388 to 4625 as the search converged through six lighter iterations. - Warmed example_07 stayed 10/10/10 and example_05 kept identical routing counters and validity. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2348 | 0.2387 | +0.0038 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 286.0000 | 299.0000 | +13.0000 | | example_05_orientation_stress | congestion_check_calls | 155.0000 | 149.0000 | -6.0000 | | example_07_large_scale_routing | duration_s | 0.1945 | 0.1944 | -0.0000 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 1.9279 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 60.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1764.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4625.0000 | - | ## Step 59 pair-local exact-conflict repair rejected Measured on 2026-04-02T13:50:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried a bounded post-loop two-net repair portfolio on the final conflict pairs, with ranked vs reversed reroute order and optional exact-overlap keep-outs. - The no-warm-start canary stayed at `6/10/10`; the repair phase accepted `0` whole-set improvements across `8` attempts on `2` pairs. - Cost regressed sharply during the failed slice to about `9.56s`, `11126` expanded nodes, and `9087` congestion checks, with `4257` frozen-net hard prunes. - The slice was reverted and the tree restored to the accepted straight-boundary-cap branch. ## Step 60 trimmed exploratory straight heuristics rejected Measured on 2026-04-02T14:00:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried removing the generic `max_reach / 2` and `max_reach - 5` straight candidates only for the same large no-warm runs that use the accepted straight-boundary cap. - The no-warm-start canary regressed from `6/10/10` to `2/10/10` and runtime climbed to about `26s`. - Search work exploded to about `27619` expanded nodes and `53804` congestion checks, so the generic exploratory straight candidates are still necessary for the accepted branch. - The slice was reverted and the tree restored to the accepted straight-boundary-cap branch. ## Step 61 staggered bend-anchor diversification rejected Measured on 2026-04-02T14:10:00-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Tried adding deterministic staggered pre-bend straight candidates for odd-indexed nets only in the large no-warm regime to separate the remaining colliding pairs. - The no-warm-start canary regressed from `6/10/10` to `3/10/10` and runtime rose to about `8.6s`. - The heuristic fired heavily (`1051` staggered bend-anchor candidates and `785` staggered visible candidates) but search still got worse, with about `6724` expanded nodes and `21577` congestion checks. - The slice was reverted and the tree restored to the accepted straight-boundary-cap branch. ## Step 62 pair-local scratch reroute accepted Measured on 2026-04-02T14:15:04-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Built a bounded post-loop pair-local reroute that treats all outside-pair nets as frozen static blockers in a scratch routing world. The no-warm-start example_07 canary improved from 6/10/10 to 9/10/10 with two accepted pair repairs and only 33 extra search expansions. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2591 | 0.2440 | -0.0151 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | pair_local_search_pairs_considered | - | 0.0000 | - | | example_05_orientation_stress | pair_local_search_attempts | - | 0.0000 | - | | example_05_orientation_stress | pair_local_search_accepts | - | 0.0000 | - | | example_05_orientation_stress | pair_local_search_nodes_expanded | - | 0.0000 | - | | example_07_large_scale_routing | duration_s | 0.2027 | 0.2029 | +0.0002 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | pair_local_search_pairs_considered | - | 0.0000 | - | | example_07_large_scale_routing | pair_local_search_attempts | - | 0.0000 | - | | example_07_large_scale_routing | pair_local_search_accepts | - | 0.0000 | - | | example_07_large_scale_routing | pair_local_search_nodes_expanded | - | 0.0000 | - | | example_07_large_scale_routing_no_warm_start | duration_s | - | 2.1244 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 9.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 60.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1764.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4625.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_pairs_considered | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_attempts | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_accepts | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_nodes_expanded | - | 33.0000 | - | ## Step 63 pair-local static obstacle cloning fix Measured on 2026-04-02T14:24:40-07:00. Baseline: `docs/performance_baseline.json`. Findings: - Fixed the scratch pair-local routing world to clone static obstacles from the live collision engine instead of the RoutingProblem wrapper. That removed the false-clean net_00 reroute and lifted the no-warm-start example_07 canary from 9/10/10 to 10/10/10 with the same main search workload. # Performance Baseline Diff | Scenario | Metric | Baseline | Current | Delta | | :-- | :-- | --: | --: | --: | | example_05_orientation_stress | duration_s | 0.2361 | 0.2495 | +0.0134 | | example_05_orientation_stress | valid_results | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | reached_targets | 3.0000 | 3.0000 | +0.0000 | | example_05_orientation_stress | route_iterations | 2.0000 | 2.0000 | +0.0000 | | example_05_orientation_stress | nets_routed | 6.0000 | 6.0000 | +0.0000 | | example_05_orientation_stress | nodes_expanded | 299.0000 | 299.0000 | +0.0000 | | example_05_orientation_stress | congestion_check_calls | 149.0000 | 149.0000 | +0.0000 | | example_05_orientation_stress | pair_local_search_pairs_considered | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | pair_local_search_attempts | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | pair_local_search_accepts | 0.0000 | 0.0000 | +0.0000 | | example_05_orientation_stress | pair_local_search_nodes_expanded | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | duration_s | 0.2025 | 0.2059 | +0.0034 | | example_07_large_scale_routing | valid_results | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | reached_targets | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | route_iterations | 1.0000 | 1.0000 | +0.0000 | | example_07_large_scale_routing | nets_routed | 10.0000 | 10.0000 | +0.0000 | | example_07_large_scale_routing | nodes_expanded | 78.0000 | 78.0000 | +0.0000 | | example_07_large_scale_routing | congestion_check_calls | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | pair_local_search_pairs_considered | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | pair_local_search_attempts | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | pair_local_search_accepts | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing | pair_local_search_nodes_expanded | 0.0000 | 0.0000 | +0.0000 | | example_07_large_scale_routing_no_warm_start | duration_s | - | 2.1497 | - | | example_07_large_scale_routing_no_warm_start | valid_results | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | reached_targets | - | 10.0000 | - | | example_07_large_scale_routing_no_warm_start | route_iterations | - | 6.0000 | - | | example_07_large_scale_routing_no_warm_start | nets_routed | - | 60.0000 | - | | example_07_large_scale_routing_no_warm_start | nodes_expanded | - | 1764.0000 | - | | example_07_large_scale_routing_no_warm_start | congestion_check_calls | - | 4625.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_pairs_considered | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_attempts | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_accepts | - | 2.0000 | - | | example_07_large_scale_routing_no_warm_start | pair_local_search_nodes_expanded | - | 68.0000 | - |