chore: восстановление репозитория из снапшота v0.3.1

Прежняя git-история утрачена при переносе проекта на машину владельца
(снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной
истории.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
sab.code.lab 2026-08-07 09:34:02 +02:00
commit 1c85091186
184 changed files with 33303 additions and 0 deletions

53
docs/reports/session-3.md Normal file
View file

@ -0,0 +1,53 @@
# Отчёт сессии 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.