Keep Today plans convergent across tabs and devices #361

Closed
opened 2026-08-09 01:53:43 +00:00 by rockachopa · 0 comments
Member

Problem

Today sync responses are adopted without comparing their server revision, and visible/reconnected tabs do not explicitly refresh Today. A delayed older response can overwrite a newer plan, leaving the operator looking at stale order or retired work even though the UI says the plan is saved.

Evidence

  • src/today_store.py emits monotonic revisions.
  • frontend/today-sync.js ignores them and unconditionally applies every completed response.
  • frontend/dashboard.js rerenders local Today state on visibility without fetching current server truth.
  • No historical issue or recent commit covers out-of-order response rejection or lifecycle convergence; #357 introduced baseline cross-device sync and #359 retirement.

Acceptance

  • A response older than the highest adopted revision cannot replace the visible Today plan.
  • Same-browser tabs exchange newer server snapshots and converge without an unrelated My Work refresh.
  • Returning online or foregrounding the dashboard explicitly refreshes Today while preserving queued offline operations.
  • Existing Today replay, capacity, migration, and retirement behavior remains green.
  • Focused behavioral tests and full suite pass.
## Problem Today sync responses are adopted without comparing their server revision, and visible/reconnected tabs do not explicitly refresh Today. A delayed older response can overwrite a newer plan, leaving the operator looking at stale order or retired work even though the UI says the plan is saved. ## Evidence - `src/today_store.py` emits monotonic revisions. - `frontend/today-sync.js` ignores them and unconditionally applies every completed response. - `frontend/dashboard.js` rerenders local Today state on visibility without fetching current server truth. - No historical issue or recent commit covers out-of-order response rejection or lifecycle convergence; #357 introduced baseline cross-device sync and #359 retirement. ## Acceptance - [ ] A response older than the highest adopted revision cannot replace the visible Today plan. - [ ] Same-browser tabs exchange newer server snapshots and converge without an unrelated My Work refresh. - [ ] Returning online or foregrounding the dashboard explicitly refreshes Today while preserving queued offline operations. - [ ] Existing Today replay, capacity, migration, and retirement behavior remains green. - [ ] Focused behavioral tests and full suite pass.
timmy was assigned by rockachopa 2026-08-09 01:53:43 +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#361
No description provided.