- New docs/09-limits-and-performance.md: principles, all protection layers, what players see, configuration reference, measurements, tuning guide, monitoring and how to test - Server chapter summarises the limits and links to chapter 9; circuit breaker description and AI_MAX_INFLIGHT default corrected - Architecture: new files in the layout, design decisions for load handling; docs index lists chapter 9 - Protocol, AI and operations chapters link to chapter 9; test counts - Root and component READMEs describe the limits and settings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
wizard_server
FastAPI game server. It manages sessions, lobbies and games, and talks to the AI service.
game_logic/— the standalone rules engine (pip install ./game_logic, see its README).app/main.py— routes:GET /health,WS /ws(browsers),WS /internal/ai(AI service, refused when the request came through the reverse proxy)app/protocol.py— client message schemaapp/service.py— dispatches client messages, reconnects sessions, cleanupapp/lobby.py— lobbies, seats, host actions, running games and AI turnsapp/ai_bridge.py— request/response protocol with the AI service, random-move fallback, in-flight cap and circuit breakerapp/sessions.py— sessions (token based, survive reloads) and ordered websocket sendingapp/limits.py— token bucket, per-IP rate limiter, connection limiter (abuse protection)app/load.py— load monitor (event loop lag, CPU, cgroup throttling) with hysteresis; the service refuses new lobbies/games while overloaded or atMAX_ACTIVE_GAMES
Configuration (environment, all in app/config.py): AI_SHARED_SECRET, AI_DECISION_TIMEOUT (5s),
AI_MOVE_DELAY (0.8s), TRICK_PAUSE (1.8s), SESSION_TTL (1800s), MAX_LOBBIES (1000),
ALLOWED_ORIGINS, LOG_LEVEL, and the limits: MAX_CONNECTIONS (500), MAX_CONNECTIONS_PER_IP (10),
MESSAGE_RATE/MESSAGE_BURST (10/30), LOBBY_CREATE_RATE (10/min), MAX_ACTIVE_GAMES (50),
LOAD_* thresholds, AI_MAX_INFLIGHT (64), AI_BREAKER_FAILURES/AI_BREAKER_COOLDOWN (5/30s).
See ../docs/04-server.md and ../docs/09-limits-and-performance.md.
pip install -r requirements-dev.txt
uvicorn app.main:app --reload
pytest