Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
62 lines
4.4 KiB
Markdown
62 lines
4.4 KiB
Markdown
# Отчёт сессии 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 (ур.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/<n>.
|