From 8a8dbee9ceefce0f040e6d4dd2f3764a6b8ae991 Mon Sep 17 00:00:00 2001 From: master <> Date: Thu, 2 Apr 2026 14:06:45 +0300 Subject: [PATCH] Remove End-targeting exception from forward highway detection DetectHighwayGroups had a special case for End nodes that included forward End-targeting edges in highway grouping even when they didn't share a corridor. This caused edges at different Y levels to be truncated to a shared collector, destroying their individual paths. End-targeting edges are already handled by DetectEndSinkGroups (which now correctly skips groups with no horizontal overlap). Forward highway detection should only apply to backward (repeat) edges. All 5 End-targeting edges now render independently with full paths. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../WorkflowRenderSvgRenderer.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs b/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs index 90f8f5088..0d379ab97 100644 --- a/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs +++ b/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs @@ -1253,9 +1253,7 @@ public sealed class WorkflowRenderSvgRenderer IsBackward = edge.Sections.First().EndPoint.X < edge.Sections.First().StartPoint.X, Span = ComputePrimarySpan(edge), }) - .Where(entry => - entry.Span >= 96d - || string.Equals(entry.TargetNode.Kind, "End", StringComparison.OrdinalIgnoreCase)) + .Where(entry => entry.Span >= 96d) .GroupBy( entry => $"{entry.Edge.TargetNodeId}|{entry.FamilyKey}|{(entry.IsBackward ? "back" : "forward")}", StringComparer.Ordinal) @@ -1279,8 +1277,7 @@ public sealed class WorkflowRenderSvgRenderer group.First().FamilyKey, isBackward); }) - .Where(candidate => candidate.IsBackward - || string.Equals(candidate.TargetNode.Kind, "End", StringComparison.OrdinalIgnoreCase)) + .Where(candidate => candidate.IsBackward) .Where(candidate => candidate.EdgeIds.Count >= (candidate.IsBackward ? 3 : 2)) .ToArray();