# Complete progress-store example Save the HTML below as `index.html` and upload it to Hackemist. The player injects SDK 1.5.0 before the script. There are no credentials, libraries or undefined UI functions to add. Open it while signed in through the player or an ordinary Studio preview to test account saves. Standalone runtime previews and guests have no account bridge and leave play disabled in this account-save example. The reconciled store also requires usable browser storage for its durable local recovery. Use the project's configured isolated origin and check browser privacy/storage availability. A default opaque sandbox or blocked/full storage pauses this example safely; a direct `createProgressSaver` integration can use account JSON without this local-recovery layer. See [browser hosting](/docs/hosting.md) for deployment prerequisites. This counter captures every durable field as finite, plain JSON. Restore finishes before Advance becomes available. `ready` means restoration succeeded; only `saved` and a successful `flush()` acknowledgement confirm a new account write. The recovery buttons use only choices offered by the SDK; they never select a source automatically. A failed read or conflicting write pauses play. Export local recovery before deliberately reloading cloud progress. Adapt validation and capture together when adding fields; see [the save SDK](/docs/save-sdk.md) and [version and migration support](/docs/platform-contract.md). ```html Progress counter

Progress counter

Loading

loading

Keep recovery exports private. Reload replaces the counter with account progress.

``` SDK 1.5.0 adds the optional `markReady()` declaration while retaining both earlier progress helpers. This example declares readiness after successful restoration and a usable frame; guests, failed reads and rejected restores never declare playable readiness. A creator readiness event describes the app's own assertion and does not prove correct gameplay or authenticated save coverage. Verify that loading an existing save creates no write, Advance is disabled during startup/recovery/failure, a checkpoint is acknowledged, and refresh restores it. Also test a failed read, another tab's newer revision, a deliberate empty reset, local adoption, account separation and a fresh named slot. The repository browser acceptance test uploads this exact example. The synthetic example tests also execute the actual SDK and the exact HTML, without privileged credentials.