| 1 | # Соглашение: блок «Связанные ADR» |
| 2 | |
| 3 | Чтобы шапка ADR не превращалась в сплошной абзац, связи выносим в **таблицу** сразу после метаданных (`Статус`, `Дата`, `Обновлено`). |
| 4 | |
| 5 | ## Шапка: Статус, Дата, Обновлено |
| 6 | |
| 7 | | Поле | Правило | |
| 8 | |------|---------| |
| 9 | | **Статус** | Коротко: `Accepted`, `Proposed`, `Accepted · Implemented` — **без** длинных скобок. Детали реализации → подтаблица **### Снимок реализации** (2–4 строки). | |
| 10 | | **Дата** | Дата принятия ADR. | |
| 11 | | **Обновлено** | **Одна** строка: дата **последней** правки + краткая фраза + ссылка `[§ История](#adrNNNN-history)`, если история не пустая. | |
| 12 | | **Поглощает / Расширяется** | Оставляем в шапке (происхождение или follow-up), не в истории. | |
| 13 | |
| 14 | **Не** дублировать ключ `**Обновлено:**` несколько раз — хронологию переносим в **`## История изменений`** в **конце** файла (перед последним `---` или после «Отклонённые альтернативы»). |
| 15 | |
| 16 | ```markdown |
| 17 | ## История изменений |
| 18 | |
| 19 | <a id="adr0028-history"></a> |
| 20 | |
| 21 | | Дата | Изменение | |
| 22 | |------|-----------| |
| 23 | | 2026-04-08 | … | |
| 24 | ``` |
| 25 | |
| 26 | Якорь: `adr` + номер ADR без ведущих нулей в id (`adr0028-history` для ADR 0028). |
| 27 | |
| 28 | **Разделитель перед телом:** после блока «Связанные ADR» / «Снимок реализации» / **Резюме** ставим горизонтальную линию `---`, затем `## Контекст` (или `## Решение` / `## Проблема`, если контекста нет). |
| 29 | |
| 30 | **Резюме:** блок `## Резюме` сразу после «Связанные ADR» (и снимка, если есть) — **3–5 маркеров**, суть без якорей §N. **Рекомендуется** для ADR **≥120 строк**; для **≥100** — краткое резюме или stub. Короткие ADR — по желанию. |
| 31 | |
| 32 | **Superseded:** в шапке статус `Superseded` + ссылка на замену; после метаданных — callout `>` с указанием **0069** (или иного наследника); исторический текст ниже не переписываем. |
| 33 | |
| 34 | ## Шаблон |
| 35 | |
| 36 | ```markdown |
| 37 | ## Связанные ADR |
| 38 | |
| 39 | | ADR | Роль | |
| 40 | |-----|------| |
| 41 | | [0036](0036-cds-channel-compositor-surface-pipeline.md) | Канал → CDS → композитор → поверхность | |
| 42 | | [0067](0067-graph-backed-surfaces-contract.md) | Контракт семейства graph-backed поверхностей | |
| 43 | ``` |
| 44 | |
| 45 | ## Правила |
| 46 | |
| 47 | - **Колонка «ADR»** — ссылка `[NNNN](NNNN-slug.md)` или с якорем, если нужен конкретный пункт (`#adr0065-p6`). |
| 48 | - **Колонка «Роль»** — одна короткая фраза: зачем читать, чем ограничивает, что **не** путать. |
| 49 | - **3+ связей** — почти всегда таблица; **1–2** — допустим маркированный список под тем же заголовком. |
| 50 | - Старую строку **`**Связь:**` …** в шапке** при правке **убираем** (смысл переносим в таблицу). |
| 51 | - Внешние ссылки (KB, другой репо, сайт) — отдельная строка таблицы с пометкой «вне репо» или подтаблица **Вне ADR** ниже. |
| 52 | - Не дублировать оглавление [README](../README.md): в таблице только **релевантные** соседи, не полный индекс. |
| 53 | |
| 54 | ## Связь с якорями |
| 55 | |
| 56 | Кросс-ссылки на пункты внутри ADR — по [adr-anchors-policy.md](adr-anchors-policy.md). |
| 57 | |