Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
53 lines
4 KiB
Markdown
53 lines
4 KiB
Markdown
# Отчёт сессии 3 (для следующей сессии)
|
||
|
||
Дата: 2026-08-05 | Ветка: main | Этап 3 (ИИ ур. 1–3, эвристика) — завершён
|
||
|
||
## Что сделано
|
||
|
||
1. **Контракт 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.
|
||
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 (цель литании для нового кода).
|
||
|
||
## Что НЕ сделано
|
||
|
||
- Этапы 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):
|
||
|
||
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.
|