inire/docs/optimization_pass_01_log.md

3631 lines
259 KiB
Markdown

# 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 | - |