Skip to content
Merged
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
33 changes: 19 additions & 14 deletions docs/en/phase-0-reactflow-parity-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,10 @@ Phase 533 is GitHub #189 / `avalonia-node-map-cxe`, the public lasso pointer-mod

Phase 534 is GitHub #191 / `avalonia-node-map-lzy`, the lasso visual gesture feedback route selected after the public lasso pointer-mode activation path. This implementation slice keeps `NodeCanvasSelectionMode.Lasso` on the existing selection route and adds a transient lasso path on the existing `OverlayLayer` while the user drags. `UpdateLassoFeedback(...)`, `ClearLassoFeedback()`, and `LassoSelectionMode_RendersTransientFeedbackPathOnlyDuringDrag` guard that the path appears after the existing drag threshold and clears on release or capture loss without creating persistent whiteboard state. It keeps toolbar UX, lasso screenshot route, eraser behavior, rectangle/freehand drawing, whiteboard primitives, persistence, renderer-layer changes, screenshot manifest expansion, strict visual-baseline enforcement, retained API removal, and full React Flow whiteboard parity as explicit gaps.

## Phase 535 Update

Phase 535 is GitHub #193 / `avalonia-node-map-8l6`, the post-Phase-534 parity queue refresh. This docs/tests-only slice records Phase 534 as closed and turns the remaining whiteboard pressure into tracker-backed follow-up candidates for lasso screenshot proof, lasso toolbar UX/public activation ergonomics, eraser behavior/API feasibility, rectangle/freehand drawing primitives, and whiteboard persistence/render-layer readiness. It authorizes no runtime behavior changes, no public API changes, no UI redesign, no screenshot manifest expansion, no strict pixel baseline enforcement, no retained API removal, and no whiteboard implementation.

## 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 @@ -261,7 +265,7 @@ Phase 483 closes GitHub #82 by choosing the bounded-docs path instead of a rende
| Edge labels and markers | Present | Labels and source/target marker fields are modeled in edge presentation/geometry snapshots. | Keep guarded. |
| Drag, pan, zoom | Present | Canvas pointer/wheel coordinators and viewport commands exist. | Keep guarded. |
| Marquee/box selection and multi-select | Present | `GetSelectionRectangleSnapshot`, `GetSelectionLassoSnapshot`, overlay coordinator marquee selection, internal lasso bridge selection, internal lasso gesture capture, public `NodeCanvasSelectionMode.Lasso`, transient lasso overlay feedback, `SelectAll`, `SelectNone`, and `InvertSelection` have tests and Cookbook routes. Rectangle marquee is UI-backed and remains the default; lasso/freehand has backend/editor query support, an internal Avalonia bridge, internal pointer gesture capture, a public `NodeCanvas.SelectionMode` activation path, and transient visual feedback while dragging. | Keep guarded. |
| Whiteboard / lasso / eraser / rectangle draw | Gap retained / public lasso selection started | React Flow whiteboard docs list Freehand draw, Lasso selection, Eraser, and Rectangle draw as distinct advanced examples. AsterGraph now has rectangle marquee selection, command projection evidence, a guarded backend `GetSelectionLassoSnapshot(...)` query, an internal Avalonia lasso selection bridge, internal lasso gesture capture, public lasso pointer-mode activation, and transient visual feedback for active lasso drags, but no toolbar UX, lasso screenshot route, whiteboard primitives, or drawing tools. | Phase 534 adds transient lasso visual feedback without implementing full whiteboard UI behavior. |
| Whiteboard / lasso / eraser / rectangle draw | Gap retained / public lasso selection started | React Flow whiteboard docs list Freehand draw, Lasso selection, Eraser, and Rectangle draw as distinct advanced examples. AsterGraph now has rectangle marquee selection, command projection evidence, a guarded backend `GetSelectionLassoSnapshot(...)` query, an internal Avalonia lasso selection bridge, internal lasso gesture capture, public lasso pointer-mode activation, and transient visual feedback for active lasso drags, but no toolbar UX, lasso screenshot route, whiteboard primitives, or drawing tools. | Phase 535 refreshes the post-Phase-534 queue and keeps the next candidates tracker-backed before any whiteboard behavior claim expands. |
| Connection preview and validation | Present / guarded | Pending connection, compatible targets, validation snapshots, repair commands, and `validation-prevent-cycle` fixture exist. Cycle prevention is enforced by the canonical connection completion path and exposes `GraphEditorPendingConnectionRejectionReason.WouldCreateCycle` through pending snapshots. | Keep `RuntimeSession_CompleteConnection_RejectsDirectCycleWithStableReason`, `RuntimeSession_CompleteConnection_RejectsIndirectCycleThroughNormalCommandPath`, and `RuntimeSession_TryExecuteCommand_RejectsCycleThroughConnectionsConnectRoute` guarded. |
| Context menu | Present | Menu descriptors and hosted context menu plumbing exist. | Keep guarded. |
| Undo/redo | Present | Session commands and history tests cover normal command semantics. | Keep guarded. |
Expand Down Expand Up @@ -487,15 +491,12 @@ Phase 534 adds the lasso visual gesture feedback route through GitHub #191 / `av

