Skip to content
Open
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
5 changes: 5 additions & 0 deletions docs/en/phase-0-reactflow-parity-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,8 @@ Phase 556 records the whiteboard primitive persistence deferred decision through

Phase 557 records the whiteboard annotation store contract gate through GitHub #237 / `avalonia-node-map-zfe`. It defines `WHITEBOARD_ANNOTATION_STORE_CONTRACT_GATE` as the next separate annotation-store contract before saved whiteboard primitives may exist: future work must define store ownership, store lifetime, annotation identity, primitive reference rules, style/geometry serialization, edit lifecycle serialization, migration metadata, read/write API boundary candidates, and compatibility proof across `GraphDocumentCompatibility`, `WorkspacePersistence`, `ClipboardFragment`, `SceneExportArtifact`, and `ScreenshotArtifact`. This gate keeps no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no saved whiteboard primitive state, and no full React Flow whiteboard parity.

Phase 558 records the whiteboard annotation store contract skeleton through GitHub #239 / `avalonia-node-map-84u`. It adds `WHITEBOARD_ANNOTATION_STORE_CONTRACT_SKELETON` as internal Core contract coverage only: `GraphWhiteboardAnnotationStoreContract`, `GraphWhiteboardAnnotationStoreMetadata`, `GraphWhiteboardAnnotationIdentity`, `GraphWhiteboardPrimitiveReference`, `GraphWhiteboardAnnotationPrimitivePayload`, `GraphWhiteboardAnnotationRecord`, `GraphWhiteboardAnnotationStoreSnapshot`, `GraphWhiteboardAnnotationMigrationMetadata`, and `IGraphWhiteboardAnnotationStoreBoundary` define store ownership, workspace-scoped lifetime, annotation identity, primitive reference, style/geometry/edit lifecycle payload shape, migration/schema metadata, and a persistence-neutral read/write boundary. This skeleton keeps no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no renderer or pointer behavior change, no public API exposure, no saved whiteboard primitive state, and no full React Flow whiteboard parity.

| 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. |
Expand All @@ -642,6 +644,7 @@ Phase 557 records the whiteboard annotation store contract gate through GitHub #
| #229 | `avalonia-node-map-71c` | Phase 555: whiteboard primitive eraser behavior route | P3 | eraser-on-primitive behavior tests, primitive hit-testing, and graph-deletion separation | Depends on Phase 554. Owns eraser-on-primitive behavior only; graph-selection delete remains separate and no broad eraser cursor redesign, GraphDocument schema changes, renderer rewrite, retained API removal, or full whiteboard parity claim is authorized. |
| #230 | `avalonia-node-map-bck` | Phase 556: whiteboard primitive persistence implementation decision | P4 | persistence implementation decision, schema/version evidence, workspace and clipboard boundaries | Depends on Phase 555; stacked after PR #235 and do not merge before Phase 555. Records `DeferredUntilSeparateAnnotationStoreContract` with boundary coverage only; no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no saved whiteboard primitive state, or full whiteboard parity claim. |
| #237 | `avalonia-node-map-zfe` | Phase 557: whiteboard annotation store contract gate | P4 | annotation-store contract docs, persistence boundary requirements, and focused docs tests | Depends on Phase 556; stacked after PR #236 and do not merge before Phase 556. Defines the separate annotation-store contract gate only; no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no saved whiteboard primitive state, or full whiteboard parity claim. |
| #239 | `avalonia-node-map-84u` | Phase 558: whiteboard annotation store contract skeleton | P4 | internal Core annotation-store contract types, boundary tests, and parity docs | Depends on Phase 557; stacked after PR #238 and do not merge before Phase 557. Adds the internal contract skeleton only; no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no renderer or pointer behavior change, no public API exposure, no saved whiteboard primitive state, or full whiteboard parity claim. |

## Recommended Parallel Worktree Plan

