Retry safety
Repeated content requests and progress pushes converge instead of duplicating learner actions.
A backend for AI-4AI’s learning app that separates published-content delivery from learner-state reconciliation so both remain correct offline.
Learners need lessons and assessments when no network is available, and their progress must survive app restarts and later retries. Meanwhile, administrators can publish, update, or delete content while a device is offline.
One generic “sync” cursor cannot safely represent both concerns. Published content changes by version; learner state changes by server update time and carries different conflict rules.
The client follows two explicit protocols. Content synchronization distributes immutable published snapshots and deltas. Progress synchronization replays durable client events before pulling authoritative state.
Content cursor: a published content version. It never represents learner progress.
Learner cursor: the server’s update position for user-owned progress. It never represents content publication.
Repeated content requests and progress pushes converge instead of duplicating learner actions.
Delta manifests send only changed records and explicit deletions when the client has a known version.
A device switches content versions only after required records and assets verify successfully.
The server owns published content and authoritative progress; the device owns its durable unsent outbox.