@@ -398,11 +398,11 @@ resumable-session marker, and tab/reset coordination keys, inside the same-origi
398398trust model described above.
399399
400400The current and only legal envelope schema is ` chia-gaming-session ` version
401- ` 12 ` . Because the project is
401+ ` 13 ` . Because the project is
402402still alpha, every other version is deleted wholesale without decoding or
403- migration. A decoded v12 record must also satisfy the complete phase-owned
403+ migration. A decoded v13 record must also satisfy the complete phase-owned
404404envelope contract (keyed game membership, game-owned payload/type agreement,
405- terminal data, and frozen terminal coin list); malformed v12 records are
405+ terminal data, and frozen terminal coin list); malformed v13 records are
406406deleted rather than partially restored. The boot marker is retained after an
407407incompatible or malformed resumable record is discarded so the failure remains
408408visible at the Resume / Start Over boundary. The ` version ` field is kept as a
@@ -426,7 +426,7 @@ are grouped under those phase-owned payloads:
426426
427427| Field | Type | Purpose |
428428| ------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
429- | ` version ` | ` bigint ` | Save schema version; currently ` 12 ` . |
429+ | ` version ` | ` bigint ` | Save schema version; currently ` 13 ` . |
430430| ` playerId ` | ` string ` | Stable local hub/player identity for this browser state. |
431431| ` sessionId ` | ` string? ` | Stable token linking the hub iframe and game-channel WebSocket. |
432432| ` alias ` | ` string? ` | Local hub display alias preference. |
@@ -550,7 +550,7 @@ independently, and the accepted entry is removed only after the hand is fully
550550settled. Schema version 12 also makes
551551` gameInstances ` plus ` lastDisplayedGameId ` the only persisted game protocol
552552presentation and stores the canonical ` GameProtocolPresentation ` discriminant.
553- Under the alpha no-migration policy, version 11 and all other incompatible
553+ Under the alpha no-migration policy, version 12 and all other incompatible
554554records are deleted rather than translated from aggregate current-game fields.
555555
556556#### Delivery-critical saves
@@ -1572,16 +1572,16 @@ not to limit concurrency.
15721572| ` front-end/src/components/GameSession.tsx ` | Game session UI: header, coin status, game area, overlays |
15731573| ` front-end/src/hooks/useGameSession.ts ` | Thin React boundary: controller/runtime setup, host subscription, typed dispatch, selector projection |
15741574| ` front-end/src/lib/session/sessionMachine*.ts ` | Root dispatcher plus cohesive channel, between-hand, proposal, durable-game, notification, command, effect, runtime, and persistence modules |
1575- | ` front-end/src/lib/session/persistence*.ts ` | Canonical strict-v12 phase decoder plus primitive, between-hand/proposal, and phase-payload codecs; accepted records always produce a normalized ` SessionModel ` |
1576- | ` front-end/src/lib/session/sessionSnapshot.ts ` | Canonical ` SessionModel ` → v12 presentation snapshot encoder |
1575+ | ` front-end/src/lib/session/persistence*.ts ` | Canonical strict-v13 phase decoder plus primitive, between-hand/proposal, and phase-payload codecs; accepted records always produce a normalized ` SessionModel ` |
1576+ | ` front-end/src/lib/session/sessionSnapshot.ts ` | Canonical ` SessionModel ` → v13 presentation snapshot encoder |
15771577| ` front-end/src/lib/gameRegistry.ts ` | Exhaustive pure feature registration and game-owned codec/terms/compose dispatch |
15781578| ` front-end/src/lib/gameMountRegistry.tsx ` | Exhaustive React live/frozen mount registration |
15791579| ` front-end/src/features/calPoker/useCalpokerHand.ts ` | Calpoker hook: five-step protocol, card parsing, move submission |
15801580| ` front-end/src/hooks/SessionController.ts ` | WASM bridge (` SessionController ` class): message delivery, block data, event queue, ` getWasmFields() ` for persistence |
15811581| ` front-end/src/hooks/WasmStateInit.ts ` | WASM initialization: load binary, deposit .hex files, create cradle |
15821582| ` front-end/src/hooks/blobSingleton.ts ` | Singleton management: ` getOrCreateSessionController ` / ` destroySessionController ` ; restore path for session persistence |
15831583| ` front-end/src/services/PeerSession.ts ` | Per-session peer state: session ID, peer ID, liveness, message buffering/routing, send methods |
1584- | ` front-end/src/hooks/save.ts ` | v12 cache/write and live/terminal lifecycle facade |
1584+ | ` front-end/src/hooks/save.ts ` | v13 cache/write and live/terminal lifecycle facade |
15851585| ` front-end/src/hooks/saveCoordination.ts ` | Resume markers, active-tab lease, and cross-tab persistence fencing |
15861586| ` front-end/src/hooks/saveHardReset.ts ` | Hard-reset and WalletConnect browser-storage cleanup |
15871587| ` front-end/src/hooks/savePreferences.ts ` | Local preference encoding and decoding |
0 commit comments