Skip to content

Router leaves same-net duplicate 'stacked copper' segments on 10 of 99 boards; add a trim pass #606

Description

@drandyhaas

Observed

Sets 21-27 baseline wave (99 boards, 2026-08-09/10, commit fa1e71f). 10 boards shipped with same-net duplicate/overlapping segments that route.py itself disclosed as stacked-copper:

board count
pocat_comms (set24) 11, from the final GND reconciliation pass
universal_badge_led (set21) 10 on GND, both F.Cu and B.Cu
cm4_edge_ai (set21) 6 (1 GND, 5 +5V)
granit_cm5 (set23) 5 on +5VP/F.Cu
peaksat_comms (set22) 3 (GND B.Cu, GND F.Cu, /RF/uhf-frontend/5V_RX_U B.Cu)
+5 more

The common origin the boards report is repeated reconciliation / rescue / plane-finalize passes across multiple route.py invocations laying copper over copper that is already there.

This is deliberate disclosure, not a bug — hence enhancement

CLAUDE.md documents the current contract: the writer drops exact via re-emissions before writing, and whatever still stacks is named in the summary rather than shipped silently. So the reporting is working as designed and KiCad's DRC will never flag same-net overlaps.

The gap is that nothing then removes it. The copper is redundant: no electrical effect, invisible to grading, but real material on the board and extra segments in every downstream file.

Requested

A trim pass over same-net overlapping segments before write — merge collinear overlaps, drop fully-contained duplicates. The router already detects them precisely enough to count and locate them per net and layer, so the detection half exists; only the removal is missing.

Worth confirming the trim is safe for the zone/fill model before enabling by default (a segment that looks redundant may be the only thing tying a pour region), so an opt-in flag first would be reasonable.

Impact

Route quality / manufacturing cleanliness. No correctness consequence observed in this wave.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions