Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions docs/en/phase-0-reactflow-parity-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ Phase 537 is GitHub #197 / `avalonia-node-map-w9h`, the lasso toolbar UX and pub

Phase 538 is GitHub #199 / `avalonia-node-map-a3w`, the eraser behavior/API feasibility gate. This docs/tests-only slice records that AsterGraph's current source-backed deletion evidence is graph-selection deletion through `selection.delete`, the `Delete Selection` command descriptor, and the stock `selection-delete` placement. That route can delete selected graph nodes through the existing command system, but it is not an eraser cursor, collision trail, or eraser-specific hit-testing behavior. It authorizes no eraser cursor, no collision trail, no eraser-specific hit-testing, no drawing primitives, no persistence, no renderer rewrite, no strict pixel baseline enforcement, no retained API removal, and no full whiteboard parity.

## Phase 539 Update

Phase 539 is GitHub #201 / `avalonia-node-map-rwr`, the rectangle/freehand drawing primitive model gate. This docs/tests-only slice records that the current `GraphDocument` / `GraphNode` / `GraphConnection` model surface and `GraphEditorSelectionRectangleSnapshot` / `GraphEditorSelectionLassoSnapshot` evidence are graph-scene and selection contracts, not rectangle/freehand drawing primitives. It defines the minimum future contract needed before drawing behavior can be implemented or claimed: model identity, geometry, style/brush state, hit-testing/edit lifecycle, renderer projection, persistence, and Cookbook/screenshot evidence. It authorizes no runtime behavior changes, no public API changes, no Avalonia pointer coordinator edits, no renderer-layer changes, no persistence/schema changes, no screenshot manifest expansion, no UI redesign, no eraser behavior, no toolbar work, no retained API removal, and no full React Flow whiteboard parity.

## Phase 489 Update

Phase 489 closed GitHub #101 / `avalonia-node-map-6sc` through PR #102 as a renderer virtualization design spike on branch `perf/renderer-virtualization-spike`. This slice was docs/tests only: it defined the proof contract required before any future ItemsRepeater/Skia-style renderer virtualization, background graph index, or graph-size claim expansion. It made no public API change and no runtime change. The current evidence remains viewport-budgeted scene projection/rendering, not a true renderer virtualization contract; `xlarge` stays telemetry-only.
Expand Down Expand Up @@ -373,7 +377,7 @@ Phase 529 records the whiteboard/lasso/eraser feasibility audit through GitHub #
| Multi-select and command projection | Present / guarded | `selection.select-all`, `selection.select-none`, `selection.invert`, `selection.delete`, and `selection.transform.move` expose current selection and manipulation commands. | Command projection operates on graph selections; it does not add eraser hit trails, drawn shape lifecycle, or whiteboard-specific edit modes. |
| Lasso/freehand selection | Public Avalonia lasso selection mode with hosted toolbar activation and transient visual feedback / whiteboard gap retained | `GetSelectionLassoSnapshot`, `GraphEditorSelectionLassoSnapshot`, `Queries_GetSelectionLassoSnapshot_ReturnsCenterContainedNodesAndConnections`, `Queries_GetSelectionLassoSnapshot_UsesNodeCenterInsteadOfBoundsIntersection`, `Queries_GetSelectionLassoSnapshot_WithOpenOrDegeneratePath_ReturnsDeterministicResults`, `UpdateLassoSelection_WithFinalizeTrue_UsesBackendSelectionLassoQuery`, `LassoSelection_RoutesThroughCanvasBridge_AndSelectsContainedNodes`, `NodeCanvasSelectionGestureKind.Lasso`, `TryBeginLassoSelection_WithLassoGestureKind_RecordsStartAndMoveAfterThreshold`, `HandleMoved_WhenCanvasSelectionUsesLassoGesture_RecordsLassoPointAndSkipsMarqueeUpdate`, `HandleReleased_AfterLassoSelection_FinalizesLassoSelectionAndResetsSession`, `NodeCanvasSelectionMode.Lasso`, `LassoSelectionMode_RoutesThroughCanvasPointerHandlers_AndSelectsContainedNodes`, `UpdateLassoFeedback`, `ClearLassoFeedback`, `LassoSelectionMode_RendersTransientFeedbackPathOnlyDuringDrag`, `CreatePointerSelectionModeActions`, `pointer-mode.lasso-selection`, `PART_PointerModeLassoButton`, `HostedActions_PointerModeActionsSwitchNodeCanvasSelectionModeWithoutRuntimeCommandRoute`, and `AuthoringToolsChrome_ProjectsPointerModeActionsThroughNodeCanvasSelectionMode` prove the active-scope backend query, internal Avalonia bridge, internal gesture capture route, public pointer-mode activation route, hosted toolbar route, and transient visual feedback route. The query treats freeform points as a closed polygon, selects nodes by center-point containment, and selects connections when both endpoint nodes are selected. | No eraser behavior, drawing primitives, persistence, renderer layer, strict pixel baselines, retained API removal, or full React Flow whiteboard parity is implemented. This remains not full React Flow whiteboard parity. |
| Eraser tool | Feasibility gate recorded / gap retained | `selection.delete`, the `Delete Selection` descriptor, and the stock `selection-delete` placement prove graph-selection deletion evidence only. | Phase 538 records that graph-selection deletion is not an eraser cursor, collision trail, or eraser-specific hit-testing path. No eraser cursor, no collision trail, no eraser-specific hit-testing, no drawing primitives, no persistence, no renderer rewrite, no strict pixel baseline enforcement, no retained API removal, and no full whiteboard parity are implemented. |
| Rectangle/freehand drawing | Gap retained | Existing rectangle evidence is selection-only. There are no rectangle/freehand drawing tools, whiteboard primitives, shape nodes, brush/color state, or drawing persistence contracts. | Needs later API/model/renderer work before claiming rectangle draw or freehand draw parity. |
| Rectangle/freehand drawing | Model gate recorded / gap retained | Phase 539 / GitHub #201 / `avalonia-node-map-rwr` ties current reusable evidence to `GraphDocument`, `GraphNode`, `GraphConnection`, `GraphEditorSelectionRectangleSnapshot`, `GraphEditorSelectionLassoSnapshot`, `GetSelectionRectangleSnapshot`, `GetSelectionLassoSnapshot`, `interaction-selection-marquee-route`, `selection-marquee-workbench`, and `cookbook-interaction-lasso-screenshot-proof`. These prove graph-scene, selection, and visual-proof seams only. | Before rectangle/freehand drawing behavior can be implemented or claimed, a later API/model issue must define model identity, geometry, style/brush state, hit-testing/edit lifecycle, renderer projection, persistence/drawing persistence, and Cookbook/screenshot evidence. Phase 539 adds no runtime behavior changes, no public API changes, no Avalonia pointer coordinator edits, no renderer-layer changes, no persistence/schema changes, no screenshot manifest expansion, and no full React Flow whiteboard parity. |
| Whiteboard persistence/render layer | Gap retained | Current Cookbook and screenshot rows cover graph scenes and built-in components, not whiteboard annotations or drawing state. | Future work would need persistence, renderer layer, hit-testing, React Flow-like examples, and screenshot manifest expansion; Phase 529 adds none of those. |

