- Add token field to OfficialBotAccount and generate a non-expiring bot
JWT on creation so official bots can authenticate
- Expose token in POST /api/account/official-bots response and open the
endpoint to any authenticated user
- Bridge TournamentService to Redis: publish gameStart events to
nowchess:bot:<name>:events after each pairing so OfficialBotService
picks up games automatically
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements the full tournament lifecycle: create, join, withdraw, start,
round progression, and finish with Buchholz tiebreak standings.
- REST resource covering all 11 endpoints from the OpenAPI spec
- Swiss pairing algorithm with bye support
- Per-bot NDJSON stream with targeted gameStart events (color field)
- Game result ingestion via Redis writeback stream
- H2-backed integration tests for resource and pairing service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>