| GitHub | Bead | Title | Priority | Likely write set | Parallelism |
| --- | --- | --- | --- | --- | --- |
| #169 | `avalonia-node-map-bp0` | Phase 523: refresh React Flow parity issue wave after retained readiness audit | P2 | parity roadmap docs and focused docs tests | Current issue. Blocks the next implementation wave because it defines the queue and tracker boundaries. |
| #171 | `avalonia-node-map-0k0` | Phase 524: built-in component parity matrix for MiniMap, Controls, Background, Panel | P2 | feature catalog, public API inventory, Avalonia README, and docs tests | Current docs/test slice. Blocks Phase 525-528 because it defines the built-in row boundaries. |
| #173 | `avalonia-node-map-ba7` | Phase 525: MiniMap interaction and customization parity gate | P2 | `GraphMiniMap`, MiniMap factory/options, minimap tests, and docs | Current docs/test gate. Do not run in parallel with other work touching `GraphMiniMap`. |
| #175 | `avalonia-node-map-clw` | Phase 526: Controls interactivity/custom-button parity gate | P2 | `AsterGraphControls`, hosted action button tests, and docs | Current docs/test gate. Do not run in parallel with other work touching `AsterGraphControls` action projection. |
| #177 | `avalonia-node-map-dim` | Phase 527: Background variant public surface gate | P3 | background/grid control docs/tests and current background support evidence | Current docs/test gate. Can run in parallel with non-overlapping Panel or whiteboard work if it avoids shared shell docs and does not modify MiniMap/Controls. |
| #179 | `avalonia-node-map-9ow` | Phase 528: Panel versus viewport-attached overlay boundary | P3 | `AsterGraphPanel`, host integration docs, and panel tests | Current docs/test gate. Can run in parallel with whiteboard feasibility work if it avoids shared parity roadmap rows. |
| #181 | `avalonia-node-map-jrm` | Phase 529: whiteboard/lasso/eraser feasibility audit | P4 | advanced editing docs/tests and source-backed feasibility boundary | Current docs/test feasibility audit. Larger optional parity track; should not block built-in component parity and adds no whiteboard implementation. |
| #183 | `avalonia-node-map-8um` | Phase 530: lasso/freehand selection query contract | P2 | `AsterGraph.Editor` query API, editor tests, public API inventory/baseline, and parity roadmap docs | Current backend/editor query slice. Adds no Avalonia gestures, whiteboard renderer, drawing persistence, eraser behavior, or screenshot rows. |
| #191 | `avalonia-node-map-lzy` | Phase 534: lasso visual gesture feedback route | P2 | `NodeCanvas` overlay feedback, pointer coordinator tests, headless Avalonia interaction test, and parity roadmap docs | Current Avalonia visual feedback slice. Adds no toolbar UX, screenshot route, eraser behavior, drawing primitives, persistence, renderer rewrite, or full whiteboard parity claim. |
| #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. |
| TBD | TBD | Phase 536: lasso screenshot route and Cookbook proof boundary | P2 | Cookbook screenshot manifest, Demo fixture route, scene/shell screenshot tests, and parity docs | Ready after Phase 535. Sequential with lasso toolbar work because both may touch lasso Cookbook route copy and screenshot documentation. |
| TBD | TBD | 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 | Ready after Phase 535. Do not run in parallel with Phase 536 if both need the same lasso route text or visual proof fixture. |
| TBD | TBD | Phase 538: eraser behavior/API feasibility gate | P3 | editor selection/delete commands, Avalonia hit-testing route, parity docs, and focused feasibility tests | Can run after Phase 535 in parallel with drawing model planning if it avoids shared pointer-mode state edits. |
| 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. |
| 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 @@ -531,9 +532,12 @@ Phase 534 adds the lasso visual gesture feedback route through GitHub #191 / `av
- `docs/phase-526-controls-interactivity-gate`: owns #175 / `avalonia-node-map-clw`; current docs/test worktree for the Controls interactivity/custom-button parity gate.
- `docs/phase-527-background-variant-gate`: owns #177 / `avalonia-node-map-dim`; current docs/test worktree for the Background variant public surface gate.
- `docs/phase-528-panel-overlay-boundary`: owns #179 / `avalonia-node-map-9ow`; current docs/test worktree for the Panel versus viewport-attached overlay boundary.
- `docs/phase-529-whiteboard-feasibility`: owns #181 / `avalonia-node-map-jrm`; current feasibility audit for lasso, eraser, rectangle, and freehand whiteboard-style parity without committing to implementation.
- `feature/phase-530-lasso-selection-query`: owns #183 / `avalonia-node-map-8um`; current backend/editor query slice for lasso/freehand selection without Avalonia gesture, renderer, persistence, eraser, or screenshot changes.
- `feature/phase-534-lasso-visual-feedback`: owns #191 / `avalonia-node-map-lzy`; current Avalonia overlay feedback slice for transient lasso gesture visuals without toolbar, screenshot, eraser, drawing, persistence, renderer rewrite, or full whiteboard parity.
- `docs/phase-535-post-lasso-queue-refresh`: owns #193 / `avalonia-node-map-8l6`; current docs/test queue refresh after transient lasso feedback, with no runtime/API/UI/screenshot-manifest/whiteboard implementation changes.
- `visual/phase-536-lasso-screenshot-proof`: future candidate for the first lasso screenshot route and Cookbook proof boundary after Phase 535.
- `feature/phase-537-lasso-toolbar-ergonomics`: future candidate for lasso toolbar UX and public activation ergonomics after Phase 535.
- `feature/phase-538-eraser-feasibility`: future candidate for eraser behavior/API feasibility after Phase 535.
- `docs/phase-539-drawing-primitive-model-gate`: future candidate for rectangle/freehand drawing primitive model decisions after Phase 535.
- `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 @@ -586,4 +590,5 @@ Current coverage includes scene-level route captures plus ten manifest-driven fu
- Phase 529 is GitHub #181 / `avalonia-node-map-jrm`; it records the whiteboard/lasso/eraser feasibility audit without runtime UI behavior changes, public API changes, renderer changes, screenshot manifest expansion, strict visual-baseline enforcement, retained API removal, or whiteboard implementation.
- Phase 530 is GitHub #183 / `avalonia-node-map-8um`; it adds the backend/editor lasso selection query contract without Avalonia gesture capture, pointer-mode state machine, 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 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.
- 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, and Phase 529 unless a focused test proves a specific missing contract.
- 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.
- 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.
Loading
Loading