Expand Down Expand Up @@ -700,6 +703,7 @@ Phase 557 records the whiteboard annotation store contract gate through GitHub #
- `feature/phase-555-whiteboard-eraser-behavior`: owns #229 / `avalonia-node-map-71c`; current stacked implementation worktree for eraser-on-primitive behavior after Phase 554, with graph `selection.delete`, persistence/schema, renderer rewrite, and full whiteboard parity out of scope.
- `feature/phase-556-whiteboard-persistence-decision`: owns #230 / `avalonia-node-map-bck`; current stacked implementation/deferred-decision worktree after Phase 555, with no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no saved whiteboard primitive state, and no full React Flow whiteboard parity.
- `docs/phase-557-whiteboard-annotation-store-contract`: owns #237 / `avalonia-node-map-zfe`; current stacked docs/test contract gate after Phase 556, with no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, and no saved whiteboard primitive state.
- `feature/phase-558-whiteboard-annotation-store-contract-skeleton`: owns #239 / `avalonia-node-map-84u`; current stacked internal Core contract skeleton after Phase 557, with no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no renderer or pointer behavior change, no public API exposure, and no saved whiteboard primitive state.

## UI Verification Policy

Expand Down Expand Up @@ -773,4 +777,5 @@ Current coverage includes scene-level route captures plus ten manifest-driven fu
- Phase 555 is GitHub #229 / `avalonia-node-map-71c`; it records the whiteboard primitive eraser behavior route through `NodeCanvasWhiteboardDrawingMode.Eraser`, `whiteboard-drawing.eraser`, `PART_WhiteboardEraserButton`, `TryEraseWhiteboardPrimitive_RemovesTopmostHitPrimitiveWithoutClearingOthers`, and `HandlePressed_WithWhiteboardEraserMode_RemovesHitPrimitiveWithoutDeletingGraphSelection`. Graph-selection delete remains separate through graph `selection.delete`; broad eraser cursor redesign, persisted whiteboard primitive state, GraphDocument schema changes, renderer rewrites, retained API removal, and full React Flow whiteboard parity remain out of scope.
- Phase 556 is GitHub #230 / `avalonia-node-map-bck`; it records the whiteboard primitive persistence implementation decision through `GraphWhiteboardPrimitivePersistenceOutcome.DeferredUntilSeparateAnnotationStoreContract` and `GraphWhiteboardPrimitivePersistenceBoundary` coverage for `GraphDocumentCompatibility`, `WorkspacePersistence`, `ClipboardFragment`, `ScreenshotArtifact`, and `SceneExportArtifact`. It keeps no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no saved whiteboard primitive state, and no full React Flow whiteboard parity.
- Phase 557 is GitHub #237 / `avalonia-node-map-zfe`; it records the whiteboard annotation store contract gate and `WHITEBOARD_ANNOTATION_STORE_CONTRACT_GATE` with store ownership, store lifetime, annotation identity, primitive reference, style/geometry serialization, edit lifecycle serialization, migration metadata, read/write API boundary candidates, and compatibility requirements across GraphDocument, workspace, clipboard/export, scene export, and screenshot artifacts. It keeps no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no saved whiteboard primitive state, and no full React Flow whiteboard parity.
- Phase 558 is GitHub #239 / `avalonia-node-map-84u`; it records `WHITEBOARD_ANNOTATION_STORE_CONTRACT_SKELETON` with internal Core annotation-store contract types, annotation identity/reference records, primitive payload shape, migration metadata, and a persistence-neutral `IGraphWhiteboardAnnotationStoreBoundary`. It keeps no production annotation store, no GraphDocument schema change, no schema version bump, no workspace persistence behavior change, no clipboard/export serialization change, no screenshot manifest expansion, no renderer or pointer behavior change, no public API exposure, no saved whiteboard primitive state, and no 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, Phase 539, Phase 540, Phase 541, Phase 546, Phase 550, Phase 551, and Phase 557 unless a focused test proves a specific missing contract.
5 changes: 5 additions & 0 deletions docs/zh-CN/phase-0-reactflow-parity-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,8 @@ Phase 556 记录 whiteboard primitive persistence deferred decision,通过 Git

