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
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.
21 lines
1.2 KiB
Go
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
|