ADR-0010 · Анонимные self-service боты (песочница, unranked)

Статус: предложено · 2026-06-28 (дизайн: 05 Анонимный Bot API). Расширяет ADR-0009.

Контекст. ADR-0009 спроектировал Bot-API как админ-выдачу durable-токенов для 4–5 известных команд (single-author gate). Цель сместилась: сделать открытую платформу, где любая команда/одиночка может подключить и протестировать своего бота с минимальным трением — и в перспективе соревноваться. Открытый вопрос: пускать ли анонимных ботов (без регистрации), и как это не обнулит смысл рейтинга и не откроет абьюз.

Решение. Ввести три тира идентичности поверх единой Principal-системы:

  1. Анонимный/эфемерныйPOST /bot/anon минтит временный токен на bot:anon:<uuidv7> (опц. ник, namespaced против маскарада), in-memory, TTL+idle-eviction, всегда unranked. Для разработки/теста.
  2. Зарегистрированный бот — durable bot:team:<team>:<name> (ADR-0009), для рейтинга/лидерборда; завязан на аккаунты.
  3. Админ-токен (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 сразу (платформа запускает чужой код) — самый дорогой/рискованный путь; держим как финальную амбицию, а не вход.

🔗 05 Бот-платформа — анонимный Bot API (дизайн) · ADR-0009 Бот-API и турниры · 00 Журнал решений (ADR)