v0.4.4 — New Game dialog for the opening hand and the three revenue rates, Yard renamed Interchange, and two movement bugs behind a mirrored consist
This commit is contained in:
+6
-2
@@ -119,10 +119,14 @@ describe('the intents are what reconstructs a game', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('carries no state in the save beyond the seed and the intents', () => {
|
||||
it('carries no POSITION in the save — the seed, the rules dealt under, and the intents', () => {
|
||||
// If anything else ever creeps into `Save`, the claim above weakens: the game would no longer be
|
||||
// reconstructible from decisions alone, and persistence would have a schema to migrate.
|
||||
//
|
||||
// `rules` is the one addition, and it is not position: it is the other half of the seed. A seed
|
||||
// only names a game together with the rules it was dealt under, which is why two published
|
||||
// replays went dead when the rules moved (`TODO.md`) — the intents were fine, the deal was not.
|
||||
const game = newGame(7);
|
||||
assert.deepEqual(Object.keys(toSave(game)).sort(), ['history', 'seed']);
|
||||
assert.deepEqual(Object.keys(toSave(game)).sort(), ['history', 'rules', 'seed']);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user