go-learn/docs/PROJECT_STATE.md
sab.code.lab 6f705fff56
Some checks are pending
CI / npm run gates (ubuntu-latest) (push) Waiting to run
CI / npm run gates (windows-latest) (push) Waiting to run
fix(content): правки по аудиту го-терминологии, отчёт в docs/audit
Аудит 36 терминов по железному правилу этапа 11 (3 research-агента +
приёмка оркестратором, 7 URL перепроверено): docs/audit/terminologija.md.

Исправлены подтверждённые расхождения:
- урок 01: опечатка-гибрид алфавитов «атari» -> «атари»;
- урок 09: диаграмма бамбука (такэфу) — было 4 камня в одну линию,
  верно — две пары на параллельных линиях (ru.wikipedia, jeudego.org);
- урок 06 + «Источники»: «иккэн» -> «иккэн-тоби» (Википедия, BGA);
- «Источники»: убрано приравнивание накадэ к vital point (SL ?Nakade).

На решении владельца (не найдено в источниках, зафиксировано в отчёте
и PROJECT_STATE): «кошачья пасть», «жизненная точка», этимология ко
(«вечность»), «ситё-прерыватель».

Гейты: 467/467.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 11:05:45 +02:00

104 lines
11 KiB
Markdown
Raw 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.

# 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. ИИ ур. 13 (эвристика) | завершено | chooseMove, LEVEL_ATARI_PROBABILITY, детерминизм по seed |
| 4. ИИ ур. 46 (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 | заморожен | Не начинать, пока этапы 17 не приняты |
| 8.1. Кабинет 2.0 | завершено | Регистрация отдельной страницей + SVG-капча, восстановление пароля токеном; smoke 58 проверок |
| 10. Дизайн-перенос «васи» | завершено | Светлая тема от Kimi WebSites натянута на каркас; тёмная тема удалена; 467/467; превью — новая версия |
| 11. Аудит контента + «Источники» | завершено | 85 утверждений: 70 подтв./10 расх./5 не найдено (docs/audit/); /istochniki.html; 10 правок уроков; 467/467 |
## Известные проблемы
- Репозиторий пересоздан с нуля 2026-08-07 на машине владельца (снапшот
v0.3.1 без .git): прежняя git-история утрачена, хэши коммитов в
docs/reports/\* относятся к утраченной истории. Remote —
https://git.sab-core.ru/ShiZa/go-learn.git.
- Кабинет в статическом превью показывает «сервер синхронизации
недоступен» — 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,
отдельной задачей, если силы ур. 46 не хватит на приёмке.
- 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 как есть; вопрос закрыт до нового
решения.
- Аудит терминологии 2026-08-07 (docs/audit/terminologija.md): 36 терминов,
4 расхождения исправлены (атari, диаграмма бамбука, иккэн→иккэн-тоби,
накадэ≠vital point). На решении владельца: «кошачья пасть», «жизненная
точка», этимология ко («вечность»), «ситё-прерыватель» (авторская калька).
## Критические долги
- Нет.
## Планы (от владельца)
- Этап 12 (черновик, 2026-08-07): добавить в подвал сайта подпись
«сайт сделан sab:core» (формулировка подтверждена владельцем)
с логотипом; подпись кликабельна — URL владелец даст позже. Логотип
был в соседнем диалоге (сайт с самолётиками) — оркестратору недоступен;
владелец загрузит файл в чат. При старте: получить лого (лучше PNG/SVG
с прозрачным фоном) и URL; размещение — в футере рядом с privacy-note,
спокойный стиль без кричащих элементов.