Context
An infinite canvas should not make terminal components or React layout state the source of truth. The graph must be durable, forward-compatible, and independent from rendering technology.
Goal
Define a CanvasDocument domain model for nodes, edges, groups, layout, viewport, and task bindings.
Scope
- Define stable node/edge/group IDs and document revision.
- Model Terminal, Note, Task, Agent Team, File Tree, and future Portal node kinds.
- Separate node presentation data from referenced domain entities.
- Define typed connection purposes such as message, context, ownership, and visual-only.
- Persist coordinates, dimensions, collapsed state, z-order, groups, and viewport.
- Add optimistic concurrency and schema migrations.
- Preserve unknown node kinds for forward compatibility where safe.
Acceptance criteria
Out of scope
Canvas rendering and real-time multi-user editing.
Context
An infinite canvas should not make terminal components or React layout state the source of truth. The graph must be durable, forward-compatible, and independent from rendering technology.
Goal
Define a CanvasDocument domain model for nodes, edges, groups, layout, viewport, and task bindings.
Scope
Acceptance criteria
Out of scope
Canvas rendering and real-time multi-user editing.