Skip to content

feat: authoritative multiplayer matches - #25

Merged
AlexGeslani merged 27 commits into
mainfrom
dev
Jul 30, 2026
Merged

AlexGeslani merged 27 commits into
mainfrom
dev

Conversation

@AlexGeslani

Copy link
Copy Markdown
Owner

Outcome

Completes the local-first authoritative multiplayer loop through live opponent state, immutable result resolution, and mutual rematch.

Safety and authority

  • server-authoritative match IDs, seeds, results, and rematch transitions
  • room-lifetime match-ID uniqueness and exact client fencing
  • strict WebSocket path/origin/Host validation and bounded payloads
  • bounded graceful shutdown with forced lingering-connection teardown
  • Rematch acceptance is intentionally irrevocable until the fresh authoritative match starts

Verification

  • npm test: 245/245 passing across 72 suites
  • real two-browser dev acceptance: PASS
  • malformed Host raw upgrade: HTTP 400; server remains responsive
  • incomplete HTTP-request SIGTERM reproduction: PASS
  • independent fail-closed review: PASS, no security concerns or logic errors
  • browser evidence SHA-256: 20a8ecaec83593ddd49506bde14a16bc7e6a02c4cd4f0ac31315a33962ba5165

@AlexGeslani
AlexGeslani merged commit 8064f4d into main Jul 30, 2026
2 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