Phase 557 记录 whiteboard annotation store contract gate,通过 GitHub #237 / `avalonia-node-map-zfe`。它把 `WHITEBOARD_ANNOTATION_STORE_CONTRACT_GATE` 定义为 saved whiteboard primitives 之前必须先具备的 separate annotation-store contract:后续实现必须明确 store ownership、store lifetime、annotation identity、primitive reference 规则、style/geometry serialization、edit lifecycle serialization、migration metadata、read/write API boundary candidates,以及覆盖 `GraphDocumentCompatibility`、`WorkspacePersistence`、`ClipboardFragment`、`SceneExportArtifact` 和 `ScreenshotArtifact` 的 compatibility proof。本 gate 保持 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no saved whiteboard primitive state 和 no full React Flow whiteboard parity。

Phase 558 记录 whiteboard annotation store contract skeleton,通过 GitHub #239 / `avalonia-node-map-84u`。它只添加 internal Core contract coverage:`GraphWhiteboardAnnotationStoreContract`、`GraphWhiteboardAnnotationStoreMetadata`、`GraphWhiteboardAnnotationIdentity`、`GraphWhiteboardPrimitiveReference`、`GraphWhiteboardAnnotationPrimitivePayload`、`GraphWhiteboardAnnotationRecord`、`GraphWhiteboardAnnotationStoreSnapshot`、`GraphWhiteboardAnnotationMigrationMetadata` 和 `IGraphWhiteboardAnnotationStoreBoundary` 定义 store ownership、workspace-scoped lifetime、annotation identity、primitive reference、style/geometry/edit lifecycle payload shape、migration/schema metadata,以及 persistence-neutral read/write boundary。本 skeleton 保持 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no renderer or pointer behavior change、no public API exposure、no saved whiteboard primitive state 和 no full React Flow whiteboard parity。

| GitHub | Bead | 标题 | 优先级 | 可能 write set | 并行边界 |
| --- | --- | --- | --- | --- | --- |
| #193 | `avalonia-node-map-8l6` | Phase 535: refresh post-lasso visual feedback parity queue | P2 | parity roadmap docs 和 focused docs tests | Current docs/test queue refresh。它用 tracker-backed follow-ups 替换 stale Phase 534 current row,因此会阻塞下一批 implementation wave。 |
Expand All @@ -642,6 +644,7 @@ Phase 557 记录 whiteboard annotation store contract gate,通过 GitHub #237
| #229 | `avalonia-node-map-71c` | Phase 555: whiteboard primitive eraser behavior route | P3 | eraser-on-primitive behavior tests、primitive hit-testing 和 graph-deletion separation | Depends on Phase 554。只负责 eraser-on-primitive behavior;graph-selection delete 保持分离,不授权 broad eraser cursor redesign、GraphDocument schema changes、renderer rewrite、retained API removal 或 full whiteboard parity claim。 |
| #230 | `avalonia-node-map-bck` | Phase 556: whiteboard primitive persistence implementation decision | P4 | persistence implementation decision、schema/version evidence、workspace and clipboard boundaries | Depends on Phase 555;stacked after PR #235,并且 do not merge before Phase 555。只记录 `DeferredUntilSeparateAnnotationStoreContract` 和 boundary coverage;不做 no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no saved whiteboard primitive state 或 full whiteboard parity claim。 |
| #237 | `avalonia-node-map-zfe` | Phase 557: whiteboard annotation store contract gate | P4 | annotation-store contract docs、persistence boundary requirements 和 focused docs tests | Depends on Phase 556;stacked after PR #236,并且 do not merge before Phase 556。只定义 separate annotation-store contract gate;不做 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no saved whiteboard primitive state 或 full whiteboard parity claim。 |
| #239 | `avalonia-node-map-84u` | Phase 558: whiteboard annotation store contract skeleton | P4 | internal Core annotation-store contract types、boundary tests 和 parity docs | Depends on Phase 557;stacked after PR #238,并且 do not merge before Phase 557。只添加 internal contract skeleton only;不做 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no renderer or pointer behavior change、no public API exposure、no saved whiteboard primitive state 或 full whiteboard parity claim。 |

## 推荐并行 Worktree 计划

