Files
scrabble-game/backend/internal/game/doc.go
T
Ilia Denisov 48b06f4594
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 16s
CI / ui (pull_request) Successful in 57s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m21s
docs: finalize documentation to the production state
The project is live in production, so the staged-development scaffolding is removed.

- Delete the staged trackers PLAN.md and PRERELEASE.md.
- Rewrite CLAUDE.md: drop the per-stage workflow; codify the ongoing development
  principles (How we work) and the production model (Branching, CI & production):
  manual prod-deploy / prod-rollback, semver release tags, Ansible provisioning,
  expand-contract migrations.
- De-stage the living docs (README, ARCHITECTURE, TESTING, deploy/ansible, loadtest,
  platform/telegram READMEs) and the docker-compose tuning comments: drop the
  Stage N / R1-R7 / pre-release labels, keep every number and rationale, and fix the
  now-dangling PLAN.md / PRERELEASE.md references to describe the current state.
- Reword stale 'later stage' Go doc comments for subsystems that have shipped.
2026-06-22 08:33:30 +02:00

21 lines
1.2 KiB
Go

// Package game is the backend's game domain. It drives the in-process
// scrabble-solver engine (internal/engine) over a single match and owns
// everything the engine deliberately does not: persistence, scheduling and the
// player-facing operations.
//
// Active games are event-sourced. Durably, a game is its games row plus an
// append-only, dictionary-independent move journal (game_moves); the live
// position is an engine.Game kept warm in an in-memory cache and rebuilt by
// replaying the journal on a cache miss, which the engine's seeded bag makes
// exact (docs/ARCHITECTURE.md §9). Each game is serialised by a per-game lock,
// since engine.Game is not safe for concurrent use; on a persistence failure the
// live game is evicted so the next access rebuilds from the journal.
//
// The Service exposes create, the play/pass/exchange/resign transitions with
// validate-at-submit scoring, the one-per-game-plus-wallet hint, the unlimited
// word-check tool with complaint capture, per-player game state, history and GCG
// export, and the per-game turn-timeout sweeper that auto-resigns an overdue
// player (honouring their daily away window). The HTTP surface that fronts these
// operations is exposed to the gateway.
package game