docs: update ElkSharp sprint execution logs and block status
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user