| 1 | # Editor HUD: политика баннера и inline (доп. к ADR 0085) |
| 2 | |
| 3 | **Статус:** продуктово-инженерный норматив (v1) |
| 4 | **Дата:** 2026-04-26 |
| 5 | **Связь:** [0085](../adr/0085-editor-hud-inline-layer-and-hud-banner.md), [0032](../adr/0032-hud-banner-configuration-and-grammar.md), [ux roadmap editor-forward](../ui-ux/editor-forward-ui-cleanup-roadmap-v1.md), [0021](../adr/0021-pfd-mfd-cockpit-attention-model.md) §9 |
| 6 | |
| 7 | **Цель:** не иметь **двух громких каналов** с **одной и той же** полноформенной прозой; при этом **не** отменять [0085](../adr/0085-editor-hud-inline-layer-and-hud-banner.md) (баннер — отдельное имя; inline — **Editor HUD** в узком смысле). |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## Роли (напоминание) |
| 12 | |
| 13 | | Канал | Роль | Типичное содержимое | |
| 14 | |--------|------|---------------------| |
| 15 | | **Editor HUD (inline)** | Пространственная правда: *где* в файле, *что* за символ, подчёркивания, Quick Info у указателя | Squiggles, inlay (позже), hit-tested tooltip, gutter | |
| 16 | | **HUD banner (file-level)** | Обзор **по файлу** и file-level сигналы, которые **не** требуют позиции каретки | Счётчики диагностик, краткая сводка, «агент / фоновая задача по этому файлу» (когда появятся) | |
| 17 | | **MFD / Problems** | Список по workspace / фильтрация; навигация | Те же **классы** диагностик, иной **носитель** (см. roadmap §5) | |
| 18 | |
| 19 | --- |
| 20 | |
| 21 | ## Правила дублирования (v1) |
| 22 | |
| 23 | 1. **Полный текст** одной и той же диагностики **не** показывать **одновременно** в **баннере** и **inline tooltip** **и** **развёрнутой** строке MFD, если все три видны; минимум один канал — **сжатый** (счётчик / one-liner / только навигация). |
| 24 | 2. **Баннер** — по умолчанию **счётчики** и **короткие** метки (`EditorHudBannerTextComposer`); **не** дублировать **произвольный** LSP `Message` **дословно**, если тот же текст уже в squiggle + hover для активной позиции. |
| 25 | 3. **Inline** **первичен** для *локального* разрешения: «что не так *здесь*». |
| 26 | 4. **Баннер** **оставляем** как канал (см. 0085 §2.2: опционален, но **не** «выкинуть продукт»): для **at-a-glance** по файлу, доступности, сценариев **без** наведения; выключение через настройки — позже [0032](../adr/0032-hud-banner-configuration-and-grammar.md), см. 0085 открытые вопросы. |
| 27 | 5. **Quick Info** (типы, сигнатуры) **не** дублировать в баннере — **только** inline (и при необходимости отдельный popover **по политике** roadmap §6 / [0079](../adr/0079-ide-display-system-ids-overlay-pipeline.md)). |
| 28 | |
| 29 | --- |
| 30 | |
| 31 | ## Следующая инженерная фиксация |
| 32 | |
| 33 | - Явные флаги в настройках ([0032](../adr/0032-hud-banner-configuration-and-grammar.md)): `banner_diagnostics_summary` / `inline_*` (когда дозреет конфиг) — **не** в этом v1-доке. |
| 34 | - При изменении разметки баннера — проверка этой политики + сценарии MFD/Forward из roadmap. |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## Успех |
| 39 | |
| 40 | Пользователь и ревьюер могут ответить на вопрос «почему это снова в баннере, если оно в тултипе?» ссылкой на **роль** канала, а не на вкус. |
| 41 | |