Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Отчёт сессии 7 (для следующей сессии)
Дата: 2026-08-06 | Ветка: main | Этап 7 (полировка) — завершён
Что сделано
- Контракты этапа 7 в INTERFACES.md до кода (раздел «Полировка: .htaccess, a11y, бюджет веса») + docs/plans/plan-phase-7.md.
- .htaccess (apps/web/public/.htaccess → dist): AddType application/wasm, mod_deflate (html/css/js/json/svg), mod_expires (_astro 1 год immutable, html no-cache, прочее 1 час), Options -Indexes, DirectoryIndex index.html. HTTPS-редиректа НЕТ (комментарий с gotcha-https-redirect-proxy). Wiring-тест проверяет директивы в dist.
- Клавиатура (/play и go-task): чистый reduceCursor в lib/keyboard.ts (кламп по краям, старт — центр), стрелки/Enter/Space/ Escape через существующий reduceInput (фантом → commit, единая семантика с тачем); курсор — квадратный маркер accent через render.
- A11y: role="status" aria-live="polite" на статусах партии/задачи/ отметки урока; prefers-reduced-motion глушит анимации; :focus-visible outline; контраст посчитан: --text 13.2/11.6, --muted 5.64/4.97 — ≥4.5:1, осветление не потребовалось.
- Отметка «урок пройден»: markLessonDone в storage.ts (чистая, сохраняет tasksSolved авто-done этапа 6, streak через touchStreak) + кнопка на странице урока.
- Бюджет веса: wiring-тест — каждая страница урока ≤300 КБ (самая тяжёлая ~10.3 КБ по формуле контракта, ~42 КБ с транзитивными чанками).
- Гейты main: 431/431 (+12 keyboard, +4 markLessonDone, +2 wiring), 0 lint warnings, astro build PASS, dist 296 КБ. Превью обновлено (version 7f93e64).
Инцидент среды
Финальное сообщение подагента stage-7 не доставлено (alive=0 при посылке), но работа была полностью закоммичена в ветку stage-7 — потерь нет. Правило «коммить всё» сработало как страховка. Независимая проверка гейтов main loop выполнена после мержа.
Состояние критериев приёмки v1
- №1 (тесты движка, суперко, сэки, wiring) — зелёные.
- №3 (тайминги) — частично: perf-smoke в packages/ai (ур.1–3 < 200 мс среднее по 20 вызовам 19×19); полная проверка на ноутбуке владельца.
- №4 (чистый клон собирается) — проверяется каждым воркрием с нуля.
- №2 (партия vs ур.5 до подсчёта) и №5 (мобильный Safari) — ручные, владельцу.
Что осталось (этапы 1–7 завершены)
- Ручная приёмка владельцем (критерии №2, №3, №5).
- По желанию владельца: этап 8 (PHP+SQLite синхронизация прогресса, ОПЦИОНАЛЬНО, требует до-триажа раздела V литании) и этап 9 (KataGo ONNX, «этап мечты», не начинать до приёмки 1–7).
- Кандидаты на уточнение (через ADR, по жалобам): suggestDeadGroups грубовата; контент v1 (снэпбэк невыразим, тема «сеть» только в тексте, двухглазые авто-ответы иногда тэнуки); метрика веса — только прямые ассеты (уточнить при росте).
Подводные камни среды (без изменений)
Worktree в $HOME; коммитить всё перед делегированием и завершением;
контракты inline в задании; prettier на docs; sh без brace expansion;
не git worktree prune; чистка: remove --force + rm .git/worktrees/.