Skip to content

Phase 547: whiteboard primitive model skeleton #217

@ExplodingUFO

Description

@ExplodingUFO

Context

Phase 546 / PR #216 converted the post-Phase-545 whiteboard pressure into tracker-backed follow-up candidates. The first candidate is Phase 547: a whiteboard primitive model skeleton, but the full Phase 537-546 stack is still review-blocked and must merge in order before any public parity claim expands.

AsterGraph currently has guarded selection/lasso evidence and docs-only whiteboard gates. It does not yet have first-class whiteboard primitive model types for rectangle/freehand annotations, and it must not conflate those primitives with graph nodes, connections, groups, selection rectangles, or lasso feedback paths.

Scope

Add the first narrow internal whiteboard primitive model skeleton after the Phase 542-546 gate stack:

  • introduce or document the minimum internal Core/Editor model shape for whiteboard primitives, including identity, primitive kind, geometry, style/brush state, z-order, and edit lifecycle metadata;
  • keep the model renderer-neutral and persistence-neutral;
  • add focused Core/Editor model tests proving primitive identity, geometry/style value behavior, and separation from graph node/connection/group state;
  • update EN/ZH parity roadmap docs with GitHub issue and Beads identifiers;
  • keep follow-up Phase 548 renderer adapter, Phase 549 persistence decision, and Phase 550 Cookbook screenshot implementation as separate tracker-backed work.

Out of scope

No public API claim expansion, no renderer adapter implementation, 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 546 / PR #216 and therefore on the earlier Phase 537-545 stack. This may be implemented as a stacked branch based on docs/phase-546-post-whiteboard-queue, but it must not merge before PR #216 and the earlier stack land.

Acceptance criteria

  • Core/Editor tests prove the internal whiteboard primitive model skeleton covers identity, kind, geometry, style/brush state, z-order, and edit lifecycle metadata.
  • Tests or docs prove whiteboard primitives remain separate from graph nodes, connections, groups, selection rectangles, lasso feedback, eraser behavior, renderer projection, and persistence/schema state.
  • EN/ZH parity roadmap docs replace the Phase 547 TBD row with this GitHub issue and the matching Beads ID.
  • Next Issue Wave keeps Phases 548-550 as future tracker-backed follow-ups with their existing write-set boundaries.
  • No src/AsterGraph.Avalonia, screenshot manifest, Cookbook visual route, renderer adapter, persistence/schema, or public API baseline changes are included unless a focused failing test proves the exact missing model contract and the PR body calls it out.
  • Verification includes the focused new model 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