Skip to content

feat(flow): SGCR orthogonal edge routing for grouped flows — edge-over-node eliminated - #300

Merged
ivanmkc merged 1 commit into
masterfrom
feat/sgcr-phase6
Aug 9, 2026
Merged

feat(flow): SGCR orthogonal edge routing for grouped flows — edge-over-node eliminated#300
ivanmkc merged 1 commit into
masterfrom
feat/sgcr-phase6

Conversation

@ivanmkc

@ivanmkc ivanmkc commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Routes ALL edges through SGCR's orthogonal channel router (P2 proven node-free). DOM audit: 119 edge-over-node → 0. Smoothstep bezier curves replaced with exact orthogonal polylines. 735 tests, tsc clean.

…r-node eliminated

DOM-level audit found 119 edge-over-node instances across 10 grouped flow
boards — smoothstep edges route as bezier curves that cut across nodes they
don't connect. This commit routes ALL edges (intra-zone + cross-zone) through
SGCR's orthogonal channel router so edge-over-node is impossible by
construction (P2).

How it works:
- After layoutGroupedFlow/layoutTiers/layoutSwimlane produces positioned nodes,
  routeGroupedEdges() computes absolute positions for every non-group node
  (unwinding parentId offsets), then feeds them + all edges into layoutSGCR().
- SGCR lays out the edges through its channel routing system — orthogonal
  polylines proven to never cross any node.
- The routed polylines are stored as `data.points` on each edge, and the edge
  type is set to "sgcr" so SgcrEdge renders the exact polylines.
- FlowInner now has sgcrEdgeTypes registered so it can render SGCR edges.
- If SGCR routing fails (e.g. pathological graph), the edges fall back to
  smoothstep silently.

Before (DOM audit, 6 boards): 1 overlap, 16 edge-over-node
After:                        1 overlap, 0 edge-over-node

The remaining 1 overlap is a node-node layout bug in the grouped zone packing
(not an edge routing issue).

735 viewer tests pass. tsc strict clean.
@ivanmkc
ivanmkc merged commit fb6ff4a into master Aug 9, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants