| 1 | # ADR 0011: Ситуационная осведомлённость в отладке (приоритет над «полной» нижней панелью) |
| 2 | |
| 3 | **Статус:** Accepted (направление; конкретные экраны и хоткеи — по итерациям реализации) |
| 4 | **Дата:** 2026-04-02 |
| 5 | ## Связанные ADR |
| 6 | |
| 7 | | ADR | Роль | |
| 8 | |-----|------| |
| 9 | | [0002](0002-debug-human-agent-parity.md) | единый слой состояния | |
| 10 | | [0003](0003-debug-ui-mode-separate-from-power.md) | режим Debug | |
| 11 | | [0012](0012-floating-workspace-chrome.md) | плавающий хром — куда выносить полоски без конкуренции с высотой редактора | |
| 12 | |
| 13 | ### Вне ADR |
| 14 | |
| 15 | | Документ | Роль | |
| 16 | |----------|------| |
| 17 | | [MCP-PROTOCOL.md](../MCP-PROTOCOL.md) | команды отладки | |
| 18 | |
| 19 | --- |
| 20 | ## Контекст |
| 21 | |
| 22 | Пользователь при отладке нуждается в **состоянии процесса** (остановлен / выполняется, где остановка, зачем) и в **ситуационной осведомлённости** — без постоянного разворачивания нижней зоны на большую высоту. |
| 23 | |
| 24 | Факт: **увеличение высоты нижней панели** (вывод, инструментирование, отладка) **неизбежно съедает вертикаль редактора**. Если единственный способ «понять отладку» — читать полный список locals/stack внизу, страдает чтение кода. При этом **агент** уже может получать стек и переменные через MCP; для **человека** нужен UX, который даёт осведомлённость **в зоне взгляда** и **по месту в коде**, не требуя держать панель раздутой. |
| 25 | |
| 26 | ## Решение |
| 27 | |
| 28 | <a id="adr0011-p1"></a> |
| 29 | 1. **Приоритет продукта** в зоне отладки: **состояние и ситуационная осведомлённость** важнее, чем привычка «всегда видеть полную нижнюю панель**. Детальный список переменных/стека остаётся нужен, но как **вторичный**, раскрываемый слой. |
| 30 | |
| 31 | <a id="adr0011-p2"></a> |
| 32 | 2. **Первичный слой (направление реализации):** |
| 33 | - **Явное состояние отладки** в постоянной или почти постоянной зоне: *paused / running*, по возможности *причина остановки* (breakpoint, step, exception), краткий **контекст кадра** (хотя бы верх стека одной строкой: метод / файл:строка). |
| 34 | - **Текущая строка** в редакторе (подсветка, стрелка) остаётся обязательным якорем «где я в коде» — без ослабления [0002](0002-debug-human-agent-parity.md). |
| 35 | |
| 36 | <a id="adr0011-p3"></a> |
| 37 | 3. **Компактная «полоска отладки»** (или эквивалент: статус-бар / узкая зона под тулбаром): высота **мала** относительно редактора; при необходимости **одна строка** ключевой информации (например топ кадра + paused). Полная панель с вкладками — **по явному действию** (клик, хоткей, режим «детально»), а не единственный способ узнать состояние. |
| 38 | |
| 39 | <a id="adr0011-p4"></a> |
| 40 | 4. **Углубление по месту в коде (направление):** подсказки со **значениями** у идентификатора при наведении / у курсора (**аналог Data Tips в VS**), на базе DAP **`evaluate`** (или эквивалента адаптера) в контексте текущего кадра. Это снижает зависимость от списка locals в нижней панели для типичного «что в этой переменной». |
| 41 | |
| 42 | <a id="adr0011-p5"></a> |
| 43 | 5. **Нижняя панель** не объявляется вредной; она объявляется **не обязательной для базовой осведомлённости**. Разумные дефолты: **не разворачивать автоматически на максимальную высоту** при остановке, если есть полоска/статус; при желании — отдельная настройка «показать вкладку отладки при stop» (опционально, не блокер для [п. 2](#adr0011-p2)–[п. 4](#adr0011-p4)). |
| 44 | |
| 45 | <a id="adr0011-p6"></a> |
| 46 | 6. **Паритет с агентом** ([0002](0002-debug-human-agent-parity.md)): текстовые ответы MCP (`debug_stack_trace`, `debug_variables` с раскрытием детей) остаются каналом полноты; UX человека дополняет их **сжатым постоянным слоем** и **inline/hover**, а не дублирует полный список везде. |
| 47 | |
| 48 | ## Последствия |
| 49 | |
| 50 | - Появятся отдельные задачи на UI (полоска/статус), на **evaluate при hover** (связка с DAP и картой символов/смещений в редакторе), на политику высоты нижней зоны — **без отмены** существующей панели отладки. |
| 51 | - Документация пользователя (позже): кратко описать «где смотреть состояние» и «как открыть полный стек/locals». |
| 52 | - Конфликт с вертикальным сплиттером остаётся инженерным ограничением; этот ADR **не** требует отдельного окна вывода, но не запрещает его как последующую опцию. |
| 53 | |
| 54 | ## Отклонённые альтернативы (как единственный ответ) |
| 55 | |
| 56 | - **Только нижняя панель** как источник правды об отладке для человека — отклонено как противоречащее приоритету осведомлённости без потери кода на экране. |
| 57 | - **Только MCP/агент** без улучшения UI — отклонено: человек и агент остаются равноправными потребителями одного слоя состояния ([0002](0002-debug-human-agent-parity.md)), но UX человека должен быть **самодостаточным** без обязательного чата. |
| 58 | |