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

62 lines
4.4 KiB
Markdown
Raw Permalink 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.

# Отчёт сессии 7 (для следующей сессии)
Дата: 2026-08-06 | Ветка: main | Этап 7 (полировка) — завершён
## Что сделано
1. **Контракты этапа 7 в INTERFACES.md до кода** (раздел «Полировка:
.htaccess, a11y, бюджет веса») + docs/plans/plan-phase-7.md.
2. **.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.
3. **Клавиатура** (/play и go-task): чистый reduceCursor в
lib/keyboard.ts (кламп по краям, старт — центр), стрелки/Enter/Space/
Escape через существующий reduceInput (фантом → commit, единая
семантика с тачем); курсор — квадратный маркер accent через render.
4. **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, осветление не потребовалось.
5. **Отметка «урок пройден»**: markLessonDone в storage.ts (чистая,
сохраняет tasksSolved авто-done этапа 6, streak через touchStreak) +
кнопка на странице урока.
6. **Бюджет веса**: wiring-тест — каждая страница урока ≤300 КБ (самая
тяжёлая ~10.3 КБ по формуле контракта, ~42 КБ с транзитивными чанками).
7. **Гейты 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 (ур.13 < 200 мс
среднее по 20 вызовам 19×19); полная проверка на ноутбуке владельца.
- 4 (чистый клон собирается) проверяется каждым воркрием с нуля.
- 2 (партия vs ур.5 до подсчёта) и 5 (мобильный Safari) ручные,
владельцу.
## Что осталось (этапы 17 завершены)
- Ручная приёмка владельцем (критерии 2, 3, 5).
- По желанию владельца: этап 8 (PHP+SQLite синхронизация прогресса,
ОПЦИОНАЛЬНО, требует до-триажа раздела V литании) и этап 9 (KataGo
ONNX, «этап мечты», не начинать до приёмки 17).
- Кандидаты на уточнение (через ADR, по жалобам): suggestDeadGroups
грубовата; контент v1 (снэпбэк невыразим, тема «сеть» только в тексте,
двухглазые авто-ответы иногда тэнуки); метрика веса только прямые
ассеты (уточнить при росте).
## Подводные камни среды (без изменений)
Worktree в $HOME; коммитить всё перед делегированием и завершением;
контракты inline в задании; prettier на docs; sh без brace expansion;
не `git worktree prune`; чистка: remove --force + rm .git/worktrees/<n>.