Skip to content

Commit ba878df

Browse files
drandyhaasclaude
andcommitted
Release 0.18.2: bump VERSION + metadata.json; parity marker to 810ce7d
VERSION/metadata align with rust_router 0.18.2 (static keep-out bitmap). .gui-parity-checked: full wave audit — no new CLI flags at HEAD (failed-first reverted with its threading), all behavioral changes in shared engine functions, no-wx parity gates green; gui_engine_parity carried to next KiCad-python session. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013AuHdCpfdwG6fBuS1N6bxn
1 parent 810ce7d commit ba878df

3 files changed

Lines changed: 44 additions & 50 deletions

File tree

.gui-parity-checked

Lines changed: 41 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,45 @@
1-
6e88568 2026-07-15 parity sweep 6e09425..6e88568 (pr392 cross-class merge + plane-edge/grader/cp1252/partial-replay). No wiring gaps; the previously-open net_clearances asymmetry is now RESOLVED by pr392 Task 1b.
1+
810ce7d 2026-07-17 parity sweep 6e88568..810ce7d (the #217/#412 connectivity
2+
wave, ~37 commits: Tier-1 levers, T5 custody + SE member fallback, net-tie
3+
support, rescue-window fence, full-stack layer normalization, #416 terminal
4+
connector, #418 pad stroke extent, #419 mimalloc purge, #420 oracle fast
5+
project, #422 static bitmap / Rust 0.18.2, #265 per-cluster swaps, PR415
6+
connection_width grading merge). Outcome: parity CONFIRMED via the no-wx
7+
gates + placement audit; no wiring gaps found.
28

