Settled by 0268: R16: the storage package owns
the conflict data, and the experience package owns the UI that resolves it.
Context
ADR 0059 gave the mobile app an encrypted query cache and a mutation queue. The desktop and PWA plan (section 3.2, rows 1 to 12) lists what a queue on every client needs: client-minted ids, version preconditions, retention, a leader election, action-version survival, and anoffline: option on @Action. The owner accepted the offline direction; the rows themselves are the plan’s recommendations and were not each decided.
Decision
- Scope. Offline behaviour applies to every client (web, PWA, desktop and native), not only the mobile app.
- Mechanics (plan section 3.2). Client-minted ids, version preconditions on writes, retention of the queue, a leader for the queue across tabs, action-version survival across an upgrade, and an
offline:option on@Action. - Storage. The queue and the cache use
@stackra/storage(ADR 0256).
Consequences
- A user can keep working offline in any client, and the queue replays with version checks.
- The queue is only as safe as its version preconditions, so they are part of the action contract.
Enforcement
planned — the queue conformance test runs against each client driver.Open questions
- Owner decision on the individual rows of plan section 3.2 (rows 1 to 12). This ADR stays Proposed until the owner agrees them.
Supersedes and sources
Supersedes: none. Amends: 0059, 0079. Sources: planstackra-notes/desktop-pwa-offline-plan.md section 3.2; owner direction on offline (stackra-decisions-2026-10-19.md L954, 2026-10-20 night).