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