Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
54 lines
4.3 KiB
Markdown
54 lines
4.3 KiB
Markdown
# Отчёт сессии 2 (для следующей сессии)
|
||
|
||
Дата: 2026-08-05 | Ветка: main | Этап 2 (доска Canvas) — завершён
|
||
|
||
## Что сделано
|
||
|
||
1. **Контракт packages/board** зафиксирован в docs/INTERFACES.md до кода
|
||
(геометрия, рендер, редьюсер ввода, DOM-адаптер).
|
||
2. **packages/board реализован:** geometry.ts (computeGeometry, pointToPixel,
|
||
pixelToPoint, hoshiPoints 19→9/13→5/9→5), render.ts (render — чистая функция,
|
||
11 слоёв в контрактном порядке, дефолтная тёмная тема, координаты без «I»,
|
||
хоси, фантом, метка последнего хода, номера ходов, разметка LB/TR/SQ/CR,
|
||
заливка территории TerritoryMap, приглушение мёртвых), input.ts (reduceInput:
|
||
тап → фантом, повторный тап или confirm → ход), dom.ts (setupCanvas с DPR,
|
||
attachPointerInput с отпиской).
|
||
3. **Тесты: 74/74** (43 core + 31 board): геометрия, таблица переходов редьюсера,
|
||
инварианты рендера через мок-рекордер ctx, orphan-check.
|
||
4. **Интеграционные правки main loop при приёмке:**
|
||
- TerritoryMap { black, white } вместо префиксной кодировки "w:x,y" —
|
||
контракт синхронизирован;
|
||
- eslint: `no-undef: off` для TS-файлов (typescript-eslint рекомендация,
|
||
DOM-глобалы видит только tsc) — костыльные eslint-disable убраны;
|
||
- в контракте board типы ключей приведены к string (типа PointKey в core нет);
|
||
- вычищены пустые мусорные каталоги `{docs…` от команды с brace-expansion.
|
||
|
||
## Что НЕ сделано
|
||
|
||
- Этапы 3–9 не начаты.
|
||
- Визуальная проверка кадра, pointer-события, мобильный Safari — смоук этапа 5/7
|
||
(записано в матрице «чего НЕ покрывает ни один тест», plan-phase-2).
|
||
- CI на GitHub не запускался (репо локальный).
|
||
|
||
## Подводные камни для следующей сессии
|
||
|
||
- Среда: работать только через `git worktree add $HOME/work-<name> <branch>` из
|
||
/mnt/agents/output/go-learn; $HOME субагента/сессии может быть чистым —
|
||
worktree пересоздавать (`git worktree remove --force <старый путь>` если
|
||
«already checked out»), коммиты в общем .git не теряются. Незакоммиченное
|
||
теряется — коммитить перед концом работы. Контракты дублировать в тексте
|
||
задания субагенту, не только файлами.
|
||
- `tsc -b --noEmit` несовместим с project references (TS6310, TS 5.9.3) —
|
||
packages/board без reference на core, резолв через workspace-симлинк.
|
||
Не «чинить» добавлением reference — сломает гейт с чистого состояния.
|
||
- docs/*.md коммитить только после prettier --write (format-гейт ловит и md).
|
||
- mkdir без фигурных скобок — шелл без brace-expansion плодит мусорные каталоги.
|
||
|
||
## С чего начать продолжение
|
||
|
||
Этап 3 (ИИ ур. 1–3, эвристика): сначала контракт модуля ИИ в docs/INTERFACES.md
|
||
(выбор хода по эвристикам: спасти своё атари → забрать чужое → взвешенный
|
||
случайный ход вблизи хода противника → не заполнять свой глаз → пас; уровни
|
||
0.3/0.6/0.9; RNG — createSeededRng из core), затем код. Решить и записать:
|
||
packages/ai отдельным пакетом или модулем в core — рекомендация: отдельный
|
||
packages/ai (core остаётся чистыми правилами). Создать docs/plans/plan-phase-3.md.
|