v0.7.9.3 — the reference says what only the code knows, and saves get a rule
The generated card reference now carries the half TODO #15a said was the point of generating it: every Enhancement's `live` / `dormantSolo` / `unbuilt` status — whether its printed effect actually resolves yet — and the opponent-directed Action and Space-use cards, none of which is dealt in any deck. A transcription cannot carry either fact. Card counts are removed throughout, as ruled: they move with play balance so a document printing them is stale on the next retune. Where a count matters it is a yes/no "is this dealt at all", which is a fact about the design rather than the current tuning. #88 closes with it — it asked whether `card-reference.md`'s industry rows were stale, deliberately without rewriting them since Laborer counts are a balance decision. They are; nothing in the engine changed; that file is simply no longer where anyone looks. The balance question it guarded is #70. Save compatibility becomes a general rule in `README.md` § Design notes rather than a fact restated per version: a save is a list of moves and reopens by being re-played through the CURRENT rules, so any change that makes a once-legal move illegal stops an older one there — a deck change being the likeliest breaker. It fails safe every time. #40 generalised, #32's version-specific note dropped, #52 carries the ruling that versioned replays are a post-1.0 question. #94 opened: a Red Flag set out at an Office's Limits holds the next train from that side and is drawn nowhere. `DivisionView`'s office node has no `redFlag` field and `board-svg.ts` never mentions one, so after the single log line announcing it there is nothing on screen. Same class as Gitea#21 and #22, and already on the common board's step 1 list. No engine change. 897 tests pass, unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3Qk7uresKCHksdZajXCLg
This commit is contained in:
co-authored by
Claude Opus 5
parent
819996faa2
commit
e734481d65
@@ -131,6 +131,18 @@ is the thing this machinery exists to prevent.
|
||||
and they do not reconstruct the position. The phase driver mutates state and then describes it, so
|
||||
roughly a third of the event types are never reduced at all. Anything that needs to rebuild a game
|
||||
replays the intents.
|
||||
- **A save is only guaranteed to replay on the version that wrote it.** This is the cost of the
|
||||
property above and is not a bug to be fixed case by case: a save is a list of moves, so it reopens
|
||||
by being *re-played through the current rules*. Any rules change that makes a once-legal move
|
||||
illegal will stop an older save at that move — **a change to the deck is the likeliest breaker**,
|
||||
since a history that names a card the deck no longer deals has no legal answer at all, but any
|
||||
narrowing of what is permitted does it. It fails safe in every case: the load is declined, the
|
||||
offending move is named, and the file is left untouched, so nothing a player has is destroyed.
|
||||
Assume an older save may not open, tell players so wherever a build is announced, and read "this
|
||||
save will not load" in a bug report as this before treating it as a fault. **Versioned, migratable
|
||||
replays are a post-1.0 question** — deliberately not worth the effort while the rules are still
|
||||
moving this fast, since every migration would have to be written against rules that changed again
|
||||
next release.
|
||||
- **Never call `Math.random()`.** One ambient random call silently breaks replay.
|
||||
- **The Mainline Phase can stop and ask, and there are three questions it asks.** §8.1's clearance
|
||||
ruling goes to the Superintendent; the Yard Office offer and the Red Flag prompt go to the owner of
|
||||
|
||||
Reference in New Issue
Block a user