Forge
markdowndeeb25a2
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>
291. **Приоритет продукта** в зоне отладки: **состояние и ситуационная осведомлённость** важнее, чем привычка «всегда видеть полную нижнюю панель**. Детальный список переменных/стека остаётся нужен, но как **вторичный**, раскрываемый слой.
30
31<a id="adr0011-p2"></a>
322. **Первичный слой (направление реализации):**
33 - **Явное состояние отладки** в постоянной или почти постоянной зоне: *paused / running*, по возможности *причина остановки* (breakpoint, step, exception), краткий **контекст кадра** (хотя бы верх стека одной строкой: метод / файл:строка).
34 - **Текущая строка** в редакторе (подсветка, стрелка) остаётся обязательным якорем «где я в коде» — без ослабления [0002](0002-debug-human-agent-parity.md).
35
36<a id="adr0011-p3"></a>
373. **Компактная «полоска отладки»** (или эквивалент: статус-бар / узкая зона под тулбаром): высота **мала** относительно редактора; при необходимости **одна строка** ключевой информации (например топ кадра + paused). Полная панель с вкладками — **по явному действию** (клик, хоткей, режим «детально»), а не единственный способ узнать состояние.
38
39<a id="adr0011-p4"></a>
404. **Углубление по месту в коде (направление):** подсказки со **значениями** у идентификатора при наведении / у курсора (**аналог Data Tips в VS**), на базе DAP **`evaluate`** (или эквивалента адаптера) в контексте текущего кадра. Это снижает зависимость от списка locals в нижней панели для типичного «что в этой переменной».
41
42<a id="adr0011-p5"></a>
435. **Нижняя панель** не объявляется вредной; она объявляется **не обязательной для базовой осведомлённости**. Разумные дефолты: **не разворачивать автоматически на максимальную высоту** при остановке, если есть полоска/статус; при желании — отдельная настройка «показать вкладку отладки при stop» (опционально, не блокер для [п. 2](#adr0011-p2)–[п. 4](#adr0011-p4)).
44
45<a id="adr0011-p6"></a>
466. **Паритет с агентом** ([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
View only · write via MCP/CIDE