Как мы строим Salty Poker: spec-driven development
Большинство покерных платформ строят так же, как играют большинство покерных рук — быстро, на ощущениях, разбираясь по ходу дела. Мы так не делаем.
С первого дня мы осознанно решили строить эту платформу методом spec-driven development. Это подход, набирающий серьёзную популярность в кругах инженерии с участием ИИ, и это фундамент, на котором стоит всё, что мы делаем.
Что означает spec-driven development
До того как была написана первая строка продакшн-кода, была написана спецификация. Больше 100 страниц. Двадцать три модуля, покрывающих каждую область системы — инфраструктуру, схему базы данных, контракты API, границы сервисов, контроли комплаенса, пайплайны CI/CD, операционные runbook'и.
Методология делится на три уровня. Spec-first: полноценная спецификация пишется до любого кода и затем используется, чтобы вести разработку. Spec-anchored: спецификация остаётся живой и эволюционирует вместе с кодовой базой по мере того, как проект созревает. Spec-as-source: человек касается только спецификации — код полностью генерируется из неё.
Есть и антишаблон, который стоит назвать по имени: spec-once — когда спецификация запускает проект, а потом тихо забрасывается по мере того, как разработка углубляется. Чертёж превращается в артефакт.
Мы сознательно устроены против этого. Наша спецификация — живой документ. Она обновляется, когда принимаются решения, когда всплывают edge-кейсы, когда архитектура эволюционирует. Когда сессия заканчивается, спецификация отражает то, что было построено. Когда начинается следующая сессия, она подхватывает ровно там, где остановилась предыдущая.
Почему это важно для покерной платформы
Покерные платформы падают предсказуемым образом — и почти все падения сводятся к одной и той же корневой причине: срезанные углы в самом начале, которые потом накапливаются и превращаются в серьёзные проблемы.
Кошелёк, построенный без нормального двойной записи ledger'а. Игровой движок, не прогнанный под нагрузкой по edge-кейсам. Слой комплаенса, прикрученный задним числом, а не заложенный с первого дня. Платформа, которая нормально работает на 50 игроках и разваливается на 500.
Spec-driven development — это дисциплина, которая этому препятствует. Каждая граница сервиса определена до того, как он построен. Каждый поток данных задокументирован до того, как он реализован. Каждое требование комплаенса попадает в спецификацию до того, как запускается первая миграция. Никаких решений вида «с этим разберёмся позже» — потому что «позже» — это когда игроки уже за столами.
Agentic AI как исполнительный движок
Мы используем agentic AI, чтобы строить эту платформу — и здесь важное отличие от тех ИИ-инструментов, с которыми большинство уже знакомо.
Agentic AI не просто отвечает на вопросы или автокомплитит код. Он автономно выполняет многошаговые воркфлоу в рамках заданных границ — пишет код, запускает тесты, ловит ошибку, правит её, делает коммит — без необходимости, чтобы человек контролировал каждое действие. Он доводит задачу от начала до конца и возвращает управление, когда упирается в решение, зарезервированное за человеком.
Именно спецификация делает это безопасным и предсказуемым. Агент работает от определённой, отрецензированной, версионированной спецификации. Каждая сессия загружает сфокусированный набор модулей — два-четыре за раз — давая агенту ровно тот контекст, который ему нужен, и ничего сверх этого. У каждой сессии есть заданный скоуп. Чекпойнт охраняет переход к следующей фазе. Ничего не движется вперёд, пока чеклист не закрыт полностью.
Агент не решает, что строить. Решает спецификация. Агент исполняет.
Результат
Платформа, построенная с той строгостью, которую она заслуживает. Каждое архитектурное решение задокументировано. Каждая граница сервиса сделана осознанно. Каждое требование комплаенса закрыто до того, как превратилось в проблему.
Вот что мы строим. И вы почувствуете разницу, когда сядете играть.
Я пишу о spec-driven development как о методологии — про решения, тулинг, структуру сессий и про то, что это значит за рамками покера — в The Salty Korean. Если инженерная сторона вам интересна, глубокие разборы — там.
Больше о методологии: Using Spec-Driven Development with Claude Code, автор — Heeki Park.
Stay salty.
The Salty Korean
Основатель Salty Poker Network. Пишет о техасском покере, создании платформ и будущем онлайн-покера. Подробнее на The Salty Korean.