ADR 0011: Ситуационная осведомлённость в отладке (приоритет над «полной» нижней панелью)¶
Статус: Accepted (направление; конкретные экраны и хоткеи — по итерациям реализации)
Дата: 2026-04-02
Связанные ADR¶
| ADR | Роль |
|---|---|
| 0002 | единый слой состояния |
| 0003 | режим Debug |
| 0012 | плавающий хром — куда выносить полоски без конкуренции с высотой редактора |
Вне ADR¶
| Документ | Роль |
|---|---|
| MCP-PROTOCOL.md | команды отладки |
Контекст¶
Пользователь при отладке нуждается в состоянии процесса (остановлен / выполняется, где остановка, зачем) и в ситуационной осведомлённости — без постоянного разворачивания нижней зоны на большую высоту.
Факт: увеличение высоты нижней панели (вывод, инструментирование, отладка) неизбежно съедает вертикаль редактора. Если единственный способ «понять отладку» — читать полный список locals/stack внизу, страдает чтение кода. При этом агент уже может получать стек и переменные через MCP; для человека нужен UX, который даёт осведомлённость в зоне взгляда и по месту в коде, не требуя держать панель раздутой.
Решение¶
1. Приоритет продукта в зоне отладки: состояние и ситуационная осведомлённость важнее, чем привычка «всегда видеть полную нижнюю панель. Детальный список переменных/стека остаётся нужен, но как вторичный**, раскрываемый слой.
2. Первичный слой (направление реализации): - Явное состояние отладки в постоянной или почти постоянной зоне: paused / running, по возможности причина остановки (breakpoint, step, exception), краткий контекст кадра (хотя бы верх стека одной строкой: метод / файл:строка). - Текущая строка в редакторе (подсветка, стрелка) остаётся обязательным якорем «где я в коде» — без ослабления 0002.
3. Компактная «полоска отладки» (или эквивалент: статус-бар / узкая зона под тулбаром): высота мала относительно редактора; при необходимости одна строка ключевой информации (например топ кадра + paused). Полная панель с вкладками — по явному действию (клик, хоткей, режим «детально»), а не единственный способ узнать состояние.
4. Углубление по месту в коде (направление): подсказки со значениями у идентификатора при наведении / у курсора (аналог Data Tips в VS), на базе DAP evaluate (или эквивалента адаптера) в контексте текущего кадра. Это снижает зависимость от списка locals в нижней панели для типичного «что в этой переменной».
5. Нижняя панель не объявляется вредной; она объявляется не обязательной для базовой осведомлённости. Разумные дефолты: не разворачивать автоматически на максимальную высоту при остановке, если есть полоска/статус; при желании — отдельная настройка «показать вкладку отладки при stop» (опционально, не блокер для п. 2–п. 4).
6. Паритет с агентом (0002): текстовые ответы MCP (debug_stack_trace, debug_variables с раскрытием детей) остаются каналом полноты; UX человека дополняет их сжатым постоянным слоем и inline/hover, а не дублирует полный список везде.
Последствия¶
- Появятся отдельные задачи на UI (полоска/статус), на evaluate при hover (связка с DAP и картой символов/смещений в редакторе), на политику высоты нижней зоны — без отмены существующей панели отладки.
- Документация пользователя (позже): кратко описать «где смотреть состояние» и «как открыть полный стек/locals».
- Конфликт с вертикальным сплиттером остаётся инженерным ограничением; этот ADR не требует отдельного окна вывода, но не запрещает его как последующую опцию.
Отклонённые альтернативы (как единственный ответ)¶
- Только нижняя панель как источник правды об отладке для человека — отклонено как противоречащее приоритету осведомлённости без потери кода на экране.
- Только MCP/агент без улучшения UI — отклонено: человек и агент остаются равноправными потребителями одного слоя состояния (0002), но UX человека должен быть самодостаточным без обязательного чата.