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

4.3 KiB
Raw Permalink Blame History

Отчёт сессии 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.