From 31634a8c13bc61bfc3d9b954a4b66520e58f63bf Mon Sep 17 00:00:00 2001 From: master <> Date: Wed, 1 Apr 2026 10:35:31 +0300 Subject: [PATCH] docs: update ElkSharp sprint execution logs and block status Co-Authored-By: Claude Opus 4.6 (1M context) --- ...NT_20260328_004_ElkSharp_document_rendering_cleanup.md | 8 +++++++- ...RINT_20260329_006_ElkSharp_hybrid_iterative_routing.md | 3 +++ .../SPRINT_20260329_007_ElkSharp_document_render_speed.md | 5 ++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/implplan/SPRINT_20260328_004_ElkSharp_document_rendering_cleanup.md b/docs/implplan/SPRINT_20260328_004_ElkSharp_document_rendering_cleanup.md index 16dd792a7..317c62e08 100644 --- a/docs/implplan/SPRINT_20260328_004_ElkSharp_document_rendering_cleanup.md +++ b/docs/implplan/SPRINT_20260328_004_ElkSharp_document_rendering_cleanup.md @@ -24,7 +24,7 @@ ## Delivery Tracker ### TASK-001 - Clean the document-processing ElkSharp artifact -Status: DOING +Status: BLOCKED Dependency: none Owners: Implementer Task description: @@ -40,10 +40,16 @@ Completion criteria: | Date (UTC) | Update | Owner | | --- | --- | --- | | 2026-03-28 | Sprint created and work started for document-processing artifact cleanup in ElkSharp. | Implementer | +| 2026-04-01 | Re-ran the live `DocumentProcessingWorkflow_WhenRenderedWithElkSharp_ShouldProducePngWithZeroNodeCrossings` artifact path. The current gateway-source off-tip repair cleared document gateway-source vertex exits (`3 -> 0`) and removed shared-lane offenders, but the artifact still fails on `edge/4 + edge/17` target-join pressure plus under-node offenders `edge/14`, `edge/15`, `edge/20`, and `edge/25`. Latest document artifact counts are boundary-slots `4`, gateway-source `2` (`edge/14`, `edge/25`), gateway-corner `2` (`edge/2`, `edge/22`), gateway-interior-adjacent `2` (`edge/13`, `edge/25`), gateway-source-scoring `5`, and edge-node-crossing `1`; sprint remains blocked and cannot be archived. | Implementer | +| 2026-04-01 | Implemented gateway face overflow redirect and under-node push-first corridor reroute. Target-join for `edge/4 + edge/17` eliminated by redirecting `edge/4` to the left tip of `start/2/join` (via `TryRedirectGatewayFaceOverflowEntry` in `ReassignConvergentTargetFace`). Under-node violations for `edge/14`, `edge/15`, `edge/20` fixed by pushing horizontal sweeps 3-17px below blocking nodes instead of routing through the top corridor (which created 9 boundary-slot violations). Score improved `-1387900 -> -983899`. Tests verified: StraightExit `2/2`, BoundarySlotOffenders `1/1`, HybridDeterministicMode `3/3`. | Implementer | +| 2026-04-01 | Ran 3 parallel strategy experiments in isolated worktrees to fix remaining boundary-slots=4: (A) snap-after-normalization, (B) slot-aware normalization, (C) FinalScore exclusions. Strategy A (reorder final boundary-slot snap after gateway artifact polish) fixed boundary-slots `4 -> 0`; existing FinalScore exclusions already handle under-node=2 and backtracking=1. All 10 FinalScore assertions (lines 180-189) now pass. New first-failing assertion: `gatewayCornerDiagonalCount=2` at line 193 on `edge/2` (diagonal entry to Fork left tip) and `edge/22` (diagonal exit from Decision). These are pre-existing gateway geometry issues. Sprint remains BLOCKED on gateway corner diagonals. | Implementer | ## Decisions & Risks - The cleanup remains scoped to the Elk tree and Elk-specific renderer tests; unrelated Platform/Web changes in the worktree are explicitly out of scope. - The artifact test is the authoritative quality gate for this slice because the user request is about the generated document rendering, not generic score improvement in abstract. +- The current source-exit off-vertex repair materially narrowed the document artifact failure surface, but the remaining blocker cluster is now concentrated in `edge/14`, `edge/15`, `edge/20`, `edge/25`, and the `edge/4 + edge/17` join approach. The sprint should stay blocked until that cluster is resolved under the same live render path. +- The target-join fix introduced `HasTargetApproachJoin` as an `internal` method in `ElkEdgeRoutingScoring` (was `private`). This is needed by `ReassignConvergentTargetFace` to detect vertical approach convergence on gateway faces. +- The under-node push-first approach for long sweeps is a tradeoff: it shifts the horizontal segment 3-17px which is less disruptive than corridor rerouting (which changes the entire path and creates boundary-slot violations), but it does not fully eliminate under-node violations when the safe Y exceeds the graph boundary (edge/25). ## Next Checkpoints - After the first routing/post-processing patch: rerun the artifact inspection test and compare the remaining offender list diff --git a/docs/implplan/SPRINT_20260329_006_ElkSharp_hybrid_iterative_routing.md b/docs/implplan/SPRINT_20260329_006_ElkSharp_hybrid_iterative_routing.md index 1551b7ae7..e7e14b038 100644 --- a/docs/implplan/SPRINT_20260329_006_ElkSharp_hybrid_iterative_routing.md +++ b/docs/implplan/SPRINT_20260329_006_ElkSharp_hybrid_iterative_routing.md @@ -92,6 +92,8 @@ Completion criteria: | 2026-03-29 | `dotnet build src/Workflow/__Tests/StellaOps.Workflow.Renderer.Tests/StellaOps.Workflow.Renderer.Tests.csproj -v minimal` passed after the hybrid mode implementation; only the existing `NUnit1033` warnings remain in the renderer test project. | Implementer | | 2026-03-29 | `dotnet test src/Workflow/__Tests/StellaOps.Workflow.Renderer.Tests/StellaOps.Workflow.Renderer.Tests.csproj --filter "Name~HybridDeterministicMode" -v normal` passed with 3/3 tests green. | Implementer | | 2026-03-29 | Reduced `ElkEdgeRouterIterative.LocalRepair`, `ElkEdgeRouterIterative.StrategyRepair`, and `ElkEdgeRouterIterative.WinnerRefinement` into focused partials around the new hybrid seam and revalidated both builds plus the hybrid test slice. | Implementer | +| 2026-04-01 | Re-ran the live document artifact on the hybrid deterministic path after the new gateway-source off-tip repair. Hybrid document parity improved materially: document gateway-source vertex exits fell to `0` and shared-lane offenders fell to `0`, while the remaining document artifact cluster narrowed to boundary-slots `4`, gateway-source `2`, gateway-corner `2`, gateway-interior-adjacent `2`, gateway-source-scoring `5`, one edge-node-crossing, the `edge/4 + edge/17` join approach, and under-node offenders `edge/14`, `edge/15`, `edge/20`, `edge/25`. Hybrid parity for the document-processing scenario is still incomplete, so the sprint stays open. | Implementer | +| 2026-04-01 | Added gateway face overflow redirect (`TryRedirectGatewayFaceOverflowEntry`) to `ReassignConvergentTargetFace` — detects vertical approach convergence on gateway faces using `HasTargetApproachJoin` and redirects one edge to the left tip vertex. Added under-node push-first logic to `RerouteLongSweepsThroughCorridor` — shifts horizontal sweeps 3-17px below blocking nodes instead of corridor reroute when pushY stays within graph bounds. Added `SnapBoundarySlotAssignments` to `FinalizeHybridCorridorCandidate`. Added final boundary-slot snap pass before gateway artifact polish. Hybrid parity tests `3/3` green. Document artifact target-join eliminated, under-node `5 -> 2`, score `-1387900 -> -983899`. Remaining document blockers: boundary-slots `4`, under-node `2` (FinalScore), approach-backtracking `1`, gateway-source `2`. | Implementer | ## Decisions & Risks - Hybrid mode is opt-in and does not replace legacy multi-strategy routing by default. @@ -100,6 +102,7 @@ Completion criteria: - `TopToBottom` is intentionally not promoted to hybrid mode by default in this sprint; it stays on the legacy path until parity is explicitly proven. - The current hybrid batching still uses deterministic conflict keys derived from endpoint and collector locality. A fuller conflict-zone graph is still required before the old coarse lock-key assumptions can be removed everywhere. - The two remaining oversize files in the iterative-control family are `ElkEdgeRouterIterative.StrategyRepair.Evaluate.cs` and `ElkEdgeRouterIterative.StrategyRepair.RepairPlan.cs`. They require helper extraction, not another blind line move. +- The live document fixture is now a stricter parity signal than the original stress graph slice. Even with the source-exit repair in place, the hybrid path still leaves a small hard blocker set around `edge/14`, `edge/15`, `edge/20`, `edge/25`, and the `edge/4 + edge/17` join approach, so hybrid-default documentation and default-promotion work should remain open. ## Next Checkpoints - Reduce `ElkEdgeRouterIterative.StrategyRepair.Evaluate.cs` and `ElkEdgeRouterIterative.StrategyRepair.RepairPlan.cs` below the sprint cap without behavior changes. diff --git a/docs/implplan/SPRINT_20260329_007_ElkSharp_document_render_speed.md b/docs/implplan/SPRINT_20260329_007_ElkSharp_document_render_speed.md index 028ca15e3..f3b840307 100644 --- a/docs/implplan/SPRINT_20260329_007_ElkSharp_document_render_speed.md +++ b/docs/implplan/SPRINT_20260329_007_ElkSharp_document_render_speed.md @@ -51,7 +51,7 @@ Completion criteria: - [x] Deterministic hybrid parity tests still pass with the higher parallelism budget ### TASK-003 - Reduce the remaining winner-terminal speed hotspot -Status: DOING +Status: BLOCKED Dependency: TASK-002 Owners: Implementer Task description: @@ -75,6 +75,8 @@ Completion criteria: | 2026-03-29 | Narrowed the hybrid low-wave winner-refinement path: focused terminal closure now caps rounds for restricted passes, shared-lane polish uses lean hybrid cleanup in low-wave mode, hybrid post-slot focus sets are capped deterministically, and tiny restricted boundary-slot repairs now stop after normalization instead of paying full detour closure. | Implementer | | 2026-03-29 | Current speed gate on the actual document fixture is `13.81s` wall time (`14.36s` total test time) for `DocumentProcessingWorkflow_WhenLayoutOnly_ShouldProduceFinitePositions`; focused guards `...ShouldNotBacktrackIntoCheckResult` and `...ShouldKeepDecisionSourceExitsOnDiscreteBoundarySlots` both still pass on the same fast path. | Implementer | | 2026-03-29 | The rendered artifact regression is faster on the same configuration (optimize phase ~`11.4s`, total test `16.27s`) but still fails with the pre-existing geometry defects: entry angles `2`, boundary angles on `edge/7` and `edge/27`, target join `edge/32+edge/33`, shared lane `edge/3+edge/4`, and under-node `edge/15`, `edge/20`, `edge/25`. | Implementer | +| 2026-04-01 | Re-ran the same live rendered artifact path after the gateway-source off-tip repair. The current fast path still fails, but the blocker set is much smaller: gateway-source vertex exits are now `0`, shared-lane offenders are gone, and the remaining hard blockers are the `edge/4 + edge/17` join approach plus under-node offenders `edge/14`, `edge/15`, `edge/20`, `edge/25`, alongside boundary-slots `4` and gateway-source artifacts on `edge/14` and `edge/25`. Because the speed sprint requires the same fast-path configuration to pass the rendered artifact gate, this task is blocked on the remaining quality defects and cannot be archived. | Implementer | +| 2026-04-01 | After gateway face overflow redirect and under-node push-first corridor reroute: target-join for `edge/4 + edge/17` eliminated, under-node reduced `5 -> 2` (edge/14, 15, 20 fixed), score improved `-1387900 -> -983899`. Remaining rendered-artifact blockers: boundary-slots `4`, under-node `2` (FinalScore), approach-backtracking `1`, gateway-source `2`. The artifact test now fails on `BoundarySlotViolations=4` (first failing assertion), not target-join. Speed sprint remains blocked on the same fast-path quality gate. | Implementer | ## Decisions & Risks - The speed target is for the real document-processing render path, not synthetic hybrid-only stress tests. @@ -85,6 +87,7 @@ Completion criteria: - Attempt-level hybrid diagnostics are now emitted into `ElkLayoutDiagnostics.IterativeStrategies`, restoring visibility into targeted local-repair activity for artifact tests. - Reintroducing broader exact restabilization in the winner-terminal path raised the real document runtime into the `34s+` range without clearing the remaining geometry regressions, so that branch was reverted rather than left in the workspace. - Tiny focused boundary-slot repairs now use an ultra-lean restricted path that stops after normalization. This is acceptable for the speed gate because the remaining quality failures are unchanged, but it is still a tradeoff that should be revisited once the artifact-quality defects are fixed. +- The current fast path is no longer blocked by the older gateway-source vertex-exit or shared-lane families. It is now blocked by a smaller hard-quality cluster (`edge/4 + edge/17`, `edge/14`, `edge/15`, `edge/20`, `edge/25`) that must be cleared before the speed sprint can close on the same configuration. ## Next Checkpoints - Keep the single-wave hybrid renderer path and full-core local-repair budget in place while targeting the residual artifact offenders `edge/7`, `edge/27`, `edge/32+edge/33`, `edge/3+edge/4`, and `edge/15`/`edge/20`/`edge/25` with narrower exact repairs.