diff --git a/changes/unreleased/drawio-unrouted-edges.fixed.md b/changes/unreleased/drawio-unrouted-edges.fixed.md
new file mode 100644
index 0000000000..80bdcd7cb0
--- /dev/null
+++ b/changes/unreleased/drawio-unrouted-edges.fixed.md
@@ -0,0 +1 @@
+- The `drawio` rendering form no longer falls back silently when the router finds no path for an edge: the file carries a notice naming the edge and its cells, and an end at a port still leaves through the port's face. Two causes of such edges are gone: a flush pin at a quarter, half or three quarters of a side (a container's header pin above a centred member) coincided with one of libavoid's generic pins and attached to neither, in the diagram panel's router as well as in the export, and a member drawn outside its container was routed inside the container's bounds. Routed waypoints and anchors are written to a thousandth of a pixel instead of with float noise, while a stated `Route` keeps its exact points, and an edge that is a declaration of its own (a connection, flow, succession, transition, dependency and the like) carries its qualified name as `fqn` on its `
-
+
-
+
@@ -120,7 +120,7 @@
-
+
@@ -132,7 +132,7 @@
-
+
@@ -142,7 +142,7 @@
-
+
@@ -151,8 +151,8 @@
-
-
+
+
@@ -162,7 +162,7 @@
-
+
@@ -173,12 +173,12 @@
-
+
-
+
@@ -189,7 +189,7 @@
-
+
@@ -201,12 +201,12 @@
-
+
-
+
@@ -217,12 +217,12 @@
-
+
-
+
@@ -232,7 +232,7 @@
-
+
diff --git a/internal/ir/view/testdata/feature-membership.drawio.golden b/internal/ir/view/testdata/feature-membership.drawio.golden
index 4c262363fd..d3fc6b5f9d 100644
--- a/internal/ir/view/testdata/feature-membership.drawio.golden
+++ b/internal/ir/view/testdata/feature-membership.drawio.golden
@@ -43,12 +43,12 @@
-
+
-
+
@@ -57,7 +57,7 @@
-
+
@@ -67,12 +67,12 @@
-
+
-
+
@@ -82,7 +82,7 @@
-
+
diff --git a/internal/ir/view/testdata/general-definition.drawio.golden b/internal/ir/view/testdata/general-definition.drawio.golden
index 56526ef625..de5ad07bb1 100644
--- a/internal/ir/view/testdata/general-definition.drawio.golden
+++ b/internal/ir/view/testdata/general-definition.drawio.golden
@@ -78,12 +78,12 @@
-
+
-
+
@@ -93,7 +93,7 @@
-
+
@@ -104,7 +104,7 @@
-
+
@@ -115,7 +115,7 @@
-
+
@@ -125,7 +125,7 @@
-
+
@@ -136,7 +136,7 @@
-
+
@@ -149,7 +149,7 @@
-
+
@@ -159,7 +159,7 @@
-
+
@@ -171,7 +171,7 @@
-
+
@@ -182,7 +182,7 @@
-
+
@@ -193,7 +193,7 @@
-
+
@@ -203,7 +203,7 @@
-
+
diff --git a/internal/ir/view/testdata/general-package.drawio.golden b/internal/ir/view/testdata/general-package.drawio.golden
index 6e8b070bd7..c61283e0f5 100644
--- a/internal/ir/view/testdata/general-package.drawio.golden
+++ b/internal/ir/view/testdata/general-package.drawio.golden
@@ -33,7 +33,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/internal/ir/view/testdata/general-requirement.drawio.golden b/internal/ir/view/testdata/general-requirement.drawio.golden
index 29fd609b8c..40324dc283 100644
--- a/internal/ir/view/testdata/general-requirement.drawio.golden
+++ b/internal/ir/view/testdata/general-requirement.drawio.golden
@@ -89,7 +89,7 @@
-
+
@@ -100,7 +100,7 @@
-
+
@@ -110,7 +110,7 @@
-
+
@@ -120,7 +120,7 @@
-
+
@@ -131,7 +131,7 @@
-
+
@@ -141,7 +141,7 @@
-
+
@@ -150,7 +150,7 @@
-
+
@@ -161,7 +161,7 @@
-
+
@@ -180,8 +180,8 @@
-
-
+
+
@@ -192,7 +192,7 @@
-
+
@@ -201,7 +201,7 @@
-
+
@@ -210,7 +210,7 @@
-
+
diff --git a/internal/ir/view/testdata/glyphs-action.drawio.golden b/internal/ir/view/testdata/glyphs-action.drawio.golden
index ae9d2013f9..061105404a 100644
--- a/internal/ir/view/testdata/glyphs-action.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-action.drawio.golden
@@ -37,7 +37,7 @@
-
+
diff --git a/internal/ir/view/testdata/glyphs-definition.drawio.golden b/internal/ir/view/testdata/glyphs-definition.drawio.golden
index 32c4f4684f..bd276efcfd 100644
--- a/internal/ir/view/testdata/glyphs-definition.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-definition.drawio.golden
@@ -73,17 +73,17 @@
-
+
-
+
-
+
@@ -93,7 +93,7 @@
-
+
@@ -108,7 +108,7 @@
-
+
@@ -117,8 +117,8 @@
-
-
+
+
@@ -127,8 +127,8 @@
-
-
+
+
@@ -138,12 +138,12 @@
-
+
-
+
@@ -154,7 +154,7 @@
-
+
diff --git a/internal/ir/view/testdata/glyphs-interconnection.drawio.golden b/internal/ir/view/testdata/glyphs-interconnection.drawio.golden
index 0f97ef5b55..391ef5c3bb 100644
--- a/internal/ir/view/testdata/glyphs-interconnection.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-interconnection.drawio.golden
@@ -33,7 +33,7 @@
-
+
diff --git a/internal/ir/view/testdata/glyphs-mixed.drawio.golden b/internal/ir/view/testdata/glyphs-mixed.drawio.golden
index 23998196bb..3e277b8168 100644
--- a/internal/ir/view/testdata/glyphs-mixed.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-mixed.drawio.golden
@@ -131,27 +131,27 @@
-
+
-
+
-
+
-
+
-
+
@@ -161,7 +161,7 @@
-
+
@@ -170,7 +170,7 @@
-
+
@@ -180,7 +180,7 @@
-
+
@@ -189,7 +189,7 @@
-
+
diff --git a/internal/ir/view/testdata/glyphs-package.drawio.golden b/internal/ir/view/testdata/glyphs-package.drawio.golden
index 3f0bdda1a5..5b5344882a 100644
--- a/internal/ir/view/testdata/glyphs-package.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-package.drawio.golden
@@ -23,12 +23,12 @@
-
+
-
+
@@ -38,7 +38,7 @@
-
+
diff --git a/internal/ir/view/testdata/glyphs-requirement.drawio.golden b/internal/ir/view/testdata/glyphs-requirement.drawio.golden
index 2500b55acd..0ddb641726 100644
--- a/internal/ir/view/testdata/glyphs-requirement.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-requirement.drawio.golden
@@ -27,7 +27,7 @@
-
+
@@ -38,12 +38,12 @@
-
+
-
-
+
+
diff --git a/internal/ir/view/testdata/glyphs-tree.drawio.golden b/internal/ir/view/testdata/glyphs-tree.drawio.golden
index b304ac114e..ff48afaed4 100644
--- a/internal/ir/view/testdata/glyphs-tree.drawio.golden
+++ b/internal/ir/view/testdata/glyphs-tree.drawio.golden
@@ -68,22 +68,22 @@
-
+
-
+
-
+
-
+
@@ -96,7 +96,7 @@
-
+
@@ -106,19 +106,19 @@
-
+
-
-
+
+
-
+
@@ -128,12 +128,12 @@
-
+
-
+
@@ -142,12 +142,12 @@
-
+
-
+
@@ -156,7 +156,7 @@
-
+
diff --git a/internal/ir/view/testdata/interconnection-constraints-placed.drawio.golden b/internal/ir/view/testdata/interconnection-constraints-placed.drawio.golden
index 697123af7b..0f3d19bb9b 100644
--- a/internal/ir/view/testdata/interconnection-constraints-placed.drawio.golden
+++ b/internal/ir/view/testdata/interconnection-constraints-placed.drawio.golden
@@ -66,7 +66,7 @@
-
+
@@ -76,7 +76,7 @@
-
+
@@ -86,7 +86,7 @@
-
+
@@ -96,7 +96,7 @@
-
+
@@ -106,7 +106,7 @@
-
+
diff --git a/internal/ir/view/testdata/interconnection-constraints.drawio.golden b/internal/ir/view/testdata/interconnection-constraints.drawio.golden
index da547ec220..30661106f4 100644
--- a/internal/ir/view/testdata/interconnection-constraints.drawio.golden
+++ b/internal/ir/view/testdata/interconnection-constraints.drawio.golden
@@ -1,6 +1,7 @@
+
@@ -84,38 +85,38 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
diff --git a/internal/ir/view/testdata/interconnection-header-ports.sysml b/internal/ir/view/testdata/interconnection-header-ports.sysml
new file mode 100644
index 0000000000..0136c7543a
--- /dev/null
+++ b/internal/ir/view/testdata/interconnection-header-ports.sysml
@@ -0,0 +1,35 @@
+// Two parts whose ports sit on their top borders, under the header of the
+// part that holds them: the connection between the ports has to leave each
+// port upward, into the strip between the header and the parts.
+package PumpStation {
+ port def FluidPort;
+
+ part def Pump {
+ port outlet : FluidPort;
+ }
+
+ part def Tank {
+ port inlet : ~FluidPort;
+ }
+
+ part def Station {
+ part supply : Pump;
+ part reservoir : Tank;
+ connection fluid connect supply.outlet to reservoir.inlet;
+ }
+
+ part station : Station;
+}
+
+package PumpStationViews {
+ private import Views::*;
+ private import DiagramLayout::*;
+
+ view stationView {
+ expose PumpStation::station;
+ render asInterconnectionDiagram;
+ metadata Layout about PumpStation::station { x = 40; y = 40; }
+ metadata Layout about PumpStation::station::supply { x = 80; y = 220; }
+ metadata Layout about PumpStation::station::reservoir { x = 300; y = 220; }
+ }
+}
diff --git a/internal/ir/view/testdata/interconnection-ports.drawio.golden b/internal/ir/view/testdata/interconnection-ports.drawio.golden
index 1177dcb713..e089ad4345 100644
--- a/internal/ir/view/testdata/interconnection-ports.drawio.golden
+++ b/internal/ir/view/testdata/interconnection-ports.drawio.golden
@@ -41,8 +41,8 @@
-
-
+
+
@@ -52,11 +52,11 @@
-
+
-
-
+
+
diff --git a/internal/ir/view/testdata/interconnection.drawio.golden b/internal/ir/view/testdata/interconnection.drawio.golden
index cad40ef74d..7c613ab400 100644
--- a/internal/ir/view/testdata/interconnection.drawio.golden
+++ b/internal/ir/view/testdata/interconnection.drawio.golden
@@ -56,8 +56,8 @@
-
-
+
+
@@ -67,7 +67,7 @@
-
+
diff --git a/internal/ir/view/testdata/layout.drawio.golden b/internal/ir/view/testdata/layout.drawio.golden
index 86344d1a82..ac9d4eeb06 100644
--- a/internal/ir/view/testdata/layout.drawio.golden
+++ b/internal/ir/view/testdata/layout.drawio.golden
@@ -38,7 +38,7 @@
-
+
diff --git a/internal/ir/view/testdata/mixed-memberships.drawio.golden b/internal/ir/view/testdata/mixed-memberships.drawio.golden
index 69dd7f07f7..8f0787943c 100644
--- a/internal/ir/view/testdata/mixed-memberships.drawio.golden
+++ b/internal/ir/view/testdata/mixed-memberships.drawio.golden
@@ -113,47 +113,47 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -165,7 +165,7 @@
-
+
@@ -175,12 +175,12 @@
-
+
-
+
@@ -194,11 +194,11 @@
-
+
-
-
+
+
@@ -207,7 +207,7 @@
-
+
@@ -219,17 +219,17 @@
-
+
-
+
-
+
@@ -240,7 +240,7 @@
-
+
@@ -251,7 +251,7 @@
-
+
@@ -264,21 +264,21 @@
-
+
-
-
-
-
+
+
+
+
-
+
@@ -288,7 +288,7 @@
-
+
@@ -309,7 +309,7 @@
-
+
@@ -318,7 +318,7 @@
-
+
diff --git a/internal/ir/view/testdata/mixed.drawio.golden b/internal/ir/view/testdata/mixed.drawio.golden
index d3ca2019fd..46f0895cad 100644
--- a/internal/ir/view/testdata/mixed.drawio.golden
+++ b/internal/ir/view/testdata/mixed.drawio.golden
@@ -182,7 +182,7 @@
-
+
@@ -191,7 +191,7 @@
-
+
@@ -201,7 +201,7 @@
-
+
@@ -210,7 +210,7 @@
-
+
@@ -222,7 +222,7 @@
-
+
@@ -232,7 +232,7 @@
-
+
@@ -243,7 +243,7 @@
-
+
@@ -251,8 +251,8 @@
-
-
+
+
@@ -262,37 +262,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -302,51 +302,51 @@
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
+
@@ -358,54 +358,54 @@
-
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
-
+
+
+
+
-
+
-
-
-
-
+
+
+
+
@@ -415,7 +415,7 @@
-
+
@@ -426,7 +426,7 @@
-
+
@@ -438,7 +438,7 @@
-
+
@@ -448,7 +448,7 @@
-
+
@@ -458,7 +458,7 @@
-
+
@@ -468,7 +468,7 @@
-
+
@@ -478,7 +478,7 @@
-
+
@@ -487,7 +487,7 @@
-
+
@@ -497,7 +497,7 @@
-
+
@@ -507,7 +507,7 @@
-
+
@@ -517,7 +517,7 @@
-
+
@@ -528,7 +528,7 @@
-
+
diff --git a/internal/ir/view/testdata/state-entry.drawio.golden b/internal/ir/view/testdata/state-entry.drawio.golden
index 44009624e6..7e3142a6b8 100644
--- a/internal/ir/view/testdata/state-entry.drawio.golden
+++ b/internal/ir/view/testdata/state-entry.drawio.golden
@@ -88,7 +88,7 @@
-
+
@@ -108,7 +108,7 @@
-
+
@@ -118,7 +118,7 @@
-
+
@@ -127,7 +127,7 @@
-
+
@@ -137,7 +137,7 @@
-
+
@@ -147,7 +147,7 @@
-
+
@@ -156,7 +156,7 @@
-
+
@@ -165,7 +165,7 @@
-
+
@@ -175,7 +175,7 @@
-
+
diff --git a/internal/ir/view/testdata/state.drawio.golden b/internal/ir/view/testdata/state.drawio.golden
index 7e5bb125d5..dfb6726c0f 100644
--- a/internal/ir/view/testdata/state.drawio.golden
+++ b/internal/ir/view/testdata/state.drawio.golden
@@ -43,7 +43,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
@@ -62,7 +62,7 @@
-
+
@@ -71,7 +71,7 @@
-
+
@@ -80,8 +80,8 @@
-
-
+
+
@@ -90,7 +90,7 @@
-
+
diff --git a/internal/ir/view/testdata/tree-edges.drawio.golden b/internal/ir/view/testdata/tree-edges.drawio.golden
index 568e6536af..5c85511a87 100644
--- a/internal/ir/view/testdata/tree-edges.drawio.golden
+++ b/internal/ir/view/testdata/tree-edges.drawio.golden
@@ -188,54 +188,54 @@
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
+
+
+
+
@@ -243,12 +243,12 @@
-
+
-
-
+
+
@@ -257,7 +257,7 @@
-
+
@@ -267,7 +267,7 @@
-
+
@@ -294,7 +294,7 @@
-
+
@@ -304,36 +304,36 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
@@ -342,36 +342,36 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
@@ -381,25 +381,25 @@
-
+
-
-
-
-
+
+
+
+
-
+
-
+
@@ -410,12 +410,12 @@
-
+
-
+
@@ -428,7 +428,7 @@
-
+
@@ -438,12 +438,12 @@
-
+
-
+
@@ -454,7 +454,7 @@
-
+
@@ -465,12 +465,12 @@
-
+
-
+
@@ -479,7 +479,7 @@
-
+
@@ -490,47 +490,47 @@
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
@@ -540,12 +540,12 @@
-
+
-
-
+
+
diff --git a/internal/ir/view/testdata/tree.drawio.golden b/internal/ir/view/testdata/tree.drawio.golden
index 259ea9dd4c..442ba659a0 100644
--- a/internal/ir/view/testdata/tree.drawio.golden
+++ b/internal/ir/view/testdata/tree.drawio.golden
@@ -58,37 +58,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/internal/ir/view/testdata/typed-action.drawio.golden b/internal/ir/view/testdata/typed-action.drawio.golden
index 6c7440fab5..5632d41340 100644
--- a/internal/ir/view/testdata/typed-action.drawio.golden
+++ b/internal/ir/view/testdata/typed-action.drawio.golden
@@ -28,7 +28,7 @@
-
+
@@ -38,7 +38,7 @@
-
+
diff --git a/internal/ir/view/testdata/typed-state.drawio.golden b/internal/ir/view/testdata/typed-state.drawio.golden
index 5d0aa47c99..bffebdadbe 100644
--- a/internal/ir/view/testdata/typed-state.drawio.golden
+++ b/internal/ir/view/testdata/typed-state.drawio.golden
@@ -28,7 +28,7 @@
-
+
@@ -38,7 +38,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
diff --git a/internal/ir/view/testdata/variation-interconnection.drawio.golden b/internal/ir/view/testdata/variation-interconnection.drawio.golden
index 447704e67c..a14b35f59c 100644
--- a/internal/ir/view/testdata/variation-interconnection.drawio.golden
+++ b/internal/ir/view/testdata/variation-interconnection.drawio.golden
@@ -33,7 +33,7 @@
-
+
diff --git a/internal/ir/view/testdata/variation-mixed.drawio.golden b/internal/ir/view/testdata/variation-mixed.drawio.golden
index f61e78609e..d5e6faaeeb 100644
--- a/internal/ir/view/testdata/variation-mixed.drawio.golden
+++ b/internal/ir/view/testdata/variation-mixed.drawio.golden
@@ -48,7 +48,7 @@
-
+
@@ -57,37 +57,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/internal/ir/view/testdata/variation-tree.drawio.golden b/internal/ir/view/testdata/variation-tree.drawio.golden
index 7ec012a79b..cf2fd64ebd 100644
--- a/internal/ir/view/testdata/variation-tree.drawio.golden
+++ b/internal/ir/view/testdata/variation-tree.drawio.golden
@@ -53,17 +53,17 @@
-
+
-
+
-
+
@@ -74,22 +74,22 @@
-
+
-
+
-
+
-
+