Expand Down Expand Up @@ -700,6 +703,7 @@ Phase 557 记录 whiteboard annotation store contract gate,通过 GitHub #237
- `feature/phase-555-whiteboard-eraser-behavior`:负责 #229 / `avalonia-node-map-71c`;Phase 554 之后的 current stacked implementation worktree,用于 eraser-on-primitive behavior,graph `selection.delete`、persistence/schema、renderer rewrite 和 full whiteboard parity 都保持 out of scope。
- `feature/phase-556-whiteboard-persistence-decision`:负责 #230 / `avalonia-node-map-bck`;Phase 555 之后的 current stacked implementation/deferred-decision worktree,保持 no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no saved whiteboard primitive state 和 no full React Flow whiteboard parity。
- `docs/phase-557-whiteboard-annotation-store-contract`:负责 #237 / `avalonia-node-map-zfe`;Phase 556 之后的 current stacked docs/test contract gate,保持 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion 和 no saved whiteboard primitive state。
- `feature/phase-558-whiteboard-annotation-store-contract-skeleton`:负责 #239 / `avalonia-node-map-84u`;Phase 557 之后的 current stacked internal Core contract skeleton,保持 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no renderer or pointer behavior change、no public API exposure 和 no saved whiteboard primitive state。

## UI 验证策略

Expand Down Expand Up @@ -773,4 +777,5 @@ Phase 557 记录 whiteboard annotation store contract gate,通过 GitHub #237
- Phase 555 是 GitHub #229 / `avalonia-node-map-71c`;它通过 `NodeCanvasWhiteboardDrawingMode.Eraser`、`whiteboard-drawing.eraser`、`PART_WhiteboardEraserButton`、`TryEraseWhiteboardPrimitive_RemovesTopmostHitPrimitiveWithoutClearingOthers` 和 `HandlePressed_WithWhiteboardEraserMode_RemovesHitPrimitiveWithoutDeletingGraphSelection` 记录 whiteboard primitive eraser behavior route。Graph-selection delete 仍通过 graph `selection.delete` 分离;broad eraser cursor redesign、persisted whiteboard primitive state、GraphDocument schema changes、renderer rewrites、retained API removal 和 full React Flow whiteboard parity 都保持 out of scope。
- Phase 556 是 GitHub #230 / `avalonia-node-map-bck`;它通过 `GraphWhiteboardPrimitivePersistenceOutcome.DeferredUntilSeparateAnnotationStoreContract` 和 `GraphWhiteboardPrimitivePersistenceBoundary` 覆盖 `GraphDocumentCompatibility`、`WorkspacePersistence`、`ClipboardFragment`、`ScreenshotArtifact` 与 `SceneExportArtifact`,记录 whiteboard primitive persistence implementation decision。它保持 no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no saved whiteboard primitive state 和 no full React Flow whiteboard parity。
- Phase 557 是 GitHub #237 / `avalonia-node-map-zfe`;它记录 whiteboard annotation store contract gate 和 `WHITEBOARD_ANNOTATION_STORE_CONTRACT_GATE`,要求明确 store ownership、store lifetime、annotation identity、primitive reference、style/geometry serialization、edit lifecycle serialization、migration metadata、read/write API boundary candidates,以及 GraphDocument、workspace、clipboard/export、scene export 和 screenshot artifacts compatibility requirements。它保持 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no saved whiteboard primitive state 和 no full React Flow whiteboard parity。
- Phase 558 是 GitHub #239 / `avalonia-node-map-84u`;它用 internal Core annotation-store contract types、annotation identity/reference records、primitive payload shape、migration metadata 和 persistence-neutral `IGraphWhiteboardAnnotationStoreBoundary` 记录 `WHITEBOARD_ANNOTATION_STORE_CONTRACT_SKELETON`。它保持 no production annotation store、no GraphDocument schema change、no schema version bump、no workspace persistence behavior change、no clipboard/export serialization change、no screenshot manifest expansion、no renderer or pointer behavior change、no public API exposure、no saved whiteboard primitive state 和 no full React Flow whiteboard parity。
- 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、Phase 539、Phase 540、Phase 541、Phase 546、Phase 550、Phase 551 和 Phase 557 都不修改产品代码;除非 focused test 证明存在具体 missing contract。
Loading
Loading