diff --git a/DOCS.md b/DOCS.md index 75a7cba..dbf21d2 100644 --- a/DOCS.md +++ b/DOCS.md @@ -186,7 +186,7 @@ The frontier trace is observational only. It reruns only the final reached-but-c Use `scripts/record_frontier_trace.py` to capture JSON and Markdown frontier-prune artifacts for the built-in trace scenarios. The default target is `example_07_large_scale_routing_no_warm_start`. -Separately from the observational trace tooling, the router may run a bounded post-loop pair-local scratch reroute before refinement when the restored best snapshot ends with final two-net reached-target dynamic conflicts. That repair phase is part of normal routing behavior and is reported through the `pair_local_search_*` counters below. +Separately from the observational trace tooling, the router may run a bounded post-loop pair-local scratch reroute before refinement when the restored best snapshot ends with final two-net reached-target dynamic conflicts. In the late all-reached low-edge regime, the negotiated-congestion loop also narrows reroutes to the current conflict set and may carry capped heavy nets forward by immediately restoring their incumbent reached-target paths instead of spending more search work on pathological late reroutes. That behavior is part of normal routing and is reported through the `pair_local_search_*` and `late_phase_capped_*` counters below. ## 9. Pre-Pair Frontier Trace @@ -321,8 +321,8 @@ Use `scripts/record_iteration_trace.py` to capture JSON and Markdown iteration-a - `pair_local_search_attempts`: Number of pair-local-search reroute attempts executed across all considered pairs. - `pair_local_search_accepts`: Number of pair-local-search attempts accepted into the whole routed result set. - `pair_local_search_nodes_expanded`: Total A* node expansions spent inside pair-local-search attempts. -- `late_phase_capped_nets`: Number of late all-reached heavy-net reroutes run under the bounded node-limit cap before pair-local handoff. -- `late_phase_capped_fallbacks`: Number of those capped late-phase reroutes that fell back to the incumbent reached-target path instead of replacing it. +- `late_phase_capped_nets`: Number of heavy nets identified in the final all-reached late phase and handled by the capped carry-forward path before pair-local handoff. +- `late_phase_capped_fallbacks`: Number of those capped late-phase nets that kept their incumbent reached-target paths instead of accepting a newly searched replacement. ## 10. Internal Modules diff --git a/docs/architecture.md b/docs/architecture.md index 5e147d1..6a3c5d9 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -42,6 +42,7 @@ The search state is a snapped Manhattan `(x, y, r)` port. From each state the ro - The visibility subsystem keeps a lazy static corner index for default `tangent_corner` guidance and only builds the exact corner-to-corner graph on demand for `exact_corner` queries. - `use_tiered_strategy` can swap in a cheaper bend proxy on the first congestion iteration. - Negotiated congestion now re-verifies every reached-target path at the end of each iteration against the final installed dynamic geometry, and it stops early if the conflict graph stalls for consecutive iterations. +- In the late all-reached low-edge regime, negotiated congestion reroutes only the current conflict set instead of all nets. The heaviest remaining late reroutes can be capped and carried forward by restoring their incumbent reached-target paths when more search would just churn before pair-local repair. - After best-snapshot restoration, the router runs a bounded pair-local scratch reroute on final two-net reached-target conflict pairs. That repair phase clones static obstacles from the live collision world, treats all outside-pair geometry as fixed blockers, tries both pair orders, and only keeps the result if whole-set reverify improves. - Final `RoutingResult` validity is determined by explicit post-route verification, not only by search-time pruning. diff --git a/docs/performance.md b/docs/performance.md index 3e801d9..13268ca 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -5,6 +5,8 @@ Generated on 2026-04-02 by `scripts/record_performance_baseline.py`. The full machine-readable snapshot lives in `docs/performance_baseline.json`. Use `scripts/diff_performance_baseline.py` to compare a fresh run against that snapshot. +The default table below intentionally excludes the heavier performance-only no-warm `example_07` canaries. Use `scripts/record_iteration_trace.py` and `scripts/record_pre_pair_frontier_trace.py` to inspect the late negotiated-congestion basin and pair-local handoff behavior for those scenarios. + | Scenario | Duration (s) | Total | Valid | Reached | Iter | Nets Routed | Nodes | Ray Casts | Moves Gen | Moves Added | Dyn Tree | Visibility Builds | Congestion Checks | Verify Calls | | :-- | --: | --: | --: | --: | --: | --: | --: | --: | --: | --: | --: | --: | --: | --: | | example_01_simple_route | 0.0037 | 1 | 1 | 1 | 1 | 1 | 2 | 10 | 11 | 7 | 0 | 0 | 0 | 5 |