# Фаза 23. Настоящий пример мода ## Зависимости - [Фаза 22](22-mod-identity.md) — пример должен нести удостоверение, как все ## Зачем Дорога от папки на диске до школы не проверена ни разу: в `mods/` лежит только `core`, а last-wins и патчи живут в тестах на документах в памяти. Один маленький настоящий пак делает весь путь проверяемым — и заодно служит образцом для мод-автора. ## Задачи - [x] Пак `mods/example` рядом с `core`: `pack.jsonc`, свои локали, пара черт, набор имён, патч чужого def и одна комната - [x] Пак нарочно скучный: он образец и фикстура, а не контент. Ванильную игру он не меняет, пока не выбран - [x] Пак едет в вывод сборки тестов теми же правилами, что и `core` - [x] Короткий `README.md` внутри пака: что где лежит и как добавить своё - [x] Ориентир в [`defs.md`](../../design/01-shell/defs.md) показывает на него как на образец ## Тесты, без которых фаза не закрыта - [x] `GET /api/catalog?mods=example` отдаёт типы и подписи пака поверх `core` - [x] Школа создаётся с паком и поднимается с ним после перезапуска - [x] Патч пака виден в каталоге школы, а без пака его нет - [x] Одинаковый `defName` в `core` и в паке — побеждает пак, в логе предупреждение - [x] Карта пака проходит валидацию и годится для создания школы ## Критерий готовности - Создать школу с включённым паком и увидеть его содержимое внутри школы - Снять пак — школа создаётся прежней - `dotnet test` проходит ## Стоп Не превращать пример в контент-пак: чем он меньше, тем дольше проживёт.