| 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 | |
| 23 | 1. Брейкпоинты согласованы с глифами редактора и с тем, что отражают тулы вроде `ide_set_breakpoint` и показ списка точек. |
| 24 | 2. Останов: текущая строка и подсветка в редакторе согласованы с MCP (`ide_get_debug_snapshot`, `ide_debug_stack_trace`, состояние панели отладки). |
| 25 | 3. Стек и переменные: 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 | |