6.9 KiB
Журнал ревью — срез 10
Сводка: ../reviewed.md. Индекс среза: README.md.
Срез 10. Этап A — страховка (перепроверка)
- Фазы: 56–57
- Проверен на:
cecd79c, 2026-08-20 - Пути:
tests/HSchool.Architecture.Tests,src/HSchool.Client/package.json,src/HSchool.Client/scripts,AGENTS.md,README.md,docs/design/01-shell/projects.md - Итог: перепроверка после
e2e7d30:git log e2e7d30..HEADпо путям этапа A был пуст — код 56–57 не дрейфовал. Обещания на месте. Дописаны запреты People↛Schedule/Ai, Schedule↛People/Ai, Simulation↛Protocol; вprojects.mdу Simulation добавлен прямойSchedule(как в csproj). Этап B–C в этот проход не входил. - Первая проверка:
e2e7d30, 2026-08-20.
56. Слои одной пачкой
Все шесть пунктов «тестов, без которых фаза не закрыта» есть в LayerBoundaryTests. Копипасты Assembly_DoesNotReference* / Sources_DoNotUseWallClock из People/Ai/Schedule/Simulation.Tests по-прежнему отсутствуют. NetArchTest в solution нет; csproj не ссылается на Server/AppHost. README не называет школу пустой, MaxSchools — слоты игрока. Testing policy в AGENTS.md указывает на HSchool.Architecture.Tests.
dotnet test tests/HSchool.Architecture.Tests --filter FullyQualifiedName~LayerBoundaryTests: 11 зелёных (было 9; плюс People↛Schedule/Ai и Schedule↛People/Ai; Simulation дополнительно без Protocol).
Инвариант 4 и запрет DateTime.Now / UtcNow в шести библиотеках держатся; исходники ловят неиспользованный using System.Net.Http. DateTime.UtcNow есть в HSchool.Server (SwarmUI health) — хост, не слой.
Дописано на перепроверке:
- People не ссылается на Schedule и Ai
- Schedule не ссылается на People и Ai
- Simulation не ссылается на Protocol
projects.md:Simulation → Ai, People, Content, Schedule— граф отставал от csproj; запрет Simulation↛Schedule был бы красным и ложным
57. tsc в npm test
package.json → "test": "node ./scripts/run-test.mjs" по-прежнему гоняет tsc -b, потом vitest, и не глотает код выхода typecheck на Windows. "hschool-client": "file:" в зависимостях нет. test:watch — только vitest. AGENTS.md это описывает. Скрипт build = tsc -b && vite build.
Клиентские пути с e2e7d30 не менялись; src/HSchool.Client в этом проходе не правился, npm test по Testing policy не гонялся.
Открытое
README.md«What is deliberately missing» всё ещё пишет «No authentication» и что диалог создания не выбирает моды — ложь срезов 8 и 1, не этого этапа.- Дубликат ключа проверяется изолированным
tsc -p, неtsc -bживого клиента; проводкаrun-test.mjsпокрыта отдельно. - Этап B–C (58–59) — соседний проход, здесь не перепроверялся.
Срез 10. Этапы B–C — работник, карточка и дамп
- Фазы: 58–59
- Проверен на:
f4f726a, 2026-08-20 - Пути:
src/HSchool.Server/Game/SchoolWorker.cs,src/HSchool.Server/Game/SchoolWorker.Mailbox.cs,src/HSchool.Server/Game/SchoolWorker.Tick.cs,src/HSchool.Server/Game/SchoolWorker.Persist.cs,src/HSchool.Server/Game/PersonCardReader.cs,src/HSchool.Server/Game/PersonCardReader.Overview.cs,src/HSchool.Server/Game/PersonCardReader.Inventory.cs,src/HSchool.Server/Game/PersonCardReader.Connections.cs,src/HSchool.Server/Game/SchoolDumpReader.cs,src/HSchool.Server/Api/DevEndpoints.cs,src/HSchool.Client/src/ui/personCard.ts,src/HSchool.Client/src/ui/personCardHost.ts,src/HSchool.Client/src/ui/personCardOverview.ts,src/HSchool.Client/src/ui/personCardApparel.ts,src/HSchool.Client/src/ui/personCardCarry.ts,src/HSchool.Client/src/ui/personCardNow.ts,src/HSchool.Client/src/ui/personCardConnections.ts,src/HSchool.Client/src/ui/personCardPortrait.ts,src/HSchool.Client/src/ui/personCardDom.ts,tests/HSchool.Server.Tests/SchoolWorkerShapeTests.cs,tests/HSchool.AppHost.Tests/ServiceabilityTests.cs - Итог: обещания 58–59 на месте; тесты из списков фаз есть; код не чинился. Этап A (56–57) в этот проход не входил. 46 и 60 — в работе на момент проверки, как готовые не закрывались.
Что проверено
58. SchoolWorker — один internal sealed partial (почта / тик / запись), тот же LongRunning-поток и тот же mailbox; lock вокруг School/World нет. PersonCardReader.Read(School, personId, locale) — единственный публичный вход; вкладки в partial. Клиент: вкладки в модулях, personCardHost.ts по-прежнему fetchPerson / fetchPersonLog. GameLoopService не резался. Протокол и сейв не тронуты. Карточка: PeopleApiTests.Card_IncludesFamilyAndLiveNeeds, InventoryApiTests.Card_IncludesWornAndCarried_ListDoesNot, Card_ConnectionsCarryOnlyThisPersonsOpinions. UI: personCard.test.ts (вкладки, портрет, связи). Пауза: PausingOneSchool_DoesNotStopAnother. Форма воркера: SchoolWorkerShapeTests (прогнан, 1/1).
59. Dump_ReturnsPeopleNodesAndTimetable нанимает математику, требует идущие часы, ждёт непустой NodeId, отдельно нужды и Lessons Mathematics. На паузе wait сразу красный, не висит. Неизвестный id — 404 unknown-school. JSON дампа и SchoolDumpReader не расширялись; ручка по-прежнему за HSchool:AllowSaveReload; HTTP кладёт DumpSchool в mailbox, World читает только работник.
Что дописано
- (нет — списки фаз закрыты существующими тестами)
Что исправлено
- (нет)
Открытое
- Нет. Этап A (56–57) проверяет соседний проход. 46 и 60 чужие 🔄.