ADR-0002 · Клиентский авторитет до фазы 3

Статус: принято · 2026-06-22

Контекст. Где исполняется движок и кто хранит истинное состояние партии — центральная развилка. Клиентский Scala.js (как в lab) проще и уже работает; серверный JVM/WebSocket нужен для честности, но это greenfield на 5–9 недель.

Решение. Авторитет фазозависимый: фазы 1–2 — клиентский (Scala.js в Web Worker, кубики Math.random(), легальность через chessground); с фазы 3 — серверный (JVM-jar движка за http4s/WebSocket: истинный GameState, серверный RNG с seed, валидация каждого хода, порт BotMatchRunner).

Последствия.

  • Фаза 1 стартует быстро на готовом коде; фазы 1–2 — тонкий, но корректный срез будущей серверной системы (эволюция, не переписывание).
  • Бесплатную анонимную игру читерить нечего; реплей-гейт аналитики (07 Контракт ingest и валидация движком) всё равно гарантирует легальность.
  • Жёсткое следствие: рейтинги, ставки и человек-vs-человек невозможны до фазы 3 — клиентские кубики/легальность подделываемы.
  • Фаза 3 несёт основной риск (нет транспорта/сессий/RNG ни в одном репо сегодня).

Альтернативы. Серверный авторитет с первого дня — competitive-ready сразу, но +5–9 недель до первого релиза и весь greenfield-риск авансом.

🔗 02 Архитектура — авторитет и стек · 01 Дорожная карта