chore: восстановление репозитория из снапшота v0.3.1
Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
commit
1c85091186
184 changed files with 33303 additions and 0 deletions
95
docs/PROJECT_STATE.md
Normal file
95
docs/PROJECT_STATE.md
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
# PROJECT_STATE — состояние проекта «Сайт обучения Го»
|
||||
|
||||
Обновлено: 2026-08-07 | Версия: 0.3.1 | Сессия: 11 (этап 11)
|
||||
|
||||
## Этапы (по мастер-промпту)
|
||||
|
||||
| Этап | Статус | Комментарий |
|
||||
| -------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| Шаг 0. Методология и каркас | завершено | Триаж — ADR-0001; каркас подтверждён владельцем молчанием (дефолт принят) |
|
||||
| 1. Движок правил (packages/core) | завершено | 43/43 теста, gates зелёные; контракт — docs/INTERFACES.md; выбор алгоритма групп — ADR-0002 (flood fill) |
|
||||
| 2. Доска (Canvas) | завершено | 11 слоёв render, reduceInput, TerritoryMap; тёмная тёплая тема |
|
||||
| 3. ИИ ур. 1–3 (эвристика) | завершено | chooseMove, LEVEL_ATARI_PROBABILITY, детерминизм по seed |
|
||||
| 4. ИИ ур. 4–6 (MCTS, Web Worker) | завершено | UCT c=1.4, бюджеты 300/800/1500 мс, воркер-протокол stateless |
|
||||
| 5. Игровой интерфейс | завершено | /play: партии vs ИИ, подсказки, SGF; hotfix play.html |
|
||||
| 6. Курс + цумэ-го | завершено | 10 уроков, 33 цумэ-го + 7 задач уроков, прогресс/серия дней; 413/413 тестов |
|
||||
| 7. Полировка | завершено | .htaccess, клавиатура/ARIA, reduced-motion, отметка урока, вес ≤300 КБ; 431/431 |
|
||||
| 8. (опц.) PHP+SQLite бэкенд | завершено | Личный кабинет email+пароль (ADR-0004), sync прогресса; smoke.sh зелёный; деплой — docs/deploy.md |
|
||||
| 9. (опц.) KataGo ONNX | заморожен | Не начинать, пока этапы 1–7 не приняты |
|
||||
| 8.1. Кабинет 2.0 | завершено | Регистрация отдельной страницей + SVG-капча, восстановление пароля токеном; smoke 58 проверок |
|
||||
| 10. Дизайн-перенос «васи» | завершено | Светлая тема от Kimi WebSites натянута на каркас; тёмная тема удалена; 467/467; превью — новая версия |
|
||||
| 11. Аудит контента + «Источники» | завершено | 85 утверждений: 70 подтв./10 расх./5 не найдено (docs/audit/); /istochniki.html; 10 правок уроков; 467/467 |
|
||||
|
||||
## Известные проблемы
|
||||
|
||||
- Кабинет в статическом превью показывает «сервер синхронизации
|
||||
недоступен» — by design (API оживает только на хостинге с PHP).
|
||||
- Восстановление пароля — через mail() (этап 8.1); доставляемость на
|
||||
shared-хостинге хрупкая (SPF/DKIM): владельцу проверить тестовое
|
||||
письмо при деплое (шаг в docs/deploy.md). Тема письма — сырой UTF-8
|
||||
без RFC 2047: на части MTA может отображаться некорректно.
|
||||
- PHP-часть вне npm-гейтов: smoke.sh локально (PHP из deb в /tmp) и на
|
||||
хостинге; CI для PHP не настроен.
|
||||
- Риски хостинга от бэкенд-кодера: Secure-cookie за TLS-прокси без
|
||||
HTTPS=on; rate limit по REMOTE_ADDR общий за NAT; WAL на NFS-ФС может
|
||||
быть медленным (busy_timeout=5000 смягчает).
|
||||
- Критерии приёмки v1: №1 (тесты) и №4 (чистый клон/сборка) — зелёные
|
||||
автоматически; №2 (партия vs ур.5), №3 (тайминги ур.3 <50мс, ур.6 <2с),
|
||||
№5 (мобильный Safari) — ручные, ожидают владельца.
|
||||
- Этап 6, ограничения контента v1: все задачи toPlay='black' (parseSgf
|
||||
моделирует от пустой доски с чёрных; виджет умеет инверсию B/W, но
|
||||
контент не использует); мотив снэпбэк невыразим (parseSgf падает на
|
||||
occupied при повторной игре точки); тема «сеть (гэта)» в цумэ-го
|
||||
отсутствует (покрыта текстом урока 2); у two-eyes задач авто-ответ
|
||||
иногда тэнуки (пассивный соперник).
|
||||
- task-session: goal проверяется после КАЖДОГО хода игрока, до авто-ответа
|
||||
(фикс интеграции этапа 6; иначе транзиентные цели liberties недостижимы).
|
||||
- Ссылки ведут на /play.html, сборка с build.format 'file' (hotfix после
|
||||
этапа 5): статические превью-серверы без directory index давали 404 на /play.
|
||||
На Apache с DirectoryIndex работали бы оба варианта, формат 'file' универсальнее.
|
||||
- CI (.github/workflows/ci.yml) написан, но не проверен запуском — репозиторий
|
||||
пока локальный. Первая проверка — после публикации на GitHub.
|
||||
- packages/board без project reference на core (TS6310 при `tsc -b --noEmit`,
|
||||
TS 5.9.3): импорт резолвится через workspace-симлинк. Пересмотреть при
|
||||
обновлении TypeScript или смене скрипта typecheck.
|
||||
- Реальный Worker не принимает cancel во время синхронного счёта (event loop);
|
||||
семантика протокола реализована, но в этапе 5 UI решает: чанкование счёта
|
||||
через setTimeout в воркере или terminate+пересоздание воркера (комментарий
|
||||
в packages/ai/src/worker.ts).
|
||||
- Плейаут MCTS ограничен ~147 сим/300 мс на 9×9: applyMove копирует
|
||||
positionHashes каждый ход (O(n²) в плейауте). Ускорение — только через core,
|
||||
отдельной задачей, если силы ур. 4–6 не хватит на приёмке.
|
||||
- Astro 5.18.2 вместо 7.x: astro 6/7 требуют Node ≥22.12 (hardcoded), у нас
|
||||
Node 20.20.2. Пересмотреть при обновлении Node на машине разработки.
|
||||
- suggestDeadGroups (core) на разрежённых позициях предлагает «мёртвыми»
|
||||
живые группы — грубость заявлена в контракте, ручная корректировка в UI
|
||||
есть; кандидат на уточнение эвристики.
|
||||
- Критерии v1 №2 (партия vs ур.5) и №5 (мобильный Safari) — ручная приёмка
|
||||
владельцем после этапа 7.
|
||||
- Суперко юнит-тест моделирует цикл >2 ходов через сконструированную историю
|
||||
хэшей (настоящее двойное ко громоздко в фикстуре); механизм дополнительно
|
||||
покрыт property-тестом. Отложено: построить настоящую позицию двойного ко
|
||||
на 9×9 — низкий приоритет.
|
||||
- Resign-узлы сериализуются в SGF как пас (в SGF нет хода «сдаюсь») —
|
||||
задокументировано в packages/core/src/sgf.ts, осознанное ограничение.
|
||||
- suggestDeadGroups — грубая эвристика, возможны ложные срабатывания на
|
||||
открытом пространстве; ручная корректировка — за UI (этап 5).
|
||||
- Коми движка 6,5 (19×19) расходится со стандартом китайских правил 7,5
|
||||
(аудит этапа 11, SL ChineseRules/Komi). Урок 05 честно разводит «наши
|
||||
партии» и «стандарт». Владельцу предложено решение (2026-08-07) — ответ
|
||||
«без предпочтений»: оставляем 6,5 как есть; вопрос закрыт до нового
|
||||
решения.
|
||||
|
||||
## Критические долги
|
||||
|
||||
- Нет.
|
||||
|
||||
## Планы (от владельца)
|
||||
|
||||
- Этап 12 (черновик, 2026-08-07): добавить в подвал сайта подпись
|
||||
«сайт сделан sab:core» (формулировка подтверждена владельцем)
|
||||
с логотипом; подпись кликабельна — URL владелец даст позже. Логотип
|
||||
был в соседнем диалоге (сайт с самолётиками) — оркестратору недоступен;
|
||||
владелец загрузит файл в чат. При старте: получить лого (лучше PNG/SVG
|
||||
с прозрачным фоном) и URL; размещение — в футере рядом с privacy-note,
|
||||
спокойный стиль без кричащих элементов.
|
||||
Loading…
Add table
Add a link
Reference in a new issue