Skip to content

Commit 70f91f0

Browse files
drandyhaasclaude
andcommitted
gui-parity: bump marker to 6e88568 — net_clearances CLI/GUI asymmetry RESOLVED by pr392
Sweep 6e09425..6e88568. pr392 Task 1b makes the CLI auto-read netclasses from .kicad_pro and stop clamping, closing the standing net_clearances asymmetry; both fronts now reserve each net's own class clearance. --net- clearances and --keep-input-copper confirmed threaded through both fronts + manifest_to_plan + parity map. No-wx gates green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnkvfHs8NiTT97BBUWq5qW
1 parent 6e88568 commit 70f91f0

1 file changed

Lines changed: 41 additions & 55 deletions

File tree

.gui-parity-checked

Lines changed: 41 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,51 @@
1-
6e09425 2026-07-14 parity sweep 066fc7d..6e09425 (#326/#338/#331/#371/#373/#379/#380/#389/#390/#393/#396/#405). No wiring gaps; one documented asymmetry (net_clearances).
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.
22

3-
Pure AUDIT (no parity fix needed this pass): every engine change since the
4-
previous marker landed in SHARED modules or was already threaded through both
5-
fronts. 24 commits swept; no new CLI argparse flag, no new CLI-only post-pass.
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.
8+
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.
621

722
WHAT WAS CHECKED (all parity-clean):
8-
* #326 pad/footprint clearance overrides -> pad.local_clearance is resolved in
9-
BOTH parse_kicad_pcb (route.py:1988) AND build_pcb_data_from_board
10-
(kicad_parser.py:3112-3140, incl. fp.GetLocalClearance inheritance), and the
11-
two are diffed by the parser-parity validator (kicad_parser.py:3659/3726).
12-
* #338 board-edge rule reader (effective_board_edge_clearance /
13-
read_project_edge_clearance) is used CLI-side (route/route_diff/route_planes/
14-
route_disconnected_planes/kicad_oracle) AND GUI-side
15-
(swig_gui._effective_board_edge_clearance in 4 config builds; every tab's
16-
board_edge_clearance kwarg; settings_persistence). Oracle-reconnect edge
17-
threading (175bac1) present in both route_disconnected_planes and the GUI
18-
planes path.
19-
* #331/#371/#396 net_rescue: rescue_failed_nets runs INSIDE batch_route
20-
(route.py:1077), so the GUI's batch_route call gets it free. Always-on, no
21-
flag.
22-
* #373 plane-pad plain-track fallback: _try_trace_to_same_net_copper lives in
23-
the shared plane_pad_tap.py (called at :775/:917), reached by both fronts via
24-
route_disconnected_planes.route_planes (GUI: planes_gui.py:1125).
25-
* #379 GND-net match, #380 target-swap permutation, #389/#390 rip-by-identity /
26-
NPTH seed floor, #393 underpad off-centre-via/home-lens: all in shared engine
27-
modules (single_ended_routing, target_swap, obstacle_map, plane_pad_tap) ->
28-
both fronts free.
29-
* #405 kicad_drc_compare symmetric baseline subtraction: grader-only, no
30-
routing surface.
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.
3136

3237
GATES RUN GREEN:
3338
* test_manifest_plan_parity.py: 6201 flag-checks / 157 manifests, 0 mismatch;
3439
param->control resolution 12/12.
3540
* test_cli_postpass_coverage.py: 4 registered, 8 in active use, 0 failures
3641
(bga/qfn run_drc remains the one acknowledged CLI-only report-only pass).
37-
* test_gui_engine_parity.py (KiCad python, pcbnew 10.0.0, default power board):
38-
VERDICT PARITY -- CLI & GUI both conn_full=True, drc=0, kicad_unconnected=0.
39-
Copper sets DIFFER (~264 cli-only / ~293 gui-only of ~1250 segs) -- larger
40-
than the pure A*-tie-break/UUID class, consistent with the net_clearances
41-
asymmetry below firing on this board's power net classes.
42-
43-
OPEN ASYMMETRY (documented design state from 5b4c191, NOT fixed here -- fixing
44-
is a CLI behavioral change needing a full corpus A/B, out of scope for a marker
45-
update):
46-
* net_clearances (#326 B5, GridRouteConfig): the GUI BUILDS it from the live
47-
board's netclasses and passes it to batch_route (swig_gui.py:2854/2994/3121),
48-
so the GUI router reserves each net's OWN class clearance as an obstacle. The
49-
CLI main() does NOT build it (route.py:578 comment: "GUI-fed today; harmless
50-
when empty") -- the CLI instead routes at the flat run clearance and clamps
51-
the non-Default netclasses DOWN in the output .kicad_pro
52-
(apply_targets_to_project clamp_nondefault_netclasses). Net effect: on a
53-
MULTI-NETCLASS board with larger non-Default clearances the two fronts
54-
produce DIFFERENT copper (GUI more conservative), though both stay
55-
functionally parity-clean (0 DRC / 0 unconnected). 5b4c191's message aspired
56-
to a CLI auto-build "from the sibling .kicad_pro"; that was not implemented.
57-
RESOLVE next: decide whether the CLI should auto-build net_clearances (then
58-
A/B the corpus) or whether the route-flat-then-clamp approach is the intended
59-
CLI contract; file an issue either way. Empty/all-Default boards are already
60-
identical.
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).
6148

62-
STILL NOT DIRECTLY GUI-ENGINE-TESTED (structurally covered by the no-wx gates;
63-
the KiCad-python test only ran a single-ended+power board): a diff route through
64-
the GUI engine (D1 ordering/rip-up/costs) and a QFN GUI fanout at the D7
65-
defaults. Next audit picks up from this marker.
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.

0 commit comments

Comments
 (0)