Local-first writes
A change shows up immediately as an optimistic layer, while the cache holds only what the server said. Writes are saved before they send and replay in order. Client-minted IDs and idempotency keys make a re-send safe, and a refused change is kept for the person to retry or discard. Live updates reach the household over WebSocket subscriptions.