Forge
markdowndeeb25a2
1# ADR 0002: Единый слой состояния отладки для человека и агента
2
3**Статус:** Accepted
4**Дата:** 2026-04-02 (ретроспектива; содержание зафиксировано ранее в [debug-human-agent-parity-v1.md](../debug-human-agent-parity-v1.md))
5## Связанные ADR
6
7### Вне ADR
8
9| Документ | Роль |
10|----------|------|
11| [architecture-policy.md](../architecture-policy.md) | отладка |
12| [MCP-PROTOCOL.md](../MCP-PROTOCOL.md) | MCP PROTOCOL |
13
14---
15## Контекст
16
17Агент может управлять отладкой через MCP, а пользователь — через UI IDE. Если брейкпоинты, останов, стек и переменные расходятся между внешним контуром и тем, что видит человек, совместная отладка становится ненадёжной.
18
19## Решение
20
21**Один источник правды** по состоянию отладки **внутри CascadeIDE**:
22
231. Брейкпоинты согласованы с глифами редактора и с тем, что отражают тулы вроде `ide_set_breakpoint` и показ списка точек.
242. Останов: текущая строка и подсветка в редакторе согласованы с MCP (`ide_get_debug_snapshot`, `ide_debug_stack_trace`, состояние панели отладки).
253. Стек и переменные: UI панели отладки и данные для агента через MCP (`ide_debug_stack_trace`, `ide_debug_variables`, `ide_get_debug_snapshot`) исходят из **одной сессии и одной модели**, а не из двух несинхронизированных процессов.
26
27Внешний отладчик (netcoredbg, DAP) остаётся **движком**; **состояние** для человека и MCP проходит через слой IDE.
28
29## Последствия
30
31- Реализация тянет за собой явный слой (например сессия DAP в IDE), а не раздельные обходы.
32- Документ [debug-human-agent-parity-v1.md](../debug-human-agent-parity-v1.md) остаётся каноническим описанием цели; этот ADR фиксирует решение в формате ADR.
33
34## Отклонённые альтернативы
35
36- Два независимых контура без синхронизации — отклонено как противоречащее цели продукта.
37
View only · write via MCP/CIDE