Update AGENTS.md to correct the behavior of presence frames during school pauses, clarify the design documentation regarding mod load order, and add a new test for uncovered teaching positions in the management panel. Enhance reviewed phase details for accuracy and completeness.
ci / server (push) Failing after 3m48s
ci / client (push) Successful in 42s

This commit is contained in:
Leonid Pershin
2026-08-20 02:57:13 +03:00
parent cf086600c3
commit ed80aa5d08
4 changed files with 119 additions and 22 deletions
+10 -18
View File
@@ -1,11 +1,7 @@
# Фундамент: паки, числа, сид, версия и золотые файлы
Договорённость на срез после жизни школы. Не текущий код — то, что решено сделать.
Срез не добавляет игроку ни одной новой кнопки. Он берёт то, что ревью нашло дешёвым и заметным,
и доводит до конца: мод становится настоящим объектом, числа поведения уезжают из кода в данные,
сид перестаёт быть идентификатором школы, у сейва появляется читаемая версия, а регрессии, которые
сейчас ловятся только глазами, начинают ловиться тестом.
Договорённость на срез после жизни школы. Срез закрыт фазами 22–28; таблица внизу — решения.
Абзацы «почему сейчас» ниже описывают дыры, которые срез закрыл, а не текущий код.
## Почему сейчас
@@ -16,17 +12,13 @@
маленький скучный пак на диске, чтобы last-wins, патчи и дорога «игрок выбрал мод» проверялись
настоящей папкой, а не документами в памяти.
**Числа поведения живут в коде вопреки [`ai.md`](ai.md).** Там записано: «Числа поведения —
отдельный деф правил, как `StaffingDef` у штата». В `BehaviorDef` уехали порог нужды, скорость
обучения и разброс на дорогу, а веса целей остались константами в `Decision.cs`. Пока они там, мод
не может перебалансировать поведение, не написав кода, — а это ровно то обещание, ради которого
заводились дефы.
**Числа поведения уехали в `BehaviorDef`.** Порог нужды, обучение, разброс на дорогу и веса целей
(урок, переход, нужда на нуле, обед) — данные. Каталог без дефа падает на константы кода, а не
ломается. Пак может поднять `lunchWeight` выше урока без форка.
**Две регрессии ловятся руками.** Генератор людей переписывали дважды за одну сессию ревью, а
тест на детерминизм сравнивает два прогона *в одном процессе*: он не заметит, если поменяется сам
порядок бросков. [`people.md`](people.md) называет отпечаток «единственным способом поймать
регрессию в генераторе». Так же с сейвом: поле `nativeLanguage` добавили без бампа формата, и то,
что старые сейвы грузятся, держится на комментарии в коде.
**Золотые файлы ловят то, что раньше ловили глазами.** Отпечаток ростера — файл в фикстурах.
Сейв текущего формата и сейв без `nativeLanguage` грузятся тестом хоста. Формат новее своего
школу не стартует и файл не трогает.
## Удостоверение пака
@@ -152,8 +144,8 @@
- Не даёт менять набор модов у живой школы. Каталог по-прежнему замерзает на работнике.
- Не кладёт `defName` комнаты в снимок карты. Клиент смог бы стилизовать типы помещений от модов,
но это версия протокола и правка в трёх местах — не «дёшево», значит не сюда.
- Не заводит UI для порядка модов. Порядок — алфавит плюс зависимости; ручная перестановка ждёт
того дня, когда паков станет больше трёх.
- Не заводит UI для порядка модов. Порядок — выбор игрока плюс устойчивая топологическая
сортировка по `requires`; ручная перестановка ждёт того дня, когда паков станет больше трёх.
## Зафиксировано этим разговором