Merge branch 'review/slice-6-recheck'
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # docs/phases/reviewed.md
This commit is contained in:
@@ -17,8 +17,10 @@
|
||||
ломается. Пак может поднять `lunchWeight` выше урока без форка.
|
||||
|
||||
**Золотые файлы ловят то, что раньше ловили глазами.** Отпечаток ростера — файл в фикстурах.
|
||||
Сейв текущего формата и сейв без `nativeLanguage` грузятся тестом хоста. Формат новее своего
|
||||
школу не стартует и файл не трогает.
|
||||
Папки `current/` и `legacy-no-native/` живут как исторический формат 2 (без `countryId`): сам
|
||||
файл школу не стартует. Тест хоста копирует `legacy-no-native/`, ставит сегодняшний формат,
|
||||
страну и владельца и проверяет, что сейв без `nativeLanguage` не перетасовывает набор.
|
||||
Формат новее своего школу не стартует и файл не трогает.
|
||||
|
||||
## Удостоверение пака
|
||||
|
||||
@@ -112,12 +114,9 @@
|
||||
|
||||
## Версия сейва читается
|
||||
|
||||
`Format` штампуется при записи, копируется при чтении и **никогда не сравнивается**. Файл из
|
||||
будущей версии загрузится молча и будет понят неправильно, а места для миграции не предусмотрено.
|
||||
|
||||
Правило то же, что с пропавшей папкой мода: формат новее своего — школу не стартовать, файл не
|
||||
трогать, в лог. Формат старее — явный шов для апгрейда, сегодня пустой, но названный. Пустой
|
||||
именованный шов дешевле, чем попытка вспомнить через полгода, куда его вставлять.
|
||||
`Format` сравнивается при загрузке (`SchoolStore.CanStart`). Правило то же, что с пропавшей
|
||||
папкой мода: формат новее своего — школу не стартовать, файл не трогать, в лог. Формат старее
|
||||
или без страны — тоже не стартовать; шов для апгрейда назван, миграций пока нет.
|
||||
|
||||
## Взгляд внутрь школы
|
||||
|
||||
|
||||
@@ -42,3 +42,45 @@
|
||||
|
||||
- `Dump_ReturnsPeopleNodesAndTimetable` принимает `NodeId is not null || Needs.Count > 0`.
|
||||
Нужды есть у всех, так что узлы на кампусе не проверяются. Усиливать до явки — срез 5.
|
||||
|
||||
## Перепроверка среза 6. Фундамент
|
||||
|
||||
- **Фазы:** 22–28
|
||||
- **Проверен на:** `1ef0517`, 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.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
| Срез 3. Штат | `cf1403e` | [03-staffing](03-staffing/reviewed.md) |
|
||||
| Срез 4. Расписание | `01ef277` | [04-schedule](04-schedule/reviewed.md) |
|
||||
| Срез 5. Жизнь школы | `1118c59` | [05-ai](05-ai/reviewed.md) |
|
||||
| Срез 6. Фундамент | `cbe739a` | [06-foundation](06-foundation/reviewed.md) |
|
||||
| Срез 6. Фундамент | `1ef0517` | [06-foundation](06-foundation/reviewed.md) |
|
||||
| Срез 7. Этап A — данные и гардероб | `d5547b7` | [07-inventory](07-inventory/reviewed.md) |
|
||||
| Срез 7. Этап B–C — климат, жизнь одежды и правила | `5dcdee6` | [07-inventory](07-inventory/reviewed.md) |
|
||||
| Срез 8. Сессия и темп | `1c3ae9a` | [08-session](08-session/reviewed.md) |
|
||||
|
||||
Reference in New Issue
Block a user