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

54 lines
4.3 KiB
Markdown
Raw 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.

# Отчёт сессии 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.
## Что НЕ сделано
- Этапы 39 не начаты.
- Визуальная проверка кадра, 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 (ИИ ур. 13, эвристика): сначала контракт модуля ИИ в docs/INTERFACES.md
(выбор хода по эвристикам: спасти своё атари → забрать чужое → взвешенный
случайный ход вблизи хода противника → не заполнять свой глаз → пас; уровни
0.3/0.6/0.9; RNG — createSeededRng из core), затем код. Решить и записать:
packages/ai отдельным пакетом или модулем в core — рекомендация: отдельный
packages/ai (core остаётся чистыми правилами). Создать docs/plans/plan-phase-3.md.