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

2.6 KiB
Raw Permalink Blame History

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