# Правила SLM Правило SLM задаёт один блокирующий архитектурный инвариант. Точные формулировки правил находятся только в [едином реестре](./registry.md); архитектурные главы объясняют модель и ссылаются на соответствующие коды. ## Виды утверждений - **Определение** задаёт нормативный смысл термина. - **Правило** задаёт блокирующее требование. - **Рекомендация** помогает принять решение, но не является обязательной. - **Пример** показывает один из вариантов реализации и не задаёт каркас проекта. Определения собраны в [терминологии](../reference/terminology.md). Определение может быть обязательным для толкования правил, но не получает отдельный код. ## Код правила ```text SLM-{group}-{class}{number} ``` | Часть | Значение | |---|---| | `SLM` | Принадлежность архитектуре SLM | | `group` | Предмет правила | | `class` | Способ окончательной проверки: `A` или `R` | | `number` | Глобально уникальный трёхзначный номер | Пример: [`SLM-MODULE-A004`](./registry.md#slm-module-a004). ## Способ проверки ### Автоматические правила (`A`) Всё требование можно однозначно проверить программно по структуре проекта, публичным путям и графу импортов. Нарушение блокирует автоматическую проверку. ### Правила для ревью (`R`) Для окончательного решения требуется понимание ответственности, владельца, потребителей или области жизни. Инструмент может найти подозрительный код, но не заменяет архитектурное решение. ## Разделы правил | Код | Предмет | |---|---| | `LAYER` | Роль слоя и направление зависимостей | | `MODULE` | Ответственность, владение, публичная граница и внутренняя структура модуля | | `DEPENDENCY` | Граф зависимостей модулей | | `GROUP` | Навигационная группировка модулей | | `SEGMENT` | Внутренняя организация модуля | | `NESTED_MODULE` | Доступ к вложенному модулю | | `LIFECYCLE` | Владение долгоживущими ресурсами | | `ENVIRONMENT` | Совместимость публичных фасетов со средами выполнения | Раздел правила не создаёт одноимённую главу или дополнительный уровень архитектуры. Например, `GROUP` классифицирует правило о группировке, а сама группа остаётся необязательной частью слоя. ## Требования к реестру - Одно правило защищает один инвариант. - Точная формулировка не повторяется в тематических документах. - Название кратко обозначает предмет, а описание полностью формулирует требование. - Рекомендации, обоснования и примеры не входят в формулировку правила. - Один инвариант не получает отдельные автоматическую и ручную копии. - Номер правила не обозначает важность и не переиспользуется после удаления.