diff --git a/examples/bug-reports/bugreport5-70a81d/bugreport5-70a81d.fixture.tsx b/examples/bug-reports/bugreport5-70a81d/bugreport5-70a81d.fixture.tsx
new file mode 100644
index 00000000..b11bde76
--- /dev/null
+++ b/examples/bug-reports/bugreport5-70a81d/bugreport5-70a81d.fixture.tsx
@@ -0,0 +1,7 @@
+// @ts-nocheck
+import { AutoroutingPipelineDebugger } from "lib/testing/AutoroutingPipelineDebugger"
+import bugReportJson from "./bugreport5-70a81d.json"
+
+export default () => {
+ return
+}
diff --git a/examples/bug-reports/bugreport5-70a81d/bugreport5-70a81d.json b/examples/bug-reports/bugreport5-70a81d/bugreport5-70a81d.json
new file mode 100644
index 00000000..0b10adee
--- /dev/null
+++ b/examples/bug-reports/bugreport5-70a81d/bugreport5-70a81d.json
@@ -0,0 +1,679 @@
+{
+ "autorouting_bug_report_id": "70a81dc2-2c28-4380-8d57-849a3c32198c",
+ "reporter_account_id": "b9c6f4dd-b57f-4325-b85e-0876e18f9b8e",
+ "package_id": null,
+ "title": "",
+ "simple_route_json": {
+ "bounds": {
+ "maxX": 6.5,
+ "maxY": 6,
+ "minX": -5,
+ "minY": -4
+ },
+ "obstacles": [
+ {
+ "type": "rect",
+ "width": 0.532003,
+ "center": {
+ "x": -0.9499600000000328,
+ "y": 1.1490959999998722
+ },
+ "height": 1.0720070000000002,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_0",
+ "connectivity_net18",
+ "source_trace_6",
+ "source_port_6",
+ "source_trace_4",
+ "source_port_5",
+ "source_net_4",
+ "pcb_smtpad_0",
+ "pcb_port_5",
+ "pcb_smtpad_6",
+ "pcb_port_6"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.532003,
+ "center": {
+ "x": -1.1368683772161603e-13,
+ "y": 1.1490959999998722
+ },
+ "height": 1.0720070000000002,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_1",
+ "connectivity_net39",
+ "source_trace_16",
+ "source_port_16",
+ "source_trace_10",
+ "source_port_10",
+ "source_trace_9",
+ "source_port_9",
+ "source_trace_7",
+ "source_port_7",
+ "source_trace_0",
+ "source_port_4",
+ "source_net_0",
+ "pcb_smtpad_1",
+ "pcb_port_4",
+ "pcb_smtpad_7",
+ "pcb_port_7",
+ "pcb_smtpad_9",
+ "pcb_port_9",
+ "pcb_smtpad_10",
+ "pcb_port_10",
+ "pcb_plated_hole_2",
+ "pcb_port_16"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.532003,
+ "center": {
+ "x": 0.9499600000000328,
+ "y": 1.1490959999998722
+ },
+ "height": 1.0720070000000002,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_2",
+ "connectivity_net22",
+ "source_trace_8",
+ "source_port_8",
+ "source_trace_5",
+ "source_port_3",
+ "source_net_5",
+ "pcb_smtpad_2",
+ "pcb_port_3",
+ "pcb_smtpad_8",
+ "pcb_port_8"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.532003,
+ "center": {
+ "x": 0.9499600000000328,
+ "y": -1.149095999999986
+ },
+ "height": 1.0720070000000002,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_3",
+ "connectivity_net9",
+ "source_trace_3",
+ "source_port_2",
+ "source_net_3",
+ "pcb_smtpad_3",
+ "pcb_port_2"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.532003,
+ "center": {
+ "x": -1.1368683772161603e-13,
+ "y": -1.149095999999986
+ },
+ "height": 1.0720070000000002,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_4",
+ "connectivity_net35",
+ "source_trace_14",
+ "source_port_14",
+ "source_trace_13",
+ "source_port_13",
+ "source_trace_1",
+ "source_port_1",
+ "source_net_1",
+ "pcb_smtpad_4",
+ "pcb_port_1",
+ "pcb_smtpad_13",
+ "pcb_port_13",
+ "pcb_plated_hole_0",
+ "pcb_port_14"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.532003,
+ "center": {
+ "x": -0.9499600000000328,
+ "y": -1.149095999999986
+ },
+ "height": 1.0720070000000002,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_5",
+ "connectivity_net37",
+ "source_trace_15",
+ "source_port_15",
+ "source_trace_2",
+ "source_port_0",
+ "source_net_2",
+ "pcb_smtpad_5",
+ "pcb_port_0",
+ "pcb_plated_hole_1",
+ "pcb_port_15"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.5,
+ "center": {
+ "x": -2,
+ "y": 3
+ },
+ "height": 0.5,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_6",
+ "connectivity_net18",
+ "source_trace_6",
+ "source_port_6",
+ "source_trace_4",
+ "source_port_5",
+ "source_net_4",
+ "pcb_smtpad_0",
+ "pcb_port_5",
+ "pcb_smtpad_6",
+ "pcb_port_6"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.5,
+ "center": {
+ "x": -2,
+ "y": 4
+ },
+ "height": 0.5,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_7",
+ "connectivity_net39",
+ "source_trace_16",
+ "source_port_16",
+ "source_trace_10",
+ "source_port_10",
+ "source_trace_9",
+ "source_port_9",
+ "source_trace_7",
+ "source_port_7",
+ "source_trace_0",
+ "source_port_4",
+ "source_net_0",
+ "pcb_smtpad_1",
+ "pcb_port_4",
+ "pcb_smtpad_7",
+ "pcb_port_7",
+ "pcb_smtpad_9",
+ "pcb_port_9",
+ "pcb_smtpad_10",
+ "pcb_port_10",
+ "pcb_plated_hole_2",
+ "pcb_port_16"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.5,
+ "center": {
+ "x": 1,
+ "y": 3
+ },
+ "height": 0.5,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_8",
+ "connectivity_net22",
+ "source_trace_8",
+ "source_port_8",
+ "source_trace_5",
+ "source_port_3",
+ "source_net_5",
+ "pcb_smtpad_2",
+ "pcb_port_3",
+ "pcb_smtpad_8",
+ "pcb_port_8"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.5,
+ "center": {
+ "x": 1,
+ "y": 4
+ },
+ "height": 0.5,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_9",
+ "connectivity_net39",
+ "source_trace_16",
+ "source_port_16",
+ "source_trace_10",
+ "source_port_10",
+ "source_trace_9",
+ "source_port_9",
+ "source_trace_7",
+ "source_port_7",
+ "source_trace_0",
+ "source_port_4",
+ "source_net_0",
+ "pcb_smtpad_1",
+ "pcb_port_4",
+ "pcb_smtpad_7",
+ "pcb_port_7",
+ "pcb_smtpad_9",
+ "pcb_port_9",
+ "pcb_smtpad_10",
+ "pcb_port_10",
+ "pcb_plated_hole_2",
+ "pcb_port_16"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.95,
+ "center": {
+ "x": -3,
+ "y": -0.4750000000000001
+ },
+ "height": 0.8,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_10",
+ "connectivity_net39",
+ "source_trace_16",
+ "source_port_16",
+ "source_trace_10",
+ "source_port_10",
+ "source_trace_9",
+ "source_port_9",
+ "source_trace_7",
+ "source_port_7",
+ "source_trace_0",
+ "source_port_4",
+ "source_net_0",
+ "pcb_smtpad_1",
+ "pcb_port_4",
+ "pcb_smtpad_7",
+ "pcb_port_7",
+ "pcb_smtpad_9",
+ "pcb_port_9",
+ "pcb_smtpad_10",
+ "pcb_port_10",
+ "pcb_plated_hole_2",
+ "pcb_port_16"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.95,
+ "center": {
+ "x": -3,
+ "y": -2.125
+ },
+ "height": 0.8,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_11",
+ "connectivity_net31",
+ "source_trace_12",
+ "source_port_12",
+ "source_trace_11",
+ "source_port_11",
+ "source_net_6",
+ "pcb_smtpad_11",
+ "pcb_port_11",
+ "pcb_smtpad_12",
+ "pcb_port_12"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.95,
+ "center": {
+ "x": 3,
+ "y": -2.125
+ },
+ "height": 0.8,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_12",
+ "connectivity_net31",
+ "source_trace_12",
+ "source_port_12",
+ "source_trace_11",
+ "source_port_11",
+ "source_net_6",
+ "pcb_smtpad_11",
+ "pcb_port_11",
+ "pcb_smtpad_12",
+ "pcb_port_12"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 0.95,
+ "center": {
+ "x": 3,
+ "y": -0.4750000000000001
+ },
+ "height": 0.8,
+ "layers": ["top"],
+ "connectedTo": [
+ "pcb_smtpad_13",
+ "connectivity_net35",
+ "source_trace_14",
+ "source_port_14",
+ "source_trace_13",
+ "source_port_13",
+ "source_trace_1",
+ "source_port_1",
+ "source_net_1",
+ "pcb_smtpad_4",
+ "pcb_port_1",
+ "pcb_smtpad_13",
+ "pcb_port_13",
+ "pcb_plated_hole_0",
+ "pcb_port_14"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 9,
+ "center": {
+ "x": 0,
+ "y": 1
+ },
+ "height": 9,
+ "layers": ["bottom"],
+ "connectedTo": [
+ "pcb_smtpad_14",
+ "connectivity_net77",
+ "source_port_17",
+ "pcb_smtpad_14",
+ "pcb_port_17"
+ ]
+ },
+ {
+ "type": "rect",
+ "width": 1.5,
+ "center": {
+ "x": 5.5,
+ "y": -1.54
+ },
+ "height": 1.5,
+ "layers": ["top", "inner1", "inner2", "bottom"],
+ "connectedTo": [
+ "pcb_plated_hole_0",
+ "connectivity_net35",
+ "source_trace_14",
+ "source_port_14",
+ "source_trace_13",
+ "source_port_13",
+ "source_trace_1",
+ "source_port_1",
+ "source_net_1",
+ "pcb_smtpad_4",
+ "pcb_port_1",
+ "pcb_smtpad_13",
+ "pcb_port_13",
+ "pcb_plated_hole_0",
+ "pcb_port_14"
+ ]
+ },
+ {
+ "type": "oval",
+ "width": 1.5,
+ "center": {
+ "x": 5.5,
+ "y": 1
+ },
+ "height": 1.5,
+ "layers": ["top", "inner1", "inner2", "bottom"],
+ "connectedTo": [
+ "pcb_plated_hole_1",
+ "connectivity_net37",
+ "source_trace_15",
+ "source_port_15",
+ "source_trace_2",
+ "source_port_0",
+ "source_net_2",
+ "pcb_smtpad_5",
+ "pcb_port_0",
+ "pcb_plated_hole_1",
+ "pcb_port_15"
+ ]
+ },
+ {
+ "type": "oval",
+ "width": 1.5,
+ "center": {
+ "x": 5.5,
+ "y": 3.54
+ },
+ "height": 1.5,
+ "layers": ["top", "inner1", "inner2", "bottom"],
+ "connectedTo": [
+ "pcb_plated_hole_2",
+ "connectivity_net39",
+ "source_trace_16",
+ "source_port_16",
+ "source_trace_10",
+ "source_port_10",
+ "source_trace_9",
+ "source_port_9",
+ "source_trace_7",
+ "source_port_7",
+ "source_trace_0",
+ "source_port_4",
+ "source_net_0",
+ "pcb_smtpad_1",
+ "pcb_port_4",
+ "pcb_smtpad_7",
+ "pcb_port_7",
+ "pcb_smtpad_9",
+ "pcb_port_9",
+ "pcb_smtpad_10",
+ "pcb_port_10",
+ "pcb_plated_hole_2",
+ "pcb_port_16"
+ ]
+ }
+ ],
+ "layerCount": 2,
+ "connections": [
+ {
+ "name": "source_trace_6",
+ "pointsToConnect": [
+ {
+ "x": -2,
+ "y": 3,
+ "layer": "top",
+ "pointId": "pcb_port_6",
+ "pcb_port_id": "pcb_port_6"
+ },
+ {
+ "x": -0.9499600000000328,
+ "y": 1.1490959999998722,
+ "layer": "top",
+ "pointId": "pcb_port_5",
+ "pcb_port_id": "pcb_port_5"
+ }
+ ],
+ "source_trace_id": "source_trace_6"
+ },
+ {
+ "name": "source_trace_8",
+ "pointsToConnect": [
+ {
+ "x": 1,
+ "y": 3,
+ "layer": "top",
+ "pointId": "pcb_port_8",
+ "pcb_port_id": "pcb_port_8"
+ },
+ {
+ "x": 0.9499600000000328,
+ "y": 1.1490959999998722,
+ "layer": "top",
+ "pointId": "pcb_port_3",
+ "pcb_port_id": "pcb_port_3"
+ }
+ ],
+ "source_trace_id": "source_trace_8"
+ },
+ {
+ "name": "source_net_0",
+ "pointsToConnect": [
+ {
+ "x": -1.1368683772161603e-13,
+ "y": 1.1490959999998722,
+ "layer": "top",
+ "pointId": "pcb_port_4",
+ "pcb_port_id": "pcb_port_4"
+ },
+ {
+ "x": -2,
+ "y": 4,
+ "layer": "top",
+ "pointId": "pcb_port_7",
+ "pcb_port_id": "pcb_port_7"
+ },
+ {
+ "x": 1,
+ "y": 4,
+ "layer": "top",
+ "pointId": "pcb_port_9",
+ "pcb_port_id": "pcb_port_9"
+ },
+ {
+ "x": -3,
+ "y": -0.4750000000000001,
+ "layer": "top",
+ "pointId": "pcb_port_10",
+ "pcb_port_id": "pcb_port_10"
+ },
+ {
+ "x": 5.5,
+ "y": 3.54,
+ "layer": "top",
+ "pointId": "pcb_port_16",
+ "pcb_port_id": "pcb_port_16"
+ }
+ ]
+ },
+ {
+ "name": "source_net_1",
+ "pointsToConnect": [
+ {
+ "x": -1.1368683772161603e-13,
+ "y": -1.149095999999986,
+ "layer": "top",
+ "pointId": "pcb_port_1",
+ "pcb_port_id": "pcb_port_1"
+ },
+ {
+ "x": 3,
+ "y": -0.4750000000000001,
+ "layer": "top",
+ "pointId": "pcb_port_13",
+ "pcb_port_id": "pcb_port_13"
+ },
+ {
+ "x": 5.5,
+ "y": -1.54,
+ "layer": "top",
+ "pointId": "pcb_port_14",
+ "pcb_port_id": "pcb_port_14"
+ }
+ ]
+ },
+ {
+ "name": "source_net_2",
+ "pointsToConnect": [
+ {
+ "x": -0.9499600000000328,
+ "y": -1.149095999999986,
+ "layer": "top",
+ "pointId": "pcb_port_0",
+ "pcb_port_id": "pcb_port_0"
+ },
+ {
+ "x": 5.5,
+ "y": 1,
+ "layer": "top",
+ "pointId": "pcb_port_15",
+ "pcb_port_id": "pcb_port_15"
+ }
+ ]
+ },
+ {
+ "name": "source_net_3",
+ "pointsToConnect": [
+ {
+ "x": 0.9499600000000328,
+ "y": -1.149095999999986,
+ "layer": "top",
+ "pointId": "pcb_port_2",
+ "pcb_port_id": "pcb_port_2"
+ }
+ ]
+ },
+ {
+ "name": "source_net_4",
+ "pointsToConnect": [
+ {
+ "x": -0.9499600000000328,
+ "y": 1.1490959999998722,
+ "layer": "top",
+ "pointId": "pcb_port_5",
+ "pcb_port_id": "pcb_port_5"
+ }
+ ]
+ },
+ {
+ "name": "source_net_5",
+ "pointsToConnect": [
+ {
+ "x": 0.9499600000000328,
+ "y": 1.1490959999998722,
+ "layer": "top",
+ "pointId": "pcb_port_3",
+ "pcb_port_id": "pcb_port_3"
+ }
+ ]
+ },
+ {
+ "name": "source_net_6",
+ "pointsToConnect": [
+ {
+ "x": -3,
+ "y": -2.125,
+ "layer": "top",
+ "pointId": "pcb_port_11",
+ "pcb_port_id": "pcb_port_11"
+ },
+ {
+ "x": 3,
+ "y": -2.125,
+ "layer": "top",
+ "pointId": "pcb_port_12",
+ "pcb_port_id": "pcb_port_12"
+ }
+ ]
+ }
+ ],
+ "minTraceWidth": 0.15
+ },
+ "circuit_json": null,
+ "subcircuit_id": null,
+ "created_at": "2025-09-20T11:39:14.074Z"
+}
diff --git a/lib/solvers/CapacityMeshSolver/CapacityMeshEdgeSolver2_NodeTreeOptimization.ts b/lib/solvers/CapacityMeshSolver/CapacityMeshEdgeSolver2_NodeTreeOptimization.ts
index a705d797..58e4265e 100644
--- a/lib/solvers/CapacityMeshSolver/CapacityMeshEdgeSolver2_NodeTreeOptimization.ts
+++ b/lib/solvers/CapacityMeshSolver/CapacityMeshEdgeSolver2_NodeTreeOptimization.ts
@@ -40,13 +40,8 @@ export class CapacityMeshEdgeSolver2_NodeTreeOptimization extends CapacityMeshEd
for (const B of maybeAdjNodes) {
const areBordering = areNodesBordering(A, B)
if (!areBordering) continue
- const strawNodesWithSameParent =
- A._strawNode &&
- B._strawNode &&
- A._strawParentCapacityMeshNodeId === B._strawParentCapacityMeshNodeId
if (
A.capacityMeshNodeId !== B.capacityMeshNodeId && // Don't connect a node to itself
- !strawNodesWithSameParent &&
this.doNodesHaveSharedLayer(A, B) &&
!this.edgeSet.has(`${A.capacityMeshNodeId}-${B.capacityMeshNodeId}`)
) {
diff --git a/lib/solvers/DeadEndSolver/DeadEndSolver.ts b/lib/solvers/DeadEndSolver/DeadEndSolver.ts
index ca7c5314..74b96f2c 100644
--- a/lib/solvers/DeadEndSolver/DeadEndSolver.ts
+++ b/lib/solvers/DeadEndSolver/DeadEndSolver.ts
@@ -71,6 +71,16 @@ export class DeadEndSolver extends BaseSolver {
const leaf = this.leaves[this.leavesIndex]
+ if (
+ this.nodes.find((node) => node.capacityMeshNodeId == leaf)?._strawNode
+ ) {
+ this.leavesIndex += 1
+ if (this.leavesIndex === this.leaves.length) {
+ this.solved = true
+ }
+ return
+ }
+
// Get the single neighbor of the leaf node
const [neighbor] = this.adjacencyList.get(leaf)!
diff --git a/tests/__snapshots__/keyboard4.snap.svg b/tests/__snapshots__/keyboard4.snap.svg
index bf7dd39d..5689a8ef 100644
--- a/tests/__snapshots__/keyboard4.snap.svg
+++ b/tests/__snapshots__/keyboard4.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file