Make cross-device Today session sync conflict-convergent #1030

Closed
opened 2026-08-17 15:51:16 +00:00 by timmy · 0 comments
Owner

Problem

Today-session polling and timer-triggered publishes can overlap. A stale PATCH conflict is currently reported as offline without adopting the authoritative session, so two devices can continue showing the same Today timer as running. Delayed responses can also regress the locally owned revision.

Scope

Serialize Today-session requests per tab, coalesce the latest local timer intent, reconcile revision conflicts with authoritative server state, pause exactly once after remote ownership, and keep explicit Continue here as the only reclaim path. Distinguish retryable connectivity failures from ownership conflicts in status.

Acceptance

  • At most one session request is in flight per tab.
  • A delayed stale publish cannot overwrite or auto-reclaim a session claimed by another device.
  • A 409 converges to authoritative ownership and pauses locally exactly once.
  • Rapid timer changes coalesce to the latest snapshot.
  • Transient failure retains the latest intent and retries it.
  • Focused behavioral tests and the full suite pass.

This is distinct from #1022 (basic cross-device handoff) and #1026 (lock-screen controls): neither serializes requests nor reconciles stale publish conflicts.

## Problem Today-session polling and timer-triggered publishes can overlap. A stale PATCH conflict is currently reported as offline without adopting the authoritative session, so two devices can continue showing the same Today timer as running. Delayed responses can also regress the locally owned revision. ## Scope Serialize Today-session requests per tab, coalesce the latest local timer intent, reconcile revision conflicts with authoritative server state, pause exactly once after remote ownership, and keep explicit Continue here as the only reclaim path. Distinguish retryable connectivity failures from ownership conflicts in status. ## Acceptance - At most one session request is in flight per tab. - A delayed stale publish cannot overwrite or auto-reclaim a session claimed by another device. - A 409 converges to authoritative ownership and pauses locally exactly once. - Rapid timer changes coalesce to the latest snapshot. - Transient failure retains the latest intent and retries it. - Focused behavioral tests and the full suite pass. This is distinct from #1022 (basic cross-device handoff) and #1026 (lock-screen controls): neither serializes requests nor reconciles stale publish conflicts.
timmy self-assigned this 2026-08-17 15:51:16 +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#1030
No description provided.