Skip to content

Implement fat-server single round-trip sync #16

Description

@miratcan

Context

Current sync requires multi-step choreography from the client (changes → entries → apply). This forces every client to be "smart."

Goal

Single sync method on the server:

Client → Server: { method: "sync", body: { token: 5, entries: [...local_changes...] } }
Server → Client: { entries: [...remote_changes...], new_token: 12 }

Client sends its token + local changes, server returns remote changes + new token. All conflict resolution happens server-side.

Why

  • Dumb clients: curl, Shortcuts, React Native can sync with one call
  • ZEN-AGNOSTIC: protocol is simple enough that any language can implement a client
  • Prerequisite for peer-to-peer sync (every node runs a server)

Acceptance criteria

  • New sync method on SyncServer
  • Client sends token + entries, gets back entries + new_token
  • Conflict resolution server-side
  • Existing tests pass
  • E2E test for single round-trip sync

Part of milestone: Portable Core

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions