Как устроено
Один инвариантный цикл, вокруг которого собрано все остальное: места и роли, раунды и фазы, очередь решений со сроками, постоянные правила, общие метрики и ретроспектива в конце.
Места и роли

Сценарий описывает четыре места. У каждого свой набор глаголов: инженер может investigate, mitigate, fix; продакт – commit-scope, prioritize, talk-to-stakeholder; инженерный менеджер – protect-team, open-requisition, set-standards.
Полномочия асимметричны намеренно. Ни одно место не закрывает карточку в одиночку: чтобы снять давление, глаголы приходится соединять в цепочку, а значит договариваться. Разговор в команде производит именно это, а не механика чата.
Асимметрична и информация. Одно и то же событие показывается разным местам по-разному: кто-то видит график ошибок, кто-то раздраженного клиента, кто-то грязный кусок кода.
Незанятые места ведет движок. У каждого сценария указан диапазон игроков – во всех пяти поставляемых сценариях это от одного до четырех. Свободные места закрывают боты: при закрытии раунда бот ходит по цепочке правил за свое место, поэтому неполный стол не встает колом. Одно место в каждом сценарии помечено как «не для бота». Это место ведущего игрока, и отдать его боту значило бы отдать боту сам вопрос сценария.
Раунды и фазы
Раунд – атомарная единица игры, и он не привязан к настенным часам: раунд закрывается, когда места отметились, а не когда истекло реальное время.
Один раунд: приходит давление → каждое место видит свой срез → обсуждение → игроки тратят емкость на действия → движок применяет детерминированные эффекты → метрики двигаются → следующий раунд.
Фазы – это ворота между раундами. У фазы есть цель и условие перехода, записанное выражением над метриками: в «Обещании на квартал» фаза commit заканчивается только при scope <= 55. Такое условие нельзя пройти усердием – только решением, что вы не делаете.
Место отметилось, если оно сходило, спасовало, оставило постоянное распоряжение на этот случай или ушло в тайм-аут. Отсутствие никогда не блокирует остальных, оно только выбирает более слабый путь разрешения.
Решения со сроком

Решения в игре – объекты, а не реплики. Все, что подняли в течение раунда, попадает в очередь: истекающие распоряжения, взведенные задержанные эффекты, перерасход по начатой работе, вопросы на кворум.
Каждый пункт несет свои варианты, срок в раундах, правило, кто именно его закрывает (владелец решает, кворум, консенсус), и список мест, у которых есть относящаяся к делу закрытая информация. Просрочка не ставит игру на паузу: пункт разрешается сам, по худшему варианту.
Отложить – это тоже ход. Он записывается, и цепочка переносов всплывает на ретроспективе.
Действия разделены по радиусу поражения:
| Уровень | Что это | Когда разрешается |
|---|---|---|
| Solo | локальное, обратимое: разведать, подготовить, мелкая правка | в любой момент, никого не спрашивая |
| Quorum | среднее: принять политику, перетасовать бэклог | асинхронное согласие N коллег |
| Gate | необратимое: релиз в прод, крупная трата, наем | только на общей планерке |
Постоянные правила
Есть два вида правил, которые продолжают действовать без вас.
Постоянные распоряжения – личные. «Если сработал инцидент, сначала митигируем». «Согласовывать траты на инфраструктуру до X». «Мой голос держит Ops, пока меня нет». Уходя, вы оставляете правило, и оно ходит за вас.
Лучшая драма в модели живет ровно здесь: распоряжение может оказаться неверным для той ситуации, которая на самом деле пришла. «Я же сказал: всегда откатывать» – а этот откат снес миграцию. Присутствующая команда живет с правилом отсутствующего, пока не наберет кворум, чтобы его перебить.
Политики – командные. Их принимают, правят и отменяют на управленческой планерке, и они лежат в реестре, который видно всем. Правило контента здесь жесткое: у политики обязана быть сцепленная обратная сторона. Политика, у которой одни плюсы, в сборку не проходит.
Метрики
Метрики общие. Когда разработчик срезает угол ради даты, качество падает у всех; когда продакт переобещал, доверие растет сейчас, а давление по скоупу давит на всех в следующем раунде.
Мягкие метрики – trust, morale, quality, scope, techDebt, outcome. Их двигают события и действия; падение одной из них до пола – условие проигрыша.
Жесткие ресурсы тратятся, а не подталкиваются: емкость (действий в раунд), дедлайн (часы, которые идут всегда) и то, что в конкретном мире действительно кончается. Это намеренно не универсальный кошелек: у стартапа кончаются деньги, у большой компании – одобренные ставки и внимание руководства.
Свои метрики у сценария. Сценарий может объявить собственные: consistency в «Долге дизайна», bench во «Второй команде», conversion и revenue в «Тисках роста». Объявление и делает имя легальным в условиях, эффектах и триггерах этого сценария.
Емкость связана с начатой работой: свободная = общая − занятая. Именно эта связь создает главный повторяющийся выбор игры: снять людей с начатого ради пожара или дать гореть.
Ретроспектива
Сессия заканчивается ретроспективой, и это не приложение к игре, а то, ради чего она игралась.
Ретроспектива собирается из журнала событий: что происходило, какие решения вы приняли и по какому пути они закрылись, что вы откладывали и сколько раз, как двигались метрики и какими цепочками одно вытянуло другое. Отдельно идет личный срез: только ваши действия и только ваши данные, чужие скрытые мотивы в него не попадают.
Есть жесткое правило: никаких нравоучений. Формулировки вроде «урок здесь в том, что» или «в реальной жизни» запрещены на уровне валидации. Единственный вывод, который ретроспектива формулирует, обязан быть привязан к этой сессии («мы срезали качество, и оно вернулось»), а не к продуктовому менеджменту вообще.
Что делает языковая модель, а что – движок

Здесь легко ошибиться в обе стороны, поэтому формулирую точно.
Игра полностью работает без языковой модели. Без ключа шлюз деградирует, и каждая сессия идет на скриптовом уровне. Скриптовый уровень – не заглушка: он обязан уметь провести целую сессию в одиночку. Планерка становится шаблонной сводкой, повестка списком, ретроспектива таймлайном из журнала событий с посчитанным движком исходом. Хуже как текст, но это по-прежнему сессия с началом, серединой и разбором.
Модель никогда не меняет состояние игры. Любой ее вывод приходит на сервер как предложение и проходит проверку правилами до того, как что-либо будет записано. Голоса считает движок, права решения применяет движок, исход фиксирует движок. Модель повествует, ведет разговор и компилирует предложения, но никогда не закрывает решение.
Что модель добавляет: язык. Связный рассказ между тактами планерки, реплики персонажей, которых ведет движок, формулировку посчитанных чисел человеческими словами и глубину разбора на ретроспективе.
Так что точная формулировка – не «игра на языковой модели», а «детерминированный движок, поверх которого модель говорит».