## Completed Phase 0 Issue Wave
Expand Down Expand Up @@ -507,13 +511,15 @@ Phase 537 adds the lasso toolbar ergonomics route through GitHub #197 / `avaloni

Phase 538 records the eraser behavior/API feasibility gate through GitHub #199 / `avalonia-node-map-a3w`. It keeps `selection.delete`, `Delete Selection`, and `selection-delete` tied to graph-selection deletion evidence only, while retaining eraser cursor, collision trail, eraser-specific hit-testing, drawing primitives, persistence, renderer rewrite, strict pixel baselines, retained API removal, and full whiteboard parity as gaps.

Phase 539 records the rectangle/freehand drawing primitive model gate through GitHub #201 / `avalonia-node-map-rwr`. It keeps current `GraphDocument`, `GraphNode`, `GraphConnection`, `GraphEditorSelectionRectangleSnapshot`, and `GraphEditorSelectionLassoSnapshot` evidence scoped to graph-scene and selection contracts, then defines the future model identity, geometry, style/brush state, hit-testing/edit lifecycle, renderer projection, persistence, and Cookbook/screenshot evidence required before any rectangle/freehand drawing parity claim.

| GitHub | Bead | Title | Priority | Likely write set | Parallelism |
| --- | --- | --- | --- | --- | --- |
| #193 | `avalonia-node-map-8l6` | Phase 535: refresh post-lasso visual feedback parity queue | P2 | parity roadmap docs and focused docs tests | Current docs/test queue refresh. Blocks the next implementation wave because it replaces the stale Phase 534 current row with tracker-backed follow-ups. |
| #195 | `avalonia-node-map-uvd` | Phase 536: lasso screenshot route and Cookbook proof boundary | P2 | Cookbook screenshot manifest, Demo fixture route, scene/shell screenshot tests, and parity docs | Current visual proof slice. Blocks lasso toolbar work until the screenshot route and Cookbook proof boundary are stable. |
| #197 | `avalonia-node-map-w9h` | Phase 537: lasso toolbar UX and public activation ergonomics boundary | P2 | hosted authoring tools, `NodeCanvas.SelectionMode` activation surface, Demo/Cookbook route, and editor/Avalonia tests | Merged toolbar ergonomics slice. It stays on hosted actions over the existing canvas selection mode and does not create whiteboard primitives. |
| #199 | `avalonia-node-map-a3w` | Phase 538: eraser behavior/API feasibility gate | P3 | graph-selection deletion evidence, parity roadmap docs, and focused docs tests | Current eraser feasibility slice. It keeps `selection.delete` scoped to graph-selection deletion evidence and does not create an eraser cursor, collision trail, or eraser-specific hit-testing path. |
| TBD | TBD | Phase 539: rectangle/freehand drawing primitive model gate | P3 | Core/Editor model contract docs/tests and whiteboard primitive API inventory | Can run after Phase 535 in parallel with eraser feasibility if it stays docs/model-only and does not touch Avalonia pointer coordinators. |
| #201 | `avalonia-node-map-rwr` | Phase 539: rectangle/freehand drawing primitive model gate | P3 | Core/Editor model contract docs/tests and whiteboard primitive API inventory | Current stacked drawing model gate on top of Phase 538 / PR #200. It stays docs/model-only, does not touch Avalonia pointer coordinators, and preserves Phase 540 as future persistence/render-layer readiness work. |
| TBD | TBD | Phase 540: whiteboard persistence and render-layer readiness gate | P4 | persistence/schema planning docs, renderer-layer boundary docs, screenshot policy notes, and focused docs tests | Depends on Phase 539 model decisions; do not implement persistence or renderer behavior in the queue refresh. |

