Remove off-queue.md and add new design documentation files including README.md, defs.md, near-term.md, projects.md, runtime.md, people.md, staffing.md, and schedule.md to outline the structure and agreements for the game's design phases.

This commit is contained in:
Leonid Pershin
2026-08-20 12:26:13 +03:00
parent 12cc36b4dd
commit a37a5eb82d
101 changed files with 1015 additions and 921 deletions
@@ -0,0 +1,48 @@
# Фаза 22. Удостоверение пака
## Зависимости
- [Фаза 4](../01-shell/04-create-editor.md) — моды и каталог уже ездят в create
## Зачем
Мод перестаёт быть именем папки. У него появляется название, версия и список паков, без которых он
не работает, — а у сервера появляется право отказать во внятной форме вместо сломанного каталога.
## Задачи
- [x] `pack.jsonc` в папке пака: `version` строкой, `requires` списком id. Файла нет — пак
по-прежнему валиден: id вместо названия, версия пустая, зависимостей нет
- [x] Название пака — ключ по его id в его же `localizations/<lang>.jsonc`; второго способа
называть вещи не заводить
- [x] `GET /api/mods` принимает `?lang=ru|en` и отдаёт `label`, `version` и `requires` рядом с
`id` и `required`
- [x] У `core` такой же `pack.jsonc` и такое же название в локалях
- [x] Создание школы проверяет, что каждая зависимость выбрана; нет — `400` с кодом и id того,
кого не хватает
- [x] Порядок загрузки выстраивает сервер: устойчивая топологическая сортировка поверх порядка
игрока, `core` всегда первый. Цикл зависимостей — отказ
- [x] Разрешённый порядок виден: пишется в лог при старте школы и возвращается в ответе создания
- [x] Сейв хранит **разрешённый** порядок паков, чтобы школа поднималась тем же каталогом
- [x] Загрузчик пишет предупреждение, когда у конкретного def нет подписи в локали пака
- [x] `docs/protocol.md` и [`docs/design/06-foundation/foundation.md`](../../design/06-foundation/foundation.md) правятся тем же
коммитом, что и обработчики
## Тесты, без которых фаза не закрыта
- [x] Пак без `pack.jsonc` виден в списке, id стоит вместо названия
- [x] Название приходит на языке запроса, у `core` тоже
- [x] Пак с невыбранной зависимостью не создаёт школу; в ответе видно, кого не хватает
- [x] Зависимость, выбранная после зависимого, всё равно грузится раньше
- [x] Цикл зависимостей — отказ, а не зависание
- [x] Def без подписи даёт предупреждение, но не роняет каталог
## Критерий готовности
- В диалоге создания моды подписаны по-человечески, `core` заблокирован как раньше
- Школа с модом поднимается после перезапуска тем же набором и в том же порядке
- `dotnet test` и клиентские `npm test` / `run build` проходят
## Стоп
Не грузить DLL. Не давать менять набор модов у живой школы. Не делать UI перестановки паков.