Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4 KiB
4 KiB
Отчёт сессии 3 (для следующей сессии)
Дата: 2026-08-05 | Ветка: main | Этап 3 (ИИ ур. 1–3, эвристика) — завершён
Что сделано
- Контракт packages/ai зафиксирован в docs/INTERFACES.md до кода: chooseMove, AiLevel 1–3, LEVEL_ATARI_PROBABILITY {1:0.3, 2:0.6, 3:0.9}, приоритеты save-atari → capture-atari → nearby (Chebyshev ≤ 2) → random → pass, фильтр своего глаза, легальность только через applyMove из core.
- packages/ai реализован (@go-learn/ai 0.1.0): ai.ts (chooseMove, роллы rng в фиксированном порядке — позиция в потоке не зависит от доски), candidates.ts (легальные + фильтр глаза), tactics.ts (атари, спасение по факту «>1 дамэ после хода» — контрзахват покрыт без частных случаев), pick.ts (равномерный/взвешенный выбор, nearby с весами 2/1).
- Тесты: 99/99 (74 + 25 новых): приоритеты на сконструированных позициях с rng-заглушками (0 / 0.99), фильтр глаза, Error при over, детерминизм (3 seed × 2 прогона полных партий), 12 партий бот-бот 9×9 до over ≤ 200 ходов с проверкой легальности каждого хода, perf-smoke, orphan-check.
- Perf: chooseMove 19×19 ≈ 7.7 мс (критерий «ур.3 < 50 мс» с запасом).
- Интеграционная правка main loop: return type в хелперах теста — lint 0 warnings (цель литании для нового кода).
Что НЕ сделано
- Этапы 4–9 не начаты. Воркер и протокол postMessage — этап 4 (по контракту).
Подводные камни для следующей сессии
- Среда: git worktree в $HOME, пересоздание (
git worktree remove --forceпри «already checked out»), коммитить всё перед концом — незакоммиченное теряется; контракты дублировать в тексте задания субагенту. - packages без project references на core (TS6310 при
tsc -b --noEmit) — резолв через workspace-симлинк; не «чинить». - docs/*.md — через prettier --write перед коммитом (format-гейт).
- Ролл-семантика chooseMove задокументирована в шапке ai.ts: два ролла на ход всегда — менять порядок/число роллов = менять воспроизводимость партий, только через ADR.
- Порог perf-теста 200 мс — машинно-зависимый; не ужесточать в CI.
С чего начать продолжение
Этап 4 (ИИ ур. 4–6, MCTS в Web Worker):
- Сначала в docs/INTERFACES.md: протокол postMessage (запрос/ответ/отмена, сериализация позиции, бюджет времени, уровень) И контракт движка MCTS (UCT, плейауты по эвристикам этапа 3 — переиспользовать packages/ai).
- Бюджеты: ур.4 — 300 мс, ур.6 — 1500 мс; таргет 9×9 и 13×13, на 19×19 — честное предупреждение в UI (этап 5).
- Только однопоточный код — SharedArrayBuffer требует COOP/COEP, которых может не быть на шаред-хостинге.
- Плейауты тоже через seeded Rng — реплеи MCTS воспроизводимы.
- Создать docs/plans/plan-phase-4.md.