6.9 KiB
Журнал ревью — срез 10
Сводка: ../reviewed.md. Индекс среза: README.md.
Срез 10. Этап A — страховка
- Фазы: 56–57
- Проверен на:
e2e7d30, 2026-08-20 - Пути:
tests/HSchool.Architecture.Tests,src/HSchool.Client/package.json,src/HSchool.Client/scripts,AGENTS.md,README.md - Итог: обещания 56–57 на месте; дописаны проверки графа из
projects.mdи запрет AppHost/NetArchTest в csproj; README приведён кtsc+vitest. Этап B (58) в работе на момент проверки; 59 в этот проход не входила. - В работе на момент проверки: фаза 58 (этап B).
56. Слои одной пачкой
Все шесть пунктов «тестов, без которых фаза не закрыта» есть в LayerBoundaryTests и проходят (dotnet test tests/HSchool.Architecture.Tests --filter FullyQualifiedName~LayerBoundaryTests: 9 зелёных). Копипасты Assembly_DoesNotReference* / Sources_DoNotUseWallClock из People/Ai/Schedule/Simulation.Tests уехали. NetArchTest в solution нет; проект не ссылается на Server/AppHost. README больше не называет школу пустой, MaxSchools — слоты игрока. Testing policy в AGENTS.md указывает на HSchool.Architecture.Tests.
Дописано:
- Content не ссылается на People, Schedule, Ai (таблица
craft.mdих не требовала; графprojects.md— да) - People/Schedule/Ai не ссылаются на Protocol и Simulation
- csproj Architecture.Tests не содержит Server, AppHost, NetArchTest
Инвариант 4 (Simulation без ASP.NET/сокетов) и запрет DateTime.Now / UtcNow в шести библиотеках держатся; исходники дополнительно ловят неиспользованный using System.Net.Http.
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 это описывает.
npm --prefix src/HSchool.Client test -- scripts/npm-test.test.ts на текущем дереве: tsc молча зелёный, 5 vitest зелёных (включая дубликат ключа в копии strings.ts → TS1117/TS2300 без vite build).
Дописано:
- скрипт
buildпо-прежнемуtsc -b && vite build(самvite buildне гонялся)
README теперь говорит, что npm test = tsc + Vitest. Оговорка в сводке «vitest зелёный при красном tsc» снята: её закрыла эта фаза.
Открытое
README.md«What is deliberately missing» всё ещё пишет «No authentication» и что диалог создания не выбирает моды — ложь срезов 8 и 1, не этого этапа.- Дубликат ключа проверяется изолированным
tsc -p, неtsc -bживого клиента; проводкаrun-test.mjsпокрыта отдельно. - Фаза 58 (этап B) в работе — не проверялась. Фаза 59 (этап C) в этот проход не входила.
Срез 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 чужие 🔄.