diff --git a/docs/phases/08-session/reviewed.md b/docs/phases/08-session/reviewed.md index 670ece3..02836a6 100644 --- a/docs/phases/08-session/reviewed.md +++ b/docs/phases/08-session/reviewed.md @@ -32,3 +32,32 @@ - `AddDataProtection()` без ключей рядом с `saves/`. Рестарт того же профиля Windows куки, скорее всего, не сбрасывает; новый контейнер — может. - Текст фазы 39 пишет `limit-reached`; живой код и `protocol.md` — `school-limit-reached` (так было до среза). Не менялось. - Бесхозная карточка показывает «Хозяин: —», не голый прочерк. `GET /api/schools/{id}` из дизайна нет: `mine`/`owner` живут в списке меню. + +## Перепроверка. Срез 8. Сессия и темп + +- **Фазы:** 38–40 +- **Проверен на:** `5490cfb`, 2026-08-20 +- **Пути:** `src/HSchool.Server/{Session,Api/SessionEndpoints.cs,Api/SchoolAccess.cs,Game/SchoolOwnership.cs,Game/UserStore.cs,Game/SchoolStore.cs,Net/ClientRegistry.cs,Net/GameSocketHandler.cs,Game/GameLoopService.cs}`, `src/HSchool.Simulation/{ClockSpeed.cs,GameClock.cs,School.cs,SimulationOptions.cs}`, `src/HSchool.Client/src/{ui/sessionGate.ts,ui/mainMenu.ts,ui/gameScreen.ts,ui/schoolCard.ts,net/protocol.ts,net/api.ts,main.ts}`, `docs/protocol.md`, `../../design/08-session/session.md`, `tests/HSchool.AppHost.Tests/{SessionApiTests.cs,SchoolOwnerApiTests.cs,GameSocketTests.cs}`, `tests/HSchool.Simulation.Tests/{ClockTempoTests.cs,GameClockTests.cs}`, `tests/HSchool.Server.Tests/SchoolStoreTests.cs`, `src/HSchool.Client/src/ui/{sessionGate,gameScreen,schoolCard,mainMenu}.test.ts` +- **Итог:** перепроверка после дрейфа с `1c3ae9a`. Обещания 38–40 держатся; `users.json` больше не читается как сейв школы; бесхозная карточка показывает голый прочерк. Следующий срез не брался. + +Что подтверждено: + +- Дрейф после `1c3ae9a`: `UserStore.FileName` открыт для `SchoolStore.LoadAll` (пропуск `users.json`); `GameLoopService` / `School.Tick` получили речь и talk-circle на страйде тяжёлых систем. Сессия, хозяин, таблица скоростей и `TryClaimUserName` не разъехались. +- Все тесты из списков фаз 38–40 на месте: сессия 401/200, `users.json` и регистр, `name-online`, сокет без куки и второй сокет `PolicyViolation`, клиентский пароль без сетки; два игрока по две школы / `server-full` / гость 403 и `SetRunning` / бесхозная в `others`; ×1 = 1 минута, индексы 3/4, страйд ×5/×10, индекс 5, пять кнопок. +- Протокол на проводе сейчас v9 (срез 9, talk-circle); раскладка Hello/Welcome/`SetSpeed` и смысл `MaxSchools` не менялись. `HSchool.Simulation` без ASP.NET. Воркер 20 Гц, потолок догона 5. + +Дописано: + +- `ClockTempoTests.LowSpeed_EveryImpulseRunsHeavySystems` — ×½ и ×2 каждый импульс, не только ×1 +- `schoolCard.test.ts` — бесхозная карточка с голым прочерком, не «Хозяин: —» + +Исправлено: + +- Бесхозная карточка оборачивала «—» в шаблон «Хозяин: {owner}». Меню теперь отдаёт уже готовую подпись: чужая — «Хозяин: Bob», бесхозная — «—». + +Открыто: + +- `POST /api/session` с другим именем при живой куке перезаписывает сессию без `DELETE`. Дизайн: «Без выхода второе имя с той же куки не взять». Кода ошибки нет — новый HTTP-код молча не вводился. +- `AddDataProtection()` без ключей рядом с `saves/`. Рестарт того же профиля Windows куки, скорее всего, не сбрасывает; новый контейнер — может. +- Текст фазы 39 пишет `limit-reached`; живой код и `protocol.md` — `school-limit-reached` (так было до среза). Не менялось. +- `GET /api/schools/{id}` из дизайна нет: `mine`/`owner` живут в списке меню (`schoolFromList`). diff --git a/docs/phases/reviewed.md b/docs/phases/reviewed.md index 2499339..537fef3 100644 --- a/docs/phases/reviewed.md +++ b/docs/phases/reviewed.md @@ -28,7 +28,7 @@ | Срез 6. Фундамент | `1c63357` | [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) | +| Срез 8. Сессия и темп | `5490cfb` | [08-session](08-session/reviewed.md) | | Срез 9. Этапы A–B — мнения и разговоры | `b38d0bb` | [09-social](09-social/reviewed.md) | | Срез 9. Этапы C–D — конфликт, присутствие, речь и romance | `19554d4` | [09-social](09-social/reviewed.md) | | Срез 10. Этап A — страховка | `e2e7d30` | [10-craft](10-craft/reviewed.md) |