A duel server: rooms, seat tokens, ledgers, and resolution when all have moved

Plain HTTP for actions and a websocket that only says "fetch again". A
room is its append-only ledger replayed from the top; the engine is
deterministic given the seed and the recorded inputs. Each seat sees a
view filtered to what the rules let it know. Bot seats are filled at
resolution time.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-09-22 16:54:29 -04:00
co-authored by Claude Fable 5.1
parent 95a1915cae
commit 8366c9d7ff
11 changed files with 1024 additions and 4 deletions
+3
View File
@@ -20,3 +20,6 @@ vite.config.ts.timestamp-*
# Playwright MCP output
.playwright-mcp
# Duel ledgers written by the server
/data