Files
h-school/docs/phases/10-craft/reviewed.md
T
Leonid PershinandCursor 1ba38058d3 Record slice 10 B-C recheck after worker paths drifted.
Speech and dress load landed on SchoolWorker after f4f726a. Lock PersonCardReader to one public Read and journal the recheck.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 17:39:29 +03:00

7.5 KiB
Raw Blame History

Журнал ревью — срез 10

Сводка: ../reviewed.md. Индекс среза: README.md.

Срез 10. Этап A — страховка (перепроверка)

  • Фазы: 5657
  • Проверен на: 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 — работник, карточка и дамп (перепроверка)

  • Фазы: 5859
  • Проверен на: 34f28f9, 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.Server.Tests/PersonCardReaderShapeTests.cs, tests/HSchool.AppHost.Tests/ServiceabilityTests.cs
  • Итог: перепроверка после f4f726a. По путям этапа дрейфовали воркер и ServiceabilityTests: в mailbox/persist пришла речь (фаза 46), DressGenerator.NeedsDressing взял каталог. Обещания 58–59 держатся; lock вокруг School/World нет; дамп по-прежнему ждёт NodeId на идущих часах. Дописан PersonCardReaderShapeTests — единственный публичный Read. Код фаз не чинился. Этап A (56–57) в этот проход не входил.
  • Первая проверка: f4f726a, 2026-08-20.

Что проверено

58. SchoolWorker — один internal sealed partial (почта / тик / запись), тот же LongRunning-поток и тот же mailbox; lock нет. 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 и PersonCardReaderShapeTests (прогнаны, 1/1 каждый). Клиент и Architecture.Tests — этап A, не гонялись.

59. Dump_ReturnsPeopleNodesAndTimetable нанимает математику, требует идущие часы, ждёт непустой NodeId, отдельно нужды и Lessons Mathematics. На паузе wait сразу красный, не висит. Неизвестный id — 404 unknown-school. JSON дампа и SchoolDumpReader не расширялись; ручка по-прежнему за HSchool:AllowSaveReload; HTTP кладёт DumpSchool в mailbox, World читает только работник.

Что дописано

  • PersonCardReader_HasOnePublicRead — рефлексия: один публичный Read(School, personId, locale)

Что исправлено

  • (нет)

Открытое

  • Нет. Этап A (56–57) — соседний проход. TalkCircle и остаток review/slice-9-cd не трогались.