Record slice 8 recheck after later slices drifted session paths.
Promises 38-40 still hold. Ownerless cards now show a bare dash; the journal is a recheck from 1c3ae9a.
This commit is contained in:
@@ -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`).
|
||||
|
||||
Reference in New Issue
Block a user