Skip to content

feat: add durable resignation and draw controls - #23

Merged
nosam1998 merged 2 commits into
mainfrom
feat/match-controls
Sep 30, 2026
Merged

nosam1998 merged 2 commits into
mainfrom
feat/match-controls

Conversation

@nosam1998

@nosam1998 nosam1998 commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Add expected-turn resignation and draw-offer routes. A second seat's offer accepts a pending draw; a move expires it, and repeated offers from the same seat are harmless. Control events preserve the engine board, determine explicit outcomes and returns, and rebuild after restart.

Live streams now deliver changed states at the same turn, so draw offers and control endings cannot be missed. Metadata includes pending offers and control outcomes; generated OpenAPI documents both routes.

Tests cover restart/replay equality, stale and malformed commands, offer expiry, concurrent resignation, hidden-state preservation, corrupt control records, and a real WebSocket receiving a draw agreement at turn zero. Rust CI, Web CI, Browser CI, and game benchmarks pass against current main. The added tests include a real WebSocket receiving a same-turn draw agreement, concurrent controls, exact restart/replay results, and rejection of tampered control events.

@nosam1998
nosam1998 marked this pull request as ready for review September 30, 2026 19:57
@nosam1998
nosam1998 merged commit c96579b into main Sep 30, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant