Skip to content

Phase 548: whiteboard primitive renderer adapter skeleton #219

@ExplodingUFO

Description

@ExplodingUFO

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions