Skip to content

[DYN-024] Durable adaptive workspace data and offline sync #381

Description

@veryCrunchy

Roadmap

Scope

Provide one shared, account-isolated persistence and synchronization layer for semantic app workspaces. Mail is an important acceptance fixture, but the implementation must remain contract-driven and reusable by Pantry, Chores, Budget, and untested apps exposing equivalent resources and actions.

Acceptance criteria

  • Persist bounded collection pages, detail records, relationship data, pagination checkpoints, and revalidation metadata by account, app, resource, parent scope, and request identity.
  • Render cached collection and detail data immediately after navigation or process restart, then refresh non-blockingly when online.
  • Keep previously loaded read-only workspace data available offline with clear freshness and connectivity state.
  • Queue only fully verified mutations whose target identity, provenance, payload, and conflict strategy can be persisted safely.
  • Replay queued mutations after connectivity returns only when the authoritative server state still satisfies the recorded precondition or has no conflict.
  • Pause and surface a resolvable conflict instead of overwriting when ETags, versions, record identity, or authoritative postconditions diverge.
  • Show pending, synced, stale, failed, and conflicted state consistently on Android and desktop without app-specific UI branches.
  • Enforce account isolation, bounded storage, expiry/invalidation, sensitive-field policy, and logout/account-removal cleanup.
  • Cover restart, offline read, offline mutation, reconnect, duplicate replay, conflict, pagination, and cache-eviction behavior with synthetic Mail, Pantry, Chores, and generic contract fixtures.
  • Add cross-platform visual QA for immediate cached content, background refresh, offline state, pending writes, and conflict resolution.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:dynamic-appsAdaptive contracts, semantic UI, and app integrationsplatform:androidAndroid-specific implementation or validationplatform:desktopDesktop-specific implementation or validationpriority:P0Required for a trustworthy mobile replacement or prevents data losstype:featureNew product capability

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions