Queue multiple offline Today-to-Week moves without losing intent #1233

Closed
opened 2026-08-21 18:54:43 +00:00 by timmy · 0 comments
Owner

Evidence

frontend/today-week-reschedule.js persists one account-scoped record with setItem. A second offline reschedule replaces the first record, while both optimistic moves remain visible; after reload, the first operation can no longer be delivered. Existing stable operation IDs and idempotent server receipts make bounded FIFO delivery possible. Full historical issue/PR and recent commit review found no multiple-move queue behavior; #1231/#1232 only preserve one operation.

User flow

Allow a mobile operator to reschedule multiple Today items during an outage. Persist each move before optimistic adoption, restore all admitted moves after reload, and deliver them oldest-first with one request in flight. Rebase each later request on the confirmed revisions returned for its predecessor.

Acceptance

  • Two offline moves survive reload and appear exactly once in Week Ahead.
  • Reconnect sends stable operation IDs oldest-first, never concurrently.
  • Each success removes only the queue head and rebases the next request revisions.
  • Persistence failure for a later move keeps earlier queued intent intact and does not apply the failed move.
  • Revision conflict adopts server truth without silently dropping queued intent.
  • Legacy single-record storage migrates losslessly.
  • Focused controller tests and full suite pass; packaged mobile flow remains touch-safe.
## Evidence `frontend/today-week-reschedule.js` persists one account-scoped record with `setItem`. A second offline reschedule replaces the first record, while both optimistic moves remain visible; after reload, the first operation can no longer be delivered. Existing stable operation IDs and idempotent server receipts make bounded FIFO delivery possible. Full historical issue/PR and recent commit review found no multiple-move queue behavior; #1231/#1232 only preserve one operation. ## User flow Allow a mobile operator to reschedule multiple Today items during an outage. Persist each move before optimistic adoption, restore all admitted moves after reload, and deliver them oldest-first with one request in flight. Rebase each later request on the confirmed revisions returned for its predecessor. ## Acceptance - Two offline moves survive reload and appear exactly once in Week Ahead. - Reconnect sends stable operation IDs oldest-first, never concurrently. - Each success removes only the queue head and rebases the next request revisions. - Persistence failure for a later move keeps earlier queued intent intact and does not apply the failed move. - Revision conflict adopts server truth without silently dropping queued intent. - Legacy single-record storage migrates losslessly. - Focused controller tests and full suite pass; packaged mobile flow remains touch-safe.
timmy self-assigned this 2026-08-21 18:57:51 +00:00
timmy closed this issue 2026-08-21 19:12:02 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#1233
No description provided.