go-learn/docs/reports/session-3.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

53 lines
4 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.

# Отчёт сессии 3 (для следующей сессии)
Дата: 2026-08-05 | Ветка: main | Этап 3 (ИИ ур. 13, эвристика) — завершён
## Что сделано
1. **Контракт packages/ai** зафиксирован в docs/INTERFACES.md до кода:
chooseMove, AiLevel 13, LEVEL_ATARI_PROBABILITY {1:0.3, 2:0.6, 3:0.9},
приоритеты save-atari → capture-atari → nearby (Chebyshev ≤ 2) → random →
pass, фильтр своего глаза, легальность только через applyMove из core.
2. **packages/ai реализован** (@go-learn/ai 0.1.0): ai.ts (chooseMove, роллы
rng в фиксированном порядке — позиция в потоке не зависит от доски),
candidates.ts (легальные + фильтр глаза), tactics.ts (атари, спасение
по факту «>1 дамэ после хода» — контрзахват покрыт без частных случаев),
pick.ts (равномерный/взвешенный выбор, nearby с весами 2/1).
3. **Тесты: 99/99** (74 + 25 новых): приоритеты на сконструированных позициях
с rng-заглушками (0 / 0.99), фильтр глаза, Error при over, детерминизм
(3 seed × 2 прогона полных партий), 12 партий бот-бот 9×9 до over ≤ 200
ходов с проверкой легальности каждого хода, perf-smoke, orphan-check.
4. **Perf: chooseMove 19×19 ≈ 7.7 мс** (критерий «ур.3 < 50 мс» с запасом).
5. Интеграционная правка main loop: return type в хелперах теста lint
0 warnings (цель литании для нового кода).
## Что НЕ сделано
- Этапы 49 не начаты. Воркер и протокол 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 (ИИ ур. 46, MCTS в Web Worker):
1. Сначала в docs/INTERFACES.md: протокол postMessage (запрос/ответ/отмена,
сериализация позиции, бюджет времени, уровень) И контракт движка MCTS
(UCT, плейауты по эвристикам этапа 3 переиспользовать packages/ai).
2. Бюджеты: ур.4 300 мс, ур.6 1500 мс; таргет 9×9 и 13×13, на 19×19
честное предупреждение в UI (этап 5).
3. Только однопоточный код SharedArrayBuffer требует COOP/COEP, которых
может не быть на шаред-хостинге.
4. Плейауты тоже через seeded Rng реплеи MCTS воспроизводимы.
5. Создать docs/plans/plan-phase-4.md.