| 1 | # Features — вертикальные срезы UI |
| 2 | |
| 3 | Соответствует [docs/architecture-policy.md](../docs/architecture-policy.md): каждая **крупная панель** или самостоятельный блок — отдельный `*ViewModel` (и при необходимости модели) в подпапке `Features/<Имя>/`. |
| 4 | |
| 5 | **Примеры:** |
| 6 | |
| 7 | - **`Git/`** — вкладка Git нижней панели: `GitPanelViewModel.cs`. |
| 8 | - **`Build/`** — вкладка Build output: `BuildOutputPanelViewModel.cs`. |
| 9 | - **`Terminal/`** — вкладка Terminal: AvaloniaTerminal + ConPTY/redirected integrated shell (`Features/Terminal/DataAcquisition/*`), `TerminalPanelViewModel.cs`. |
| 10 | - **`Chat/`** — правая колонка: чат с LLM — `ChatPanelViewModel.cs`. |
| 11 | - **`Forge/`** — **vertical client** agent-forge: overlay slash catalog, execute, Lens/CRS, MCP ([ADR 0161](../docs/adr/0161-cide-spine-and-forge-vertical-feature-module.md)); код пока частично в `Services/Forge/` и `WorkspaceNavigation` — см. [Forge/README](Forge/README.md). |
| 12 | - **`Instrumentation/`** — трасса агента, таймлайн событий, очередь задач Power, лог тестов, стек/переменные MCP-отладки — `InstrumentationPanelViewModel.cs`. |
| 13 | |
| 14 | Корневой неймспейс: `CascadeIDE.Features.<Имя>`. |
| 15 | |
| 16 | ## `UiChrome` и цепочка ADR 0036 |
| 17 | |
| 18 | Норматив: [ADR 0036](../docs/adr/0036-cds-channel-compositor-surface-pipeline.md) (канал → CDS → композитор → поверхность). Реализация слоёв вынесена в **`Cockpit/`** (неймспейсы `CascadeIDE.Cockpit.*`), чтобы не смешивать с пресетами/режимами (`UiMode*`, capabilities) в `Features/UiChrome/`. |
| 19 | |
| 20 | | Слой | Папка / неймспейс | Примеры типов | |
| 21 | |------|-------------------|----------------| |
| 22 | | Канал (п.1) | `Cockpit/Channels/**` | `WorkspaceHealthInputSnapshot`, `WorkspaceHealthProvider`, `IEicasFeed` | |
| 23 | | CDS (п.2) | `Cockpit/Cds/` (`CascadeIDE.Cockpit.Cds`) | `CockpitSurfaceState`, `CockpitSurfaceSnapshotBuilder`, `AttentionLayoutSurfaceKind` | |
| 24 | | Композитор (п.3) | `Cockpit/Composition/**` | `WorkspaceHealthSurfaceCompositor`, `EicasMessageSorter` | |
| 25 | | Поверхность (п.4) | `Views/*`, `Cockpit/Surface/UiLayoutSnapshot` | дерево контролов, MCP `ide_get_ui_layout` | |
| 26 | |
| 27 | **Editor** (`Features/Editor/`) — субстрат ADR 0103: `IEditorSurfaceAdapter`, `EditorStabilizedInputThrottler`; см. [Editor/README](Editor/README.md). |
| 28 | |