https://gitlab.synchro.net/main/sbbs/-/commit/aef994daaf95ebd065be403a
Added Files:
docs/superpowers/specs/2026-08-02-syncretro-save-restore-design.md
Log Message:
Design: SyncRetro suspend and resume
A player asked for saved games on the arcade door. Restoring a snapshot on a shared cabinet rolls its high-score table back to whenever the snapshot was taken, so rather than policing snapshots the design gives a player a choice
of machine: a public cabinet whose scores are everyone's and which never
writes a snapshot, or their own private one, which behaves like the
cartridge consoles already do. Suspend and resume then follow from which machine they are on, so the shared table cannot be rolled back
structurally rather than by rule.
The snapshot is written where every exit already converges, so a dropped carrier suspends the game as reliably as quitting does. Its staleness key -- core, romset and resolved options, which a libretro blob does not carry --
goes in the filename, so one directory read tells the picker which
cartridges have a live saved game and lets it delete the ones a core
upgrade invalidated, with no per-cartridge I/O.
The door is told whether it may snapshot; it never infers that from where
-home points. Two separate switches record two separate claims: whether the driver snapshots reliably, which is ours to state per romset, and whether
the install offers the feature at all, which is the sysop's.
Also corrects this spec's predecessor, which predicted both halves of the
door would need to read shared_saves. Only the lobby does.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net