## Recommended Parallel Worktree Plan
Expand Down Expand Up @@ -554,7 +560,7 @@ Phase 538 records the eraser behavior/API feasibility gate through GitHub #199 /
- `visual/phase-536-lasso-screenshot-proof`: owns #195 / `avalonia-node-map-uvd`; current slice for `cookbook-interaction-lasso-screenshot-proof`, `shell-cookbook-lasso-screenshot-proof`, and the bounded lasso screenshot proof boundary.
- `feature/phase-537-lasso-toolbar-ergonomics`: owned #197 / `avalonia-node-map-w9h`; merged worktree for lasso toolbar UX and public activation ergonomics.
- `feature/phase-538-eraser-feasibility`: owns #199 / `avalonia-node-map-a3w`; current worktree for eraser behavior/API feasibility with graph-selection deletion evidence only.
- `docs/phase-539-drawing-primitive-model-gate`: future candidate for rectangle/freehand drawing primitive model decisions after Phase 535.
- `docs/phase-539-drawing-primitive-model-gate`: owns #201 / `avalonia-node-map-rwr`; current stacked docs/test gate for rectangle/freehand drawing primitive model decisions on top of Phase 538 / PR #200, with no runtime/API/UI/pointer coordinator/renderer/persistence changes.
- `docs/phase-540-whiteboard-render-persistence-gate`: future candidate for persistence/render-layer readiness after drawing model decisions.

## UI Verification Policy
Expand Down Expand Up @@ -610,4 +616,5 @@ Current coverage includes scene-level route captures plus ten manifest-driven fu
- Phase 534 is GitHub #191 / `avalonia-node-map-lzy`; it adds transient lasso visual gesture feedback without toolbar UX, lasso screenshot route, eraser behavior, drawing primitives, persistence, renderer changes, screenshot manifest expansion, strict visual-baseline enforcement, retained API removal, or a full React Flow whiteboard parity claim.
- Phase 535 is GitHub #193 / `avalonia-node-map-8l6`; it refreshes the post-Phase-534 parity queue without runtime behavior changes, public API changes, UI redesign, screenshot manifest expansion, strict pixel baseline enforcement, retained API removal, or whiteboard implementation.
- Phase 536 is GitHub #195 / `avalonia-node-map-uvd`; it adds `cookbook-interaction-lasso-screenshot-proof`, `interaction-lasso-screenshot-proof-route`, `shell-cookbook-lasso-screenshot-proof`, `full-window-shell-lasso-state`, and `LASSO_SCREENSHOT_PROOF_BOUNDARY_OK` without toolbar UX, eraser behavior, drawing primitives, persistence, renderer rewrite, strict pixel baseline enforcement, retained API removal, or full whiteboard parity.
- Product code remains out of scope for Phase 478, Phase 484, Phase 490, Phase 491, Phase 492, Phase 493, Phase 494, Phase 495, Phase 497, Phase 498, Phase 499, Phase 500, Phase 501, Phase 502, Phase 503, Phase 504, Phase 505, Phase 506, Phase 507, Phase 508, Phase 509, Phase 510, Phase 511, Phase 512, Phase 513, Phase 520, Phase 521, Phase 522, Phase 523, Phase 524, Phase 525, Phase 526, Phase 527, Phase 528, Phase 529, and Phase 535 unless a focused test proves a specific missing contract.
- Phase 539 is GitHub #201 / `avalonia-node-map-rwr`; it records the rectangle/freehand drawing primitive model gate without runtime behavior changes, public API changes, Avalonia pointer coordinator edits, renderer-layer changes, persistence/schema changes, screenshot manifest expansion, UI redesign, eraser behavior, toolbar work, retained API removal, or full React Flow whiteboard parity.
- Product code remains out of scope for Phase 478, Phase 484, Phase 490, Phase 491, Phase 492, Phase 493, Phase 494, Phase 495, Phase 497, Phase 498, Phase 499, Phase 500, Phase 501, Phase 502, Phase 503, Phase 504, Phase 505, Phase 506, Phase 507, Phase 508, Phase 509, Phase 510, Phase 511, Phase 512, Phase 513, Phase 520, Phase 521, Phase 522, Phase 523, Phase 524, Phase 525, Phase 526, Phase 527, Phase 528, Phase 529, Phase 535, and Phase 539 unless a focused test proves a specific missing contract.
Loading
Loading