Implement CRDT-based state synchronization for slow-changing layers #116

Open
opened 2025-12-17 03:27:45 +00:00 by siennathesane · 0 comments
siennathesane commented 2025-12-17 03:27:45 +00:00 (Migrated from github.com)

Description

Life arcs, schedules, relationships use CRDTs for eventual consistency.

Acceptance Criteria

Scenario: CRDT sync works
  Given 2-4 peers in multiplayer session
  When slow-changing state updates
  Then life arc changes sync via CRDT
  And schedule changes sync via CRDT
  And relationship changes sync via CRDT
  And all peers converge to same state
  And no conflicts or divergence occurs

Technical Notes

  • CRDT types: LWW-Register for life arcs, OR-Set for schedules, G-Counter for relationships
  • Sync frequency: low (every few seconds for slow state)
  • Conflict resolution: CRDT semantics guarantee convergence
  • State compression: delta CRDTs for bandwidth efficiency
  • Tombstones: handle entity deletion across peers
  • Integration with libmarathon CRDT system

Size: L (8 points)
Priority: P0
Phase: 12 - Networking & Sync

## Description Life arcs, schedules, relationships use CRDTs for eventual consistency. ## Acceptance Criteria ```gherkin Scenario: CRDT sync works Given 2-4 peers in multiplayer session When slow-changing state updates Then life arc changes sync via CRDT And schedule changes sync via CRDT And relationship changes sync via CRDT And all peers converge to same state And no conflicts or divergence occurs ``` ## Technical Notes - CRDT types: LWW-Register for life arcs, OR-Set for schedules, G-Counter for relationships - Sync frequency: low (every few seconds for slow state) - Conflict resolution: CRDT semantics guarantee convergence - State compression: delta CRDTs for bandwidth efficiency - Tombstones: handle entity deletion across peers - Integration with libmarathon CRDT system **Size:** L (8 points) **Priority:** P0 **Phase:** 12 - Networking & Sync
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: studio/marathon#116