Bundle Station Master v0.6.0: updates stop destroying games in progress

Pin moves to v0.6.0, package version to 0.6.0:0.

README and instructions.md both promised the opposite of what now happens
and had to be rewritten: an update keeps games in progress unless the rules
actually changed, and a game that genuinely cannot replay is named in the
log rather than described as a version mismatch.

Verified on phoenix.local by doing the thing the release is about. A game
(MAIL-4571) was created on the installed 0.5.6:0, then this build was
installed over it. All four saved games on the volume came back:

  Resuming 4 saved game(s)…
  Resumed HOPPER-4607  — 37 intents replayed.   (written under 0.5.2)
  Resumed TRESTLE-5109 —  5 intents replayed.   (written under 0.5.3)
  Resumed TENDER-8092  — 38 intents replayed.   (written under 0.5.5)
  Resumed MAIL-4571    —  0 intents replayed.   (written under 0.5.6)

The first three had been refused on every boot since the release that
stranded them. They were never damaged, only unreachable, and replaying
them is all it took to get them back — which is the clearest evidence that
the version comparison was answering the wrong question. All four now show
in Games in Progress with the correct Day, Stage and waiting-on player.
This commit is contained in:
Jesse
2026-08-21 21:56:58 -04:00
parent 5bd06af932
commit e84c640067
4 changed files with 30 additions and 28 deletions
+9 -6
View File
@@ -96,12 +96,15 @@ and a critical task is raised pointing at **Get Join Secret** — the service st
the moment the daemon is healthy, but a player cannot create or join a game until the join secret
has been retrieved and shared with them.
**Updating the package ends every game in progress.** A save records the engine version that wrote
it and the server refuses to resume one recorded under different rules, logging the refusal and
leaving the file untouched. This is upstream's deliberate design, not something this package works
around: a move that was legal under the old rules may not be under the new ones. Let games finish
before updating, or accept losing them — rolling the package version back makes them loadable
again, since nothing is deleted.
**Updating the package keeps games in progress, unless the rules actually changed.** On boot the
server replays each saved game's moves through the current engine and resumes it if they all still
apply — the version that wrote the file is recorded and reported but decides nothing. When a move
*is* rejected, that game is refused and the log names it: `move 3 of 8 (localOps.choose) is
rejected by the current rules with OPTION_ALREADY_CHOSEN`. A refused game is never modified or
deleted, so reinstalling the previous version makes it loadable again and it can be played out.
Earlier versions of this package compared version strings instead, which destroyed every game in
progress on every update, including updates that changed only how the board is drawn.
## Actions