Sync
A tap can't wait for the network
Logging water had to work on the metro with no signal, so every entry is written locally first and pushed later. The naive version of that loses data: a tap that lands while a sync is in flight isn't in the response coming back, so overwriting local state with the server's view silently throws it away.
The fix was a push, then pull, then merge cycle where anything still unsynced is carried forward rather than replaced.