device-handoff zero-budget semantic-index
Multi-device and workspace handoff
Prove the cross-device guarantees: edits made on device A reach device B over realtime, Y.Text merges char-by-char (not last-write-wins), the IndexedDB replay survives a kill on either device, leader election keeps exactly one tab as the workqueue claimer, lazy WebSocket opens only when needed (no idle ping storms), offline drains preserve op order, presence fans out across devices, kanban drag converges, PDF render works on both device classes, and a brand-new collaborator joining via shared link sees the full workspace state. The read-only link variant proves the planned /view/ read-only surface gates writes.
Behaviours 0 Tests 15 Graph 49 nodes · 77 edges Runner - CircleCI browser_device_handoff Source qa/suites/device-handoff.yaml
Test witnesses
These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.
| Test | Status | Implementation | Open |
|---|---|---|---|
[family collaborator] edits on one device appear on the other device @cv/ui · playwright · stories/device/multi-device.edit-converges-across-devices.spec.ts | catalog | cv ui dashboard graph-proven · graph-checks-edge cv ui realtime client graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge dashboard sse pathway graph-proven · graph-checks-edge realtime connection impl graph-proven · graph-checks-edge workspace client sdk graph-proven · graph-checks-edge | Test |
[family collaborator] an edit survives a tab kill and reappears on reopen @cv/ui · playwright · stories/device/multi-device.idb-replay-survives-kill.spec.ts | catalog | cv op catalog applier graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge op catalog dedup graph-proven · graph-checks-edge workspace client sdk graph-proven · graph-checks-edge y indexeddb persistence graph-proven · graph-checks-edge | Test |
[family collaborator] the app opens a live connection only when collaboration starts @cv/ui · playwright · stories/device/multi-device.lazy-ws-only-when-needed.spec.ts | catalog | cv ui realtime client graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge realtime connection impl graph-proven · graph-checks-edge ws required surfaces graph-proven · graph-checks-edge | Test |
[family collaborator] one tab takes over when the primary tab dies @cv/ui · playwright · stories/device/multi-device.leader-election-handoff.spec.ts | catalog | cv ui realtime client graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge realtime connection impl graph-proven · graph-checks-edge tab coordinator graph-proven · graph-checks-edge | Test |
[family collaborator] offline edits drain in order when the network returns @cv/ui · playwright · stories/device/multi-device.offline-drain-preserves-order.spec.ts | catalog | cv op catalog applier graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge op catalog dedup graph-proven · graph-checks-edge pending op idb queue graph-proven · graph-checks-edge workspace client sdk graph-proven · graph-checks-edge | Test |
[family collaborator] two devices editing the same bullet both keep their changes @cv/ui · playwright · stories/device/multi-device.ytext-merges-across-devices.spec.ts | catalog | cv document model helpers graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge workspace client sdk graph-proven · graph-checks-edge ytext bullet merge graph-proven · graph-checks-edge | Test |
[family collaborator] see consistent presence semantics across two browser contexts of the same workspace @cv/ui · playwright · stories/device/p6-g10-s1-multi-device-presence.spec.ts | catalog | awareness presence projection graph-proven · graph-checks-edge cv server workspace storage graph-proven · graph-checks-edge cv ui realtime client graph-proven · graph-checks-edge realtime connection impl graph-proven · graph-checks-edge | Test |
phone DOM shows the new status within 2 s of the laptop move @cv/ui · playwright · stories/device/p6-g5-s1-multi-device-kanban-drag.spec.ts | catalog | cv ui dashboard graph-proven · graph-checks-edge cv ui kanban graph-proven · graph-checks-edge dashboard sse pathway graph-proven · graph-checks-edge kanban status injector graph-proven · graph-checks-edge | Test |
exactly one tab wins the claim for a queued process_request @cv/ui · playwright · stories/device/p6-g6-s2-leader-election-prevents-double-claim.spec.ts | catalog | cv server process requests graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge process request claim broker graph-proven · graph-checks-edge tab coordinator graph-proven · graph-checks-edge | Test |
[family collaborator] render the same Typst source to matching layouts across two browser contexts @cv/ui · playwright · stories/device/p6-g7-s1-pdf-render-cross-device.spec.ts | catalog | cv typst rendering graph-proven · graph-checks-edge node to typst serializer graph-proven · graph-checks-edge typst worker bridge graph-proven · graph-checks-edge | Test |
[family collaborator] a new collaborator's edit reaches the original owner live @cv/ui · playwright · stories/device/workspace-handoff.bob-edit-reaches-alice.spec.ts | catalog | cv ui dashboard graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge dashboard sse pathway graph-proven · graph-checks-edge workspace client sdk graph-proven · graph-checks-edge | Test |
[family collaborator] leaving and rejoining the workspace preserves my identity @cv/ui · playwright · stories/device/workspace-handoff.bob-rejoins-without-duplicate-identity.spec.ts | catalog | cv ui realtime client graph-proven · graph-checks-edge cv workspace client sdk graph-proven · graph-checks-edge realtime connection impl graph-proven · graph-checks-edge workspace device identity graph-proven · graph-checks-edge | Test |
[family collaborator] open a shared workspace cold and see the full state @cv/ui · playwright · stories/device/workspace-handoff.cold-join-sees-state.spec.ts | catalog | cv ui app shell graph-proven · graph-checks-edge cv ui dashboard graph-proven · graph-checks-edge dashboard cold load graph-proven · graph-checks-edge link is identity access graph-proven · graph-checks-edge | Test |
[family collaborator] a new collaborator sees the quarry exactly as the owner built it @cv/ui · playwright · stories/device/workspace-handoff.quarry-visible-to-new-collaborator.spec.ts | catalog | cv document model helpers graph-proven · graph-checks-edge cv ui cvl editor graph-proven · graph-checks-edge cvl editor cold load graph-proven · graph-checks-edge node tree quarry graph-proven · graph-checks-edge | Test |
[read-only viewer] a read-only link lets viewers see but not edit @cv/ui · playwright · stories/device/workspace-handoff.readonly-link-blocks-writes.spec.ts | catalog | cv api workspace router graph-proven · graph-checks-edge live mirror workspace graph-proven · graph-checks-edge read only view route graph-proven · graph-checks-edge | Test |