go-learn/docs/plans/plan-phase-1.md
sab.code.lab 1c85091186 chore: восстановление репозитория из снапшота v0.3.1
Прежняя git-история утрачена при переносе проекта на машину владельца
(снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной
истории.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 09:34:02 +02:00

40 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# План фазы 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 не переходим без этого.