87 lines
6.4 KiB
Markdown
87 lines
6.4 KiB
Markdown
# Журнал ревью
|
||
|
||
Сводка: [`../reviewed.md`](../reviewed.md). Индекс среза: [`README.md`](README.md).
|
||
|
||
## Срез 6. Фундамент
|
||
|
||
- **Фазы:** 22–28
|
||
- **Проверен на:** `cbe739a`, 2026-08-20
|
||
- **Пути:** `src/HSchool.Content` (`PackManifest`, `PackLoadOrder`, `BehaviorDef`),
|
||
`src/HSchool.Server/mods/{core/pack.jsonc,example}`, `src/HSchool.Server/Game/SchoolStore.cs`,
|
||
`src/HSchool.Server/Api/DevEndpoints.cs`, `src/HSchool.Server/Game/SchoolDumpReader.cs`,
|
||
`src/HSchool.People/RosterJson.cs`, `src/HSchool.Client/src/ui/*.test.ts`,
|
||
`tests/HSchool.Content.Tests/{PackIdentityTests,ExamplePackTests,BehaviorDefTests}.cs`,
|
||
`tests/HSchool.People.Tests/GoldenRosterTests.cs`,
|
||
`tests/HSchool.AppHost.Tests/{ExamplePackTests,GoldenSaveTests,SchoolSeedTests,ServiceabilityTests}.cs`
|
||
- **Итог:** все тесты из списков семи фаз на месте; дописан один клиентский; `foundation.md`
|
||
приведён к закрытому срезу. Хостовые тесты сверены по коду, не прогоном.
|
||
|
||
Что подтверждено:
|
||
|
||
- Пак: манифест, `missing-mod`, порядок — выбор игрока плюс топология (не алфавит), цикл —
|
||
`mod-cycle`, def без подписи предупреждает и грузится.
|
||
- `mods/example` на диске; каталог/create/reload; патч только с паком; ваниль без выбора не меняется.
|
||
- Веса в `BehaviorDef`; пак с обедом выше урока уводит класс; отрицательный вес роняет загрузку.
|
||
- Золотой ростер и сейв; `PrimarySchool` требует трёх; `teachersShort` в API и в `t(...)`.
|
||
- Сид — поле школы. Format новее — школа не стартует, файл нетронут. Дамп через снимок + мейлбокс,
|
||
не в `World` с HTTP. `HSchool.Simulation.Tests` без параллельности.
|
||
- Клиентские экраны в `happy-dom`: фильтры/пейджер, create, сетка, предел фонда текстом.
|
||
|
||
Дописано:
|
||
|
||
- `managementPanel.test.ts` — непокрытый предмет показывает `teachersShort`.
|
||
|
||
Исправлено:
|
||
|
||
- `AGENTS.md` утверждал, что на паузе кадры присутствия не приходят. Работник их шлёт
|
||
(occupancy + подписи). Тест, который ждёт *людей* на паузе, зависнет; тест на подпись урока — нет.
|
||
- `../../design/06-foundation/foundation.md`: порядок загрузки — не алфавит; «почему сейчас» про веса в `Decision.cs`
|
||
устарел.
|
||
|
||
Замечено рядом:
|
||
|
||
- `Dump_ReturnsPeopleNodesAndTimetable` принимает `NodeId is not null || Needs.Count > 0`.
|
||
Нужды есть у всех, так что узлы на кампусе не проверяются. Усиливать до явки — срез 5.
|
||
|
||
## Перепроверка среза 6. Фундамент
|
||
|
||
- **Фазы:** 22–28
|
||
- **Проверен на:** `1c63357`, 2026-08-20
|
||
- **Пути:** `src/HSchool.Content` (`PackManifest`, `PackLoadOrder`, `BehaviorDef`, `CatalogLoader`),
|
||
`src/HSchool.Server/mods/{core/pack.jsonc,example}`, `src/HSchool.Server/Game/SchoolStore.cs`,
|
||
`src/HSchool.Server/Api/DevEndpoints.cs`, `src/HSchool.Server/Game/SchoolDumpReader.cs`,
|
||
`src/HSchool.People/RosterJson.cs`, `src/HSchool.Client/src/ui/{gameScreen,peoplePanel,createSchoolDialog,timetableGrid,managementPanel}.test.ts`,
|
||
`tests/HSchool.Content.Tests/{PackIdentityTests,ExamplePackTests,BehaviorDefTests,CatalogLoaderTests}.cs`,
|
||
`tests/HSchool.People.Tests/GoldenRosterTests.cs`,
|
||
`tests/HSchool.AppHost.Tests/{ExamplePackTests,GoldenSaveTests,SchoolSeedTests,ServiceabilityTests}.cs`,
|
||
`docs/design/06-foundation/foundation.md`
|
||
- **Итог:** перепроверка после дрейфа с `cbe739a`. Обещания фаз 22–24, 26–28 держатся.
|
||
Хостовые `GoldenSaveTests` (фаза 25/26), снятые в фазе 39, возвращены под текущий `CanStart`.
|
||
Дамп с фазы 59 ждёт человека на узле — прошлое открытое замечание закрыто кодом среза 10, не этим проходом.
|
||
|
||
Что подтверждено:
|
||
|
||
- Пак, пример, веса, золотой ростер, `teachersShort`, свой сид, формат новее, дамп через мейлбокс,
|
||
экраны в `happy-dom` — те же классы, что в первом проходе. `UnlabelledDef_WarnsButLoads` на месте.
|
||
- `Dump_ReturnsPeopleNodesAndTimetable` больше не принимает «нужды непусты» вместо явки.
|
||
- Формат 2 без страны школу не стартует; сид из `people.json` (в т.ч. равный id) поднимается.
|
||
|
||
Дописано:
|
||
|
||
- `GoldenSaveTests.HistoricFormat2Golden_LeavesTheSchoolUnstartedAndTheFileUntouched`
|
||
- `GoldenSaveTests.SaveWithoutNativeLanguage_LoadsWithoutReshuffling` — штамп format 3 + `countryId` + владелец на копию `legacy-no-native/`
|
||
- `gameScreen.test.ts` — заголовок показывает сид через `t('schoolSeed')`
|
||
|
||
Исправлено:
|
||
|
||
- `foundation.md`: «Format никогда не сравнивается» неверно после `CanStart`; золотые папки — исторический формат 2.
|
||
- `tests/HSchool.AppHost.Tests/golden/README.md` — то же про формат 2 и абстрактный `Underwear` в `current/1.people.json`
|
||
|
||
Открыто:
|
||
|
||
- `current/1.people.json` носит абстрактный `Underwear` (потом разложили на Briefs/Boxers/Panties). Даже со штампом сегодняшнего формата школа не стартует (`RequireKnownApparel`). Переписывать отпечаток одежды в этом срезе не стали — это гардероб.
|
||
|
||
Замечено рядом:
|
||
|
||
- Фаза 39 сняла золотую загрузку в пользу несовместимых сейвов; этот проход вернул узкие тесты, не миграцию формата 2.
|