Record slice 7 B-C recheck after later slices drifted climate and dress paths.

Adds a weather-drop walk test so a jacket is not teleported onto the body; PE change regressions already red on main stay open.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 16:17:45 +03:00
co-authored by Cursor
parent 505bcc6912
commit 118d1815d8
5 changed files with 150 additions and 28 deletions
+45 -26
View File
@@ -58,48 +58,67 @@
берёт первую страну каталога — это create, не сейв.
- Этап B–C в этом проходе не проверялся.
## Срез 7. Этап B–C — климат, жизнь одежды и правила
## Срез 7. Этап B–C — климат, жизнь одежды и правила (перепроверка)
- **Фазы:** 3237
- **Проверен на:** `5dcdee6`, 2026-08-20
- **Пути:** `src/HSchool.Simulation/{WeatherSampler,WarmthDecay,PlaceClimate,ApparelDresser,ApparelWear,MorningDress,PersonLogBrowser}.cs`,
- **Проверен на:** `505bcc6`, 2026-08-20**перепроверка** после `5dcdee6`
- **Пути:** `src/HSchool.Simulation/{WeatherSampler,WarmthDecay,PlaceClimate,ApparelDresser,ApparelWear,MorningDress,PersonLogBrowser,School}.cs`,
`src/HSchool.People/LockerAssigner.cs`, `src/HSchool.Content/{Appropriateness,ClimatePreset,DressRules}.cs`,
`src/HSchool.Ai/ApparelGoals.cs`, `src/HSchool.Protocol`, `src/HSchool.Server/Api/{SchoolEndpoints,DressRulesModels}.cs`,
`src/HSchool.Server/Game/{PersonCardReader,SchoolWorker}.cs`, `src/HSchool.Client/src/{ui/dressRulesPanel.ts,ui/managementPanel.ts,format/weather.ts,net/api.ts}`,
`src/HSchool.Server/Game/{PersonCardReader,SchoolWorker.Tick}.cs`, `src/HSchool.Client/src/{ui/dressRulesPanel.ts,ui/managementPanel.ts,format/weather.ts,net/api.ts}`,
`docs/protocol.md`, `tests/HSchool.Simulation.Tests`, `tests/HSchool.People.Tests/LockerAssignerTests.cs`,
`tests/HSchool.Content.Tests/{ClimatePresetTests,AppropriatenessTests,ChangingRoomMapTests}.cs`,
`tests/HSchool.AppHost.Tests/{PersonLogApiTests,DressRulesApiTests}.cs`, `tests/HSchool.Protocol.Tests`,
`src/HSchool.Client/src/ui/{personCard,dressRulesPanel,managementPanel}.test.ts`
- **Итог:** фазы 3237 подтверждены; дописано 5 тестов симуляции; исправлены 2 бага переодевания и 2
регрессии тестов (не протокол)
- **Итог:** обещания 3237 после дрейфа (сессия, разговоры, сплит воркера и карточки, протокол v9)
в целом держатся; дописан тест «куртка не телепортируется»; три PE-теста прошлого прохода
красные на текущем main — открыто
Что подтверждено:
- **3236:** погода детерминирована; skip выставляет утро; кадр часов v8 (27 байт) в трёх местах;
`Warmth` и техник; шкафчики; износ и утренняя замена; уместность и PE; вкладки карточки и HTTP-лог.
- **37:** вкладка «Правила» в «Управлении»; четыре комбобокса; GET/POST `dress-rules` с pending;
`unknown-form`/`unknown-color``400`; правило с завтра; `ColorAllowed` для `whiteTopBlackBottom`;
`dressRulesPanel.test.ts` — combobox без API до Apply, ошибка текстом; `ManagementPanel` не ломает штат
и сетку.
- **32:** тот же пресет+сид+время → та же улица; январь холоднее июля; ниже нуля снег;
skip ставит утро понедельника, не субботу; naked на морозе теряет `Warmth`, дома возвращает;
кадр часов 27 байт (tenths + precipitation) в `ProtocolCodec` / `protocol.ts` / `docs/protocol.md`;
клиент рисует кадр, не считает месяц (`weather.test.ts`); Hello со старой версией отваливается.
Версия протокола сейчас 9 (круги разговоров), раскладка часов не менялась.
- **33:** кабинет без техника теплее улицы и холоднее, чем с техником; в июле техник держит
ниже улицы; две раздевалки, граф связен; 10 шкафчиков — старшие девочки; мальчик не в
девичьей; выпускник слот не держит; `ChangingSpot` (4) отдельно от шкафчиков.
- **34:** час на теле снижает прочность на `ApparelWearPerHour`; сумка и шкафчик нет;
skip через ночь = прожитая ночь; подпись порогов с сервера, клиент не считает.
- **35:** «без яркого» утром; короткая форма и возраст; PE: доходят до своей раздевалки
(`PeBreak_PupilReachesOwnChangingRoom`); мальчик не в женской; без шкафчика снятое в сумку;
мороз — `Outer`, в июле шубы нет; pending правило с завтра. Куртка при смене погоды не
телепортируется (урок держит, длинная перемена — ходьба и смена).
- **36:** лог не в карточке; страницы не пересекаются; 404 unknown-person; после 6:00 вчера
пусто; вкладка «Одежда» без таблицы лога; «Сейчас» вне школы — «дома».
- **37:** GET дефолт обычная/без яркого; POST unknown-form/color → 400; вкладка не ломает штат
и сетку; четыре комбобокса одежды на месте (речь среза 9 рядом, не вместо).
Дописано (32–36, прошлый проход):
Дописано:
- `AppropriatenessSimulationTests.MorningDress_StagesPeKitForTodaysLesson`
- `AppropriatenessSimulationTests.PeBreak_CompletesChangeBeforeLesson`
- `AppropriatenessSimulationTests.PeLesson_WearsPeThenReturnsToEveryday`
- `AppropriatenessSimulationTests.AfterPeBreak_ModeExpectsEveryday`
- `PresenceTests.PhysicalEducationBeforeLesson_GoesToChangingRoomOnTheBreak`
- `AppropriatenessSimulationTests.WeatherDrop_WalksToChangingRoom_DoesNotTeleportJacket`
- `personCard.test.ts``hasLocker: true` показывает «есть шкафчик»
Исправлено:
- `PresenceSystem`: ходьба по duty не обрывает активный `ChangeClothes`.
- `ApparelPresence.ModeAt`: после перемены following PE — режим everyday.
- `managementPanel.test.ts`: панель штата скрывается через `hidden`, не удаляется из DOM.
- `PortraitApiTests.GetSwarmUiSettings_ReturnsPresets`: URL `/api/settings/swarmui` (CS1503).
- `dressRulesPanel.ts`: неиспользуемый импорт `clear` — TS6133 на `npm run build`.
- (кода симуляции PE не меняли: попытка починить звонок/очередь в раздевалке не закрыла
красные PE-тесты; правки откатили)
Открыто:
- `PeBreak_CompletesChangeBeforeLesson`, `PeLesson_WearsPeThenReturnsToEveryday`,
`AfterPeBreak_ModeExpectsEveryday` красные уже на `505bcc6` без правок этого прохода.
В 9:24 ученик в своей раздевалке, к 9:30 — в зале в футболке: 4 `ChangingSpot`, звонок
(duty 10 > одежда 6) уводит до `ChangeClothes`; праздные в комнате не перерешаются, когда
место освобождается. Это дрейф после разговоров/конфликта, не чинили молча в срезе 9.
- Короткая уместность на вкладке «Одежда» по-прежнему прочерк: сервер не шлёт подпись
(`«к уроку»` / `«холодно»` / `«не по форме»`). Молча расширять HTTP ревью не стало.
- Короткой перемены (10 мин) с дальнего кабинета не хватает дойти и переодеться; тест погоды
идёт через длинную после 3 урока.
Замечено рядом:
- `PhysicalEducationBeforeLesson_…` не гоняет полный цикл «зал с формой» — это в
`AppropriatenessSimulationTests.PeLesson_…`.
- Портреты/SwarmUI — вне среза 7, но `PortraitApiTests` чинился, чтобы AppHost-сборка не падала.
- `dressRulesPanel` рисует ещё комбобоксы речи (срез 9) — четыре комбобокса одежды на месте.
- Кадр часов остался 27 байт при PROTOCOL_VERSION 9.
- AppHost `PersonLogApiTests` / `DressRulesApiTests` в этом проходе не гонялись (хост).