3-
AUDIT: 17 commits swept. The only new engine surface is pr392's two flags
4-
(--net-clearances, --keep-input-copper); both are threaded through BOTH fronts
5-
plus the manifest converter and parity map. Everything else (plane-edge tap
6-
clamp, grader unify, cp1252 console, partial_replay tool) is shared-engine /
7-
grader-only / tooling with no GUI surface.
9+
AUDIT: no new CLI flags survive at HEAD. The one flag added during the wave
10+
(--failed-first-restart, with full CLI/GUI/manifest/parity threading) was
11+
REVERTED after measuring zero real-board wins — its threading went with it.
12+
Every behavioral change of the wave lives inside shared engine functions
13+
(batch_route, batch_route_diff_pairs, create_plane, the
14+
route_disconnected_planes repair path, close_soft_joints,
15+
apply_single_ended_layer_swaps, plane_pad_tap/try_tap_pad), so both fronts
16+
inherit them with no per-front wiring:
17+
* PlaneComponentOracle: internal to the shared repair path (plane_oracle
18+
param defaults None; oracle-less callers byte-identical).
19+
* T5 casualty reconcile + coverage gate + honest sweep: inside batch_route;
20+
additive results keys only.
21+
* Diff pair_reports / casualty_reconcile / single_ended_fallback: inside
22+
batch_route_diff_pairs; keys mirrored into GUI results_data by the same
23+
engine code.
24+
* Full-stack layer normalization: inside the three shared engine functions
25+
(route_disconnected_planes exempt by design, documented inline).
26+
* #416 connector + narrow_pad_joint: close_soft_joints + check_weird
27+
(shared cleanup/checker).
28+
* #265 per-cluster assignment: PHASE 3 of apply_single_ended_layer_swaps.
29+
* rust_alloc.py (MIMALLOC_PURGE_DELAY=0): wired at every CLI entry point
30+
AND both GUI call sites (per #419 agent; spot-verified imports).
31+
* Rust 0.18.2 static bitmap: below the Python API, front-agnostic;
32+
neutrality proven bit-identical (total_iterations).
833

9-
RESOLVED THIS PASS (was the standing OPEN ASYMMETRY in the prior marker):
10-
* net_clearances CLI/GUI divergence is CLOSED. pr392 Task 1b (e73d9ed) makes
11-
the CLI auto-read the non-Default netclass clearances from the board's
12-
sibling .kicad_pro and build net_clearances (route.py: "Auto-read netclass
13-
clearances ... from the board's .kicad_pro"), AND stops clamping the
14-
netclasses DOWN in the output (fix_kicad_drc_settings: clamp removed /
15-
gated). This is exactly the CLI auto-build 5b4c191 aspired to. Both fronts
16-
now reserve each net's OWN class clearance as an obstacle (KiCad cross-class
17-
max(A,B)); neither rewrites the netclasses to hide violations. CLI and GUI
18-
are behaviorally aligned on multi-class boards. Task 1a (ae2453b) also
19-
honors cross-class clearance for IN-RUN mixed-class copper in the shared
20-
engine -> both fronts free.
21-
22-
WHAT WAS CHECKED (all parity-clean):
23-
* --net-clearances: CLI argparse (route.py) + engine (routing_config
24-
set_net_clearances / obstacle_clearance) + GUI builds it from the live
25-
board's netclasses (swig_gui.py, settings_persistence.py) + manifest_to_plan
26-
special-cases it (tests/stress/manifest_to_plan.py:84) + test_gui_engine_
27-
parity config map. Auto-read from .kicad_pro is in the SHARED engine path, so
28-
both fronts get it.
29-
* --keep-input-copper: CLI flag (route.py:1951, action=store_true default
30-
False) -> batch_route kwarg -> cleanup_pipeline (shared) -> GUI reaches it
31-
via the same cleanup call. route_diff carries the mirrored --keep-input-copper.
32-
* plane-edge tap clamp (2448070): clamp_tap_via_to_edge lives in shared
33-
plane_pad_tap.py / route_planes, reached by both fronts (planes_gui path).
34-
* grader unify (61e1d63), cp1252 console (be5f126), partial_replay (1c6b99d):
35-
grader / entry-point / test-tooling only, no routing-engine or GUI surface.
36-
37-
GATES RUN GREEN:
38-
* test_manifest_plan_parity.py: 6201 flag-checks / 157 manifests, 0 mismatch;
34+
GATES RUN GREEN AT HEAD:
35+
* test_manifest_plan_parity.py: 6201 flag-checks, 0 mismatches;
3936
param->control resolution 12/12.
40-
* test_cli_postpass_coverage.py: 4 registered, 8 in active use, 0 failures
41-
(bga/qfn run_drc remains the one acknowledged CLI-only report-only pass).
42-
* test_gui_engine_parity.py (KiCad python) NOT re-run this pass (no wx/pcbnew in
43-
this session); the no-wx gates + the shared-engine placement of both new flags
44-
cover the wiring. Next audit should re-run it on a multi-class board now that
45-
the CLI auto-builds net_clearances, to confirm the copper sets converge (the
46-
prior marker's ~264/293 copper delta was attributed to this asymmetry, now
47-
resolved -> expect the delta to shrink toward the A*-tie-break/UUID floor).
37+
* test_cli_postpass_coverage.py: 0 failures (bga/qfn run_drc remains the
38+
one acknowledged CLI-only report-only pass).
4839

49-
STILL NOT DIRECTLY GUI-ENGINE-TESTED (structurally covered by the no-wx gates):
50-
a diff route through the GUI engine and a QFN GUI fanout; plus the multi-class
51-
net_clearances convergence check noted above. Next audit picks up from this marker.
40+
NOT RUN THIS PASS: tests/gui_parity/test_gui_engine_parity.py (needs KiCad
41+
python/wx). No batch_route kwarg was added or removed at final HEAD, so the
42+
76-key param set is unchanged from the prior marker. Carried over from the
43+
prior marker and still pending a KiCad-python session: the multi-class
44+
net_clearances convergence check, a GUI-engine diff route, and a QFN GUI
45+
fanout. Next audit picks up from this marker.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.18.0
1+
0.18.2

metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
],
2626
"versions": [
2727
{
28-
"version": "0.18.0",
28+
"version": "0.18.2",
2929
"status": "testing",
3030
"kicad_version": "9.0",
3131
"runtime": "swig",
@@ -34,7 +34,7 @@
3434
"macos",
3535
"windows"
3636
],
37-
"download_url": "https://github.com/drandyhaas/KiCadRoutingTools/releases/download/v0.18.0/KiCadRoutingTools-0.18.0.zip",
37+
"download_url": "https://github.com/drandyhaas/KiCadRoutingTools/releases/download/v0.18.2/KiCadRoutingTools-0.18.2.zip",
3838
"download_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
3939
"download_size": 0,
4040
"install_size": 0

0 commit comments

Comments
 (0)