1653 lines
120 KiB
Markdown
1653 lines
120 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 | - |
|