ADR-0010 · Анонимные self-service боты (песочница, unranked)
Статус: предложено · 2026-06-28 (дизайн: 05 Анонимный Bot API). Расширяет ADR-0009.
Контекст. ADR-0009 спроектировал Bot-API как админ-выдачу durable-токенов для 4–5 известных команд (single-author gate). Цель сместилась: сделать открытую платформу, где любая команда/одиночка может подключить и протестировать своего бота с минимальным трением — и в перспективе соревноваться. Открытый вопрос: пускать ли анонимных ботов (без регистрации), и как это не обнулит смысл рейтинга и не откроет абьюз.
Решение. Ввести три тира идентичности поверх единой Principal-системы:
- Анонимный/эфемерный —
POST /bot/anonминтит временный токен наbot:anon:<uuidv7>(опц. ник, namespaced против маскарада), in-memory, TTL+idle-eviction, всегда unranked. Для разработки/теста. - Зарегистрированный бот — durable
bot:team:<team>:<name>(ADR-0009), для рейтинга/лидерборда; завязан на аккаунты. - Админ-токен (
PLAY_BOT_TOKENS) — house/официальные боты.
Чистая линия: тестировать — без регистрации (unranked песочница); соревноваться за рейтинг — с регистрацией. Аноним сразу пользуется существующим Bot-API: vs house-бот (прямой вызов) и self-play (POST /games отдаёт оба seat-токена). Онбординг — reference-bot как forkable starter-kit. Защита — per-IP лимиты, TTL, кап одновременных игр, 429.
Последствия.
- Трение для теста → ~ноль: подключил бота за пару минут, как гость в HvH (anonymous-first, ADR-0003).
- Реестр токенов остаётся in-memory до Persistence; durable-идентичность и рейтинги — позже (аккаунты → Glicko-2).
bot:anon:<uuid>— отдельный namespace внутриbot:*; не пересекается сbot:team:*(ADR-0009) иbot:<algorithm>(ADR-0003); unranked-флаг изолирует от рейтинга и от курируемого корпуса.- Открытость = поверхность абьюза → rate-limit/abuse-guard обязателен в той же фазе (#42).
- Боты — ось нагрузки (24/7): caps + приоритет людям сохраняются (ADR-0009).
Альтернативы (отклонены). Только зарегистрированные бот-аккаунты с самого начала — максимальное трение ровно там, где нужно минимальное (быстрый тест-луп); регистрация оправдана только для рейтинга. Полностью анонимная платформа без тиров — тогда рейтинг/лидерборд бессмысленны (нет устойчивой идентичности). Submit-and-run сразу (платформа запускает чужой код) — самый дорогой/рискованный путь; держим как финальную амбицию, а не вход.