Context
Phase 547 / PR #218 adds the first internal renderer-neutral whiteboard primitive model skeleton on top of Phase 546. The next tracker-backed slice in the parity roadmap is Phase 548: a whiteboard primitive renderer adapter skeleton. This must stay stacked after Phase 547 and must not widen public parity claims.
AsterGraph has graph-scene projection and connection rendering evidence through GraphEditorSceneSnapshot, NodeCanvasSceneHost, and NodeCanvasConnectionSceneRenderer, but whiteboard primitives still need a bounded adapter/projection proof before any runtime drawing behavior, persistence, screenshot route, or public drawing API can be claimed.
Scope
Add the first narrow whiteboard primitive renderer adapter skeleton after Phase 547:
- define the minimum internal renderer adapter/projection shape that consumes the Phase 547 primitive model without making it public API;
- prove rectangle/freehand primitive projection into renderer-neutral scene data with focused tests;
- prove bounded hit-testing/edit-lifecycle evidence for primitives without changing pointer coordinators;
- keep the adapter separate from
NodeCanvasConnectionSceneRenderer and existing graph node/connection rendering paths;
- update EN/ZH parity roadmap docs with this GitHub issue and Beads identifiers;
- keep Phase 549 persistence decision and Phase 550 Cookbook screenshot implementation as separate tracker-backed follow-ups.
Out of scope
No renderer rewrite, no public drawing API claim, no persistence/schema change, no schema version bump, no Avalonia pointer coordinator edits, no toolbar/tool activation, no eraser behavior, no screenshot manifest expansion, no Cookbook visual proof implementation, no UI redesign, no retained API removal, and no full React Flow whiteboard parity claim.
Dependency / stacking
Depends on Phase 547 / PR #218 and therefore on the earlier Phase 537-546 stack. This may be implemented as a stacked branch based on feature/phase-547-whiteboard-primitive-model-skeleton, but it must not merge before PR #218 and the earlier stack land.
Acceptance Criteria
- Focused tests prove the internal renderer adapter/projection skeleton maps rectangle and freehand whiteboard primitives into renderer-neutral scene data.
- Focused tests prove primitive hit-testing/edit-lifecycle evidence without touching Avalonia pointer coordinators.
- Tests or docs prove the adapter remains separate from graph nodes, connections, groups,
NodeCanvasConnectionSceneRenderer, persistence/schema state, screenshot manifests, toolbar activation, and eraser behavior.
- EN/ZH parity roadmap docs replace the Phase 548 TBD row with this GitHub issue and the matching Beads ID while keeping Phases 549-550 as future tracker-backed follow-ups.
- No
GraphDocument schema, public API baseline, screenshot manifest, Cookbook visual route, pointer coordinator, toolbar, or eraser changes are included unless a focused failing test proves the exact missing renderer-adapter contract and the PR body calls it out.
- Verification includes focused new renderer adapter tests, focused
ReactFlowParityRoadmapDocsTests coverage, full AsterGraph.Demo.Tests, Release build, and git diff --check.
Context
Phase 547 / PR #218 adds the first internal renderer-neutral whiteboard primitive model skeleton on top of Phase 546. The next tracker-backed slice in the parity roadmap is Phase 548: a whiteboard primitive renderer adapter skeleton. This must stay stacked after Phase 547 and must not widen public parity claims.
AsterGraph has graph-scene projection and connection rendering evidence through
GraphEditorSceneSnapshot,NodeCanvasSceneHost, andNodeCanvasConnectionSceneRenderer, but whiteboard primitives still need a bounded adapter/projection proof before any runtime drawing behavior, persistence, screenshot route, or public drawing API can be claimed.Scope
Add the first narrow whiteboard primitive renderer adapter skeleton after Phase 547:
NodeCanvasConnectionSceneRendererand existing graph node/connection rendering paths;Out of scope
No renderer rewrite, no public drawing API claim, no persistence/schema change, no schema version bump, no Avalonia pointer coordinator edits, no toolbar/tool activation, no eraser behavior, no screenshot manifest expansion, no Cookbook visual proof implementation, no UI redesign, no retained API removal, and no full React Flow whiteboard parity claim.
Dependency / stacking
Depends on Phase 547 / PR #218 and therefore on the earlier Phase 537-546 stack. This may be implemented as a stacked branch based on
feature/phase-547-whiteboard-primitive-model-skeleton, but it must not merge before PR #218 and the earlier stack land.Acceptance Criteria
NodeCanvasConnectionSceneRenderer, persistence/schema state, screenshot manifests, toolbar activation, and eraser behavior.GraphDocumentschema, public API baseline, screenshot manifest, Cookbook visual route, pointer coordinator, toolbar, or eraser changes are included unless a focused failing test proves the exact missing renderer-adapter contract and the PR body calls it out.ReactFlowParityRoadmapDocsTestscoverage, fullAsterGraph.Demo.Tests, Release build, andgit diff --check.