# План фазы 1: этап 1 — движок правил (packages/core) Обновлено: 2026-08-05 | Статус: завершена (этап 1 принят, гейты зелёные) ## Критические долги (реестр — в начале, III.5) - Нет. ## Ключевые решения (не пере-решать) - Профиль проекта M, триаж литании — ADR-0001. - Подсчёт — китайские правила (Tromp-Taylor), не японские: однозначно алгоритмизируется. - Группы/дамэ: flood fill или union-find — выбрать по бенчмарку в этапе 1, выбор — в ADR. - Ко: простое ко + позиционное суперко (оба, суперко нужен для китайских правил). - Определение мёртвых групп — отдельная функция + ручная корректировка игроком, не авто-анализ. ## Объём этапа 1 1. Доски 9×9, 13×13, 19×19; позиция — типизированный массив. 2. Группы и дамэ, снятие камней, запрет самоубийства (кроме самоубийства с захватом), простое ко и суперко. 3. Подсчёт Tromp-Taylor; коми 6.5 (19×19) / 5.5 (9×9); сэки обрабатывается корректно. 4. SGF FF[4]: парсер и генератор (ходы, вариации, комментарии, разметка LB/TR/SQ/CR). 5. История с откатом и ветвлением. 6. Контракты — сначала в docs/INTERFACES.md, потом код. 7. Бенчмарк flood fill vs union-find → ADR-0002. ## Тесты (гейт приёмки этапа) - Захват камня и группы; запрет самоубийства; самоубийство с захватом (легально); простое ко; суперко; сэки при подсчёте; ничья. - Wiring: orphan-check «кто вызывает» по каждой публичной функции ядра (`gotcha-green-modules-dead-system`). - Интеграционный тест полной партии (по заранее записанной SGF). - Property-based тесты инвариантов (fast-check): инварианты — в docstring функций. ## Критерий выхода Все тесты зелёные + `npm run gates` зелёный. К этапу 2 не переходим без этого.