feat/bot-baseline-inference #54

Merged
hellsingoff merged 2 commits from feat/bot-baseline-inference into main 2026-11-14 22:28:20 +00:00
Owner

Изменение

Проблема и получившееся поведение; ссылка на PLAN/ADR.

Проверка

Команды и результаты, ограничения проверки, способ отката.

  • make check, make test, make smoke проходят.
  • Для protocol/security/storage изменений выполнены правила review.
  • Измененные contracts, fixtures и документация согласованы.
  • Секреты и приватные игровые данные отсутствуют в diff и логах.
## Изменение Проблема и получившееся поведение; ссылка на PLAN/ADR. ## Проверка Команды и результаты, ограничения проверки, способ отката. - [ ] `make check`, `make test`, `make smoke` проходят. - [ ] Для protocol/security/storage изменений выполнены правила [review](../docs/OWNERSHIP.md). - [ ] Измененные contracts, fixtures и документация согласованы. - [ ] Секреты и приватные игровые данные отсутствуют в diff и логах.
Implement P6.2: bots answer each decision through a bot job that is
resolved exactly once, by the inference service or by a fallback policy.

- Policies score candidates and TemperatureSampler picks with the bot
  level's temperature; RandomLegalPolicy works for every game and Durak
  adds DurakHeuristic through the optional BotHeuristicPolicy
- Bot levels (easy, medium, hard) set memory and temperature; the memory
  limit is an explicit `memory` field of the shared observation, Durak
  state records the round each remembered card was seen and forgotten
  cards count as unseen again; fingerprint baseline recomputed for @1
- One bot job per decision: request ID and command ULID derive from game,
  epoch, state version, turn and seat; the unique index now includes the
  version, and admission idempotency on that ULID is the job resolution
- Worker opens jobs and inference requests, writer stores requests as
  separate outbox rows, relay sends them only to epicly.bots and drains a
  bounded backlog per pass; bot seats get no turn notifications
- BotResults accepts an answer only for the current decision, version and
  budget; BotScheduler answers with the heuristic after the budget
- Python inference consumer (services/ai/inference, profile `ai`) with a
  SQLite inbox, deadline budget and confirmed publication
- 1000 baseline games on Durak and Pebble finish; P6.2a plans per-seat
  level selection and inference for a bot's first turn

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plan training one model for every bot memory level
All checks were successful
Forgejo Quality CI / CI · Select affected components (pull_request) Successful in 7s
Forgejo Quality CI / Repository · Format & configuration (pull_request) Successful in 1m5s
Forgejo Quality CI / Core · PHP quality, tests & runtime (pull_request) Successful in 11m28s
Forgejo Quality CI / Gateway · Go quality & race tests (pull_request) Successful in 43s
Forgejo Quality CI / Notifications · Go quality (pull_request) Successful in 1m11s
Forgejo Quality CI / AI · Dependencies & inference (pull_request) Successful in 1m16s
Forgejo Quality CI / Client · Dart quality, tests & Linux build (pull_request) Successful in 5m26s
Forgejo Quality CI / Contracts · Cross-language validation (pull_request) Successful in 2m10s
Forgejo Quality CI / CI · Required checks (pull_request) Successful in 5s
b5d29d8957
Self-play does not wait for the level choice in the interface: the memory
limit is a model input, so the simulator takes it per seat and training
draws it at random from a wider set than the offered levels. Evaluation
reports each level and checks that strength grows with memory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hellsingoff scheduled this pull request to auto merge when all checks succeed 2026-11-14 22:04:13 +00:00
hellsingoff deleted branch feat/bot-baseline-inference 2026-11-14 22:28:20 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
hellsingoff/epicly-unstable-app!54
No description provided.