Files
h-school/docs/phases/01-shell/reviewed.md
T
2026-08-20 14:34:20 +03:00

90 lines
6.4 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.
# Журнал ревью
Сводка: [`../reviewed.md`](../reviewed.md). Индекс среза: [`README.md`](README.md).
## Перепроверка среза 1 (после одежды / сессии / общения)
- **Фазы:** 04
- **Проверен на:** `f6bb4c7`, 2026-08-20
- **Пути:** `src/HSchool.Client`, `src/HSchool.Protocol`, `src/HSchool.Content`,
`src/HSchool.Server/Game`, `src/HSchool.Server/Api/ModEndpoints.cs`,
`src/HSchool.Server/Api/SchoolEndpoints.cs`, `src/HSchool.Server/Net`,
`tests/HSchool.Content.Tests`, `tests/HSchool.Protocol.Tests`,
`tests/HSchool.AppHost.Tests/SchoolApiTests.cs`, `tests/HSchool.AppHost.Tests/GameSocketTests.cs`,
`tests/HSchool.AppHost.Tests/ServiceabilityTests.cs`
- **Итог:** перепроверка; `git log 418a4ea..HEAD` по путям среза непустой (одежда, сессия, общение,
ремесло). Обещания фаз 0–4 целы. Дописаны 3 теста. Код не чинился. Фазы 60 и 61 не закрывались.
Что подтверждено (после дрейфа):
- PixiJS нет в `package.json` и в клиентском коде. Дерево карты, пять секций локации, клиентский
фильтр, `localize()`. Оболочка — вкладки Карта/Люди; отказ от ленты событий в фазе 1 и
`design/near-term.md`.
- `SchoolWorker``LongRunning`, свой `World`, аккумулятор `MaxCatchUpSteps = 5`. Супервизор
таблицу держит и `World` не трогает (фаза 58 разрезала файл, не поток). Сейв на
create/shutdown/`SaveInterval`; `ReloadFromDisk_RestoresAPausedClock`,
`PausingOneSchool_DoesNotStopAnother`.
- Каталог/карта: JSONC, last-wins, parent/abstract, патчи, связность, пустая комната, отказ без
двора, ванильная раскладка. Нет папки мода — школу не стартовать, файл не трогать
(`SchoolContentUnavailableException`, `persist: false`, `RememberIncompatible`).
- `GET /api/mods`, каталог `?lang=`, create с картой и модами, снимок при OpenSchool. `core` в
диалоге нельзя снять. Кодек, `protocol.ts` и `docs/protocol.md` — один `MapSnapshot` (протокол v9,
бамп поздних срезов, раскладка снимка та же).
- `modal.ts` резолвит промис явно; `.dialog--screen``height: fit-content`;
`DefaultStartDate` UTC; `MapSnapshotSize` от сообщения; outbox `DropOldest`;
`WaitToReadAsync` переносится между итерациями; меню патчит `card.update`.
Дописано на этом проходе:
- `gameScreen.test.ts` — клик по дереву фильтрует панель локации на клиенте
- `gameScreen.test.ts``localize()` обновляет пустые секции локации
- `ServiceabilityTests.MissingModFolder_LeavesTheSchoolUnstartedAndTheFileUntouched`
Исправлено:
- ничего: расхождений с дизайном среза 1, которые надо было чинить кодом, не нашлось.
Открытое:
- срезы 2–6 в сводке всё ещё на старых коммитах — дрейф после одежды/сессии/общения; не этот проход.
- фазы 60 и 61 (портреты) в работе; ревью их не закрывало.
## Срез 1. Оболочка и карта
- **Фазы:** 04
- **Проверен на:** `418a4ea`, 2026-08-20
- **Пути:** `src/HSchool.Client`, `src/HSchool.Protocol`, `src/HSchool.Content`,
`src/HSchool.Server/Game`, `src/HSchool.Server/Api/ModEndpoints.cs`,
`src/HSchool.Server/Api/SchoolEndpoints.cs`, `src/HSchool.Server/Net`,
`tests/HSchool.Content.Tests`, `tests/HSchool.Protocol.Tests`,
`tests/HSchool.AppHost.Tests/SchoolApiTests.cs`, `tests/HSchool.AppHost.Tests/GameSocketTests.cs`
- **Итог:** обещания фаз 0–4 целы; дописаны 3 теста; протокол v7 в трёх местах
Что подтверждено:
- PixiJS нет; дерево карты, пять секций локации, клиентский фильтр, `localize()`. Оболочка —
вкладки Карта/Люди, не три панели; отказ от ленты событий записан в фазе 1 и в `design/near-term.md`.
- `SchoolWorker``LongRunning`, свой `World`, аккумулятор с потолком 5. Супервизор таблицу
держит и `World` не трогает. Сейв на create/shutdown/`SaveIntervalSeconds`;
`ReloadFromDisk_RestoresAPausedClock`, `PausingOneSchool_DoesNotStopAnother`.
- Восемь тестов каталога/карты в `HSchool.Content.Tests`. Ванильная раскладка валидна.
Пропавшая папка мода не стартует школу и файл не трогает.
- `GET /api/mods`, каталог, create с картой и модами, снимок при OpenSchool. `core` в диалоге
создания нельзя снять. Кодек, `protocol.ts` и `docs/protocol.md` описывают один `MapSnapshot`.
- `modal.ts` резолвит промис явно; `.dialog--screen``height: fit-content`;
`DefaultStartDate` UTC; `MapSnapshotSize` от сообщения; outbox `DropOldest`;
`WaitToReadAsync` переносится между итерациями; меню патчит `card.update`.
- Родной язык — HTTP/JSON без бампа протокола. Старый сейв без поля берёт первый язык набора,
не бросает кубик (`ReloadWithoutASavedPick_TakesTheFirstLanguageInsteadOfRolling`).
Дописано:
- `SchoolApiTests.Catalog_WithAnUnknownMod_IsRejected`
- `SchoolApiTests.ModId_ThatEscapesTheModsFolder_IsRejectedOnBothEndpoints`
- `SkillGrantTests.ReloadWithoutASavedPick_TakesTheFirstLanguageInsteadOfRolling`
Исправлено:
- Два поля `speedIndex` в клиентском `School` (`api.ts`) — артефакт мержа фазы 26; vitest не
ловил, `npm run build` падал с TS2300.