Duels record the rules revision they began under

CURRENT_RULES is stamped on the start line and the game state, and a
ledger replays under the revision it recorded (1 when it has none), so a
future fix that changes how a past turn resolves can keep the old path
for old duels. The reports desk skill now says when to bump it: only
when the deploy gate flags ledgers.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
This commit is contained in:
Eric WagonerandClaude Fable 5.1 committed 2026-09-23 10:32:25 -04:00
1 parent 8eca078043
commit 7485d50b8d
8 files changed
+44 -13

No files matched your search

+8 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest';
import { SPECTATOR, createGame } from './state';
import { CURRENT_RULES, SPECTATOR, createGame } from './state';
import { viewFor } from './view';
/** Three wizards; B's first gestures were hidden from C alone. */
@@ -30,3 +30,10 @@ describe('the view a room sends', () => {
expect(view.log.map((l) => l.text)).toEqual(['Nothing else happened.']);
});
});
describe('the rules revision', () => {
it('is stamped on a new duel and kept from a ledger that recorded one', () => {
expect(createGame({ A: 'Aldric', B: 'Bryn' }).rules).toBe(CURRENT_RULES);
expect(createGame({ A: 'Aldric', B: 'Bryn' }, 1, 1).rules).toBe(1);
});
});