Skip to content

Phase 557: whiteboard annotation store contract gate #237

@ExplodingUFO

Description

@ExplodingUFO

Context

Phase 556 / GitHub #230 intentionally deferred saved whiteboard primitive state until AsterGraph has a separate annotation-store contract. The current whiteboard stack now has internal primitive model, renderer-neutral projection, pointer gesture capture, hosted authoring actions, Cookbook route metadata, eraser-on-primitive behavior, and a persistence decision that keeps GraphDocument schema untouched.

This phase defines the next narrow contract gate for a separate whiteboard annotation store before any persisted primitive state, schema migration, or workspace behavior is implemented.

Scope

Create a docs/tests-only annotation-store contract gate that answers what a future implementation must define before saving whiteboard primitives:

  • store ownership and lifetime relative to GraphDocument, workspaces, clipboard fragments, scene export, and screenshot artifacts;
  • minimum annotation identity, primitive reference, style/geometry serialization, edit lifecycle, and migration metadata required by the contract;
  • read/write API boundary candidates without adding a public API or persistence implementation in this slice;
  • compatibility and migration proof requirements before a later issue may persist primitive state;
  • EN/ZH parity docs and focused tests that prevent accidental claims of saved whiteboard state.

Out of scope

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 rewrite, no pointer coordinator edits, no toolbar changes, no eraser changes, no retained API removal, and no full React Flow whiteboard parity claim.

Dependency / stacking

Depends on Phase 556 / PR #236 and must not merge before Phase 556 and the lower whiteboard stack land. May be implemented as a stacked docs/tests branch on top of feature/phase-556-whiteboard-persistence-decision while PR #236 is blocked.

Acceptance Criteria

  • EN/ZH React Flow parity audit docs record Phase 557 with this GitHub issue and the matching Beads issue.
  • The docs define a separate annotation-store contract gate with ownership, lifetime, identity, serialization, migration, workspace, clipboard/export, screenshot, and compatibility requirements.
  • The docs explicitly state that Phase 557 does not implement saved whiteboard primitive state or mutate GraphDocument/workspace/clipboard/export/screenshot behavior.
  • Focused docs tests fail if the annotation-store gate is missing, claims persistence is implemented, or omits the required boundaries.
  • Verification includes focused Phase 557 roadmap-doc tests, full ReactFlowParityRoadmapDocsTests, full AsterGraph.Demo.Tests, 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