# Роль SMALUM — DMN
<!-- smalum-role-version: 1.14.0 -->

Узкая шпаргалка нотации для внешней LLM (ENH-1624). Склейка: [role-core.md](https://docs.smalum.io/role-core.md) + этот файл.
Полный каталог: https://docs.smalum.io/role.md · страница: https://docs.smalum.io/ai · эталоны: https://docs.smalum.io/role-examples.md

Файл: https://docs.smalum.io/role-dmn.md

# Часть M — DMN (таблица решений)

Канон: [Синтаксис-DMN.md](https://docs.smalum.io/) / RFC [v0.2](https://docs.smalum.io/rfc/dmn/v0.2). ADR-65.

## M1. Когда выбирать DMN

| Рассказ | Нотация |
|---------|---------|
| Правила «если … то …», hit policy, колонки входов/выходов | **`//smalum/dmn`** |
| Порядок работ, роли, шлюзы, события | BPMN |
| Потоки данных | DFD |

**DMN ≠ `xor`.** Шлюз — ветвление процесса; DMN — таблица решений (отдельный документ). Таблицу **не** класть внутрь `pool { }`.

## M2. Канон (выдавать только так)

```
//smalum/[каталог/]dmn Название

[input|вход] id [= Подпись]
[knowledge|знание] id [= Подпись]

[decision|решение] id [hit] [unique|any|first|collect <agg>] [= Подпись] {
  in id [= Подпись]
  out id [= Подпись]
  [rId](ячейки_in…) = ячейки_out…
  (*) = …
}

A - B
A -- B
```

- Default hit = **unique**. Слово `hit` только перед policy.
- **Нет** `priority` / `приоритет` (пишите `first`). Буква P в чужой таблице → `first`.
- **`any`** — декларация; не «проверяйте» равенство выходов.
- Catch-all: **`(*)`** (предпочтительно) или `(-, -)`…; `(-)` только при одном `in`.
- Без `|`, без `:`, без `rule when then`, без сигила `!`, без `of`.
- BPMN: `task id rule.<decisionId>` (точка).

## M3. Оверлей

Как у BPMN/DFD: `// SM:` в конце файла (Часть D). Ширины колонок таблицы в v0.2 не нормируйте.

## M4. Брак

- `priority {` / `discount priority {`
- `(-)` при двух+ `in` без `(*)` / полного списка `-`
- таблица внутри `pool`
- `task … rule of X`
- ASCII `| … | … |`
