Save Model

Persistly stores one canonical save envelope at a time.

The runtime model is explicit on purpose: create once, store saveId locally, load and sync by saveId, and treat metadata and state as different layers of the same canonical save payload.

Canonical Model

These fields define the public runtime model.

One save record equals one canonical save envelope, not one hardcoded slot abstraction.

saveId is the public runtime handle after creation.

metadata is small, developer-defined JSON for selection UIs and lightweight labels.

state is the full current save JSON and should stay bounded.