Skip to content

Products have no durable storage that survives a new device #606

Description

@ottovlotto

The need

Scarcity keeps a player's favourited collections. They shape the collection picker and may later feed the pre-selection ranking. Today they sit in host-provided local storage, so they die with the device and do not come back after a reinstall.

Where it stands

At 7475e70c the product storage surface is local_storage with three methods — read, write, clear — keyed by a plain String (rust/crates/truapi/src/api/local_storage.rs:11-53).

No RFC in docs/rfcs/ covers product storage at all. The storage-adjacent RFCs are all open PRs, and none of them is this:

#513 is storage shared between products on one device. #598 (REQ1) explicitly puts this out of scope:

Syncing storage across a user's devices. Storage is per product and per device; nothing here changes that, and no requirement should assume it does.

That exclusion looks right for REQ1 — cross-product and cross-device are different mechanisms. This issue is the need the exclusion leaves without a home, rather than an argument to widen REQ1.

What we need

An answer more than an implementation:

  • Whether durable per-product state surviving device replacement is in scope for Release 2, a later release, or not planned
  • If it is not planned, that recorded somewhere citable, so products can design around it

Scarcity has an accepted fallback either way: keep favourites on the device and say so in the interface, or keep them out of the default collection choice so both minting surfaces still compute the same default. A documented "not planned" is a usable answer here — what we cannot design against is silence.

Consumer side: paritytech/scarcity-spa row R14 and scarcity-spa#25.

cc @gp0p3

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions