Files
h-school/docs/design/projects.md
T
Leonid Pershin a441ed9763
ci / server (push) Failing after 3m37s
ci / client (push) Successful in 14s
Update documentation to enhance clarity on native language and skill generation
- Revised `AGENTS.md` to specify that the same seed, map, name set, and native language must produce the same roster in tests.
- Updated `protocol.md` to clarify that everyone in the school is generated with the selected native language, and related languages may appear at a low skill.
- Enhanced `ai.md` to explain skill growth mechanics based on state and the introduction of minimum ranges for skills not yet acquired.
- Improved `people.md` to detail the generation of skills and traits, emphasizing that not every person receives every skill and the implications of body attributes on skill acquisition.
- Adjusted `projects.md` to reflect the inclusion of native language in roster generation, ensuring comprehensive documentation of project components.
2026-08-19 22:27:20 +03:00

5.2 KiB
Raw Blame History

Нарезка проектов (целевая)

Сейчас в коде: Protocol ← Server → Simulation → Ai → People / Schedule → Content. Каталог не в Simulation (рядом с Arch) и не в Server (рядом с Kestrel) — парсер JSONC и проверка графа не знают, что такое tick.

Зависимости

Protocol          — ни на кого из игровых проектов (только байты)
Content           — ни на Protocol, ни на Simulation, ни на ASP.NET
People            → Content          (defs, карта, склонения; без Arch и хоста)
Schedule          → Content          (раскладка уроков; без Arch и хоста)
Ai                → Content, People, Schedule  (маршруты и решения; без Arch и хоста)
Simulation        → Ai, People, Content  (ростер в World; без HTTP)
Server            → Protocol, Simulation, People, Content
Client            — своя сторона Protocol (TS) + HTTP

Клиент по-прежнему не ссылается на C#-проекты.

Кто чем владеет

Проект Да Нет
HSchool.Content Типы def, JSONC-загрузчик, наследование, патчи, слияние локалей, граф карты, валидация связности Arch, часы, HTTP, потоки, пути mods/ с диска хоста
HSchool.People Генерация ростера: семьи, классы, тело/навыки/черты из каталога, сида и родного языка школы Arch, ASP.NET, сокеты, DateTime.Now, файлы сейва
HSchool.Schedule Раскладка учебного плана в таблицу уроков вокруг закреплённых правок Arch, ASP.NET, сокеты, DateTime.Now, файлы сейва
HSchool.Ai Маршруты по графу карты, план дня человека, выбор цели и действия, продвижение плана во времени Arch, ASP.NET, сокеты, DateTime.Now, файлы сейва
HSchool.Simulation School, GameClock, Arch World, тик, применение раскладки к миру, адаптер к Ai Kestrel, сокеты, Directory.Enumerate, сейв-файлы
HSchool.Server Хост, супервизор, работник-поток, mods/ и saves/ из конфига, HTTP/WS, DTO запросов Правила «комната должна быть связана», схема Chair
HSchool.Protocol Кадры сокета, в том числе снимок карты и locale в Hello Имена комнат, JSONC
HSchool.Client DOM, t() для хрома, рисует снимок Файлы модов, симуляция

Content принимает уже открытые потоки или список документов (сервер прочитал папки и отдал байты/пути через узкий порт вроде «вот корневые каталоги этих id»). Тогда тесты Content кормят фикстурами из tests/, без appsettings.

Сейв: форма (часы + id модов + раскладка) собирается из типов Simulation/Content; запись файла — Server, и только с потока работника.

Зачем не сваливать в Simulation

Arch и фиксированный тик — про живую школу. Парсер JSONC, defName и проверка графа не знают, что такое tick. Их гоняют сотни раз в юните без мира. Если загрузчик сидит в Simulation, любой тест каталога тащит ECS и наоборот.

Зачем не сваливать в Server

Иначе связность карты и last-wins нельзя проверить без Aspire. Хост должен быть тонким: найти папки, сериализовать HTTP, крутить потоки.

Тесты

  • tests/HSchool.Content.Tests — фикстуры JSONC, коллизии имён, дырявый граф, двор обязателен.
  • tests/HSchool.People.Tests — тот же сид даёт тот же ростер; места и должности заполнены.
  • tests/HSchool.Schedule.Tests — тот же штат и карта дают ту же таблицу; четыре запрета.
  • tests/HSchool.Ai.Tests — путь между комнатами и его цена; те же входы дают то же решение.
  • HSchool.Simulation.Tests — часы, тик, «школа с таким каталогом живёт».
  • HSchool.AppHost.Tests — create с картой, рестарт, сейв на диске.

Ориентир в AGENTS.md обновить в фазе, которая заводит проект (сейчас это фаза 3).