Later slices did not touch 56-57 paths. Add remaining projects.md graph bans and document Simulation's direct Schedule reference.
Co-authored-by: Cursor <cursoragent@cursor.com>
- **Итог:** обещания 56–57 на месте; дописаны проверки графа из `projects.md` и запрет AppHost/NetArchTest в csproj; README приведён к `tsc`+vitest. Этап B (58) в работе на момент проверки; 59 в этот проход не входила.
- **В работе на момент проверки:** фаза 58 (этап B).
- **Итог:** перепроверка после `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` и проходят (`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`.
Все шесть пунктов «тестов, без которых фаза не закрыта» есть в `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).
- Content не ссылается на People, Schedule, Ai (таблица `craft.md` их не требовала; граф `projects.md` — да)
- People/Schedule/Ai не ссылаются на Protocol и Simulation
- csproj Architecture.Tests не содержит Server, AppHost, NetArchTest
Инвариант 4 и запрет `DateTime.Now` / `UtcNow` в шести библиотеках держатся; исходники ловят неиспользованный `using System.Net.Http`. `DateTime.UtcNow` есть в `HSchool.Server` (SwarmUI health) — хост, не слой.
Инвариант 4 (Simulation без ASP.NET/сокетов) и запрет `DateTime.Now` / `UtcNow` в шести библиотеках держатся; исходники дополнительно ловят неиспользованный `using System.Net.Http`.
Дописано на перепроверке:
- 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` это описывает.
`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`.
`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» снята: её закрыла эта фаза.
Клиентские пути с`e2e7d30` не менялись; `src/HSchool.Client` в этом проходе не правился, `npm test` по Testing policy не гонялся.
### Открытое
-`README.md` «What is deliberately missing» всё ещё пишет «No authentication» и что диалог создания не выбирает моды — ложь срезов 8 и 1, не этого этапа.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.