Forge
markdowndeeb25a2
1# ADR 0092: Трек **Visual UI** (дизайнер разметки) — отдельная крупная программная линия CIDE
2
3**Статус:** Accepted (направление)
4**Дата:** 2026-04-24
5
6## Связанные ADR
7
8| ADR | Роль |
9|-----|------|
10| [0022](0022-mfd-visual-design-surface-axaml-blazor.md) | Визуальная поверхность разработки UI (AXAML / Blazor) — ориентир WinForms, размещение на MFD |
11---
12
13<a id="adr0092-context"></a>
14
15---
16## Контекст
17
18Визуальный дизайнер / live preview для **Avalonia (AXAML)**, **Blazor** и (опционально) **Razor** — по объёму **не** «одна фича на спринт»: хост превью, изоляция, синхронизация с текстом, дерево, property grid, по мере зрелости — drag-and-drop. Ему нужны **свой горизонт планирования** и **явная нарезка MVP**, иначе он конкурирует за внимание с критичным путём IDE или, наоборот, **теряется** без владельца.
19
20Отдельное обсуждение (2026-04-24): зафиксировать **трек** в ADR, чтобы в бэклоге и обсуждениях было ясно — это **CIDE Visual UI track** (условное имя), а детали UX и размещения остаются в **0022**.
21
22---
23
24<a id="adr0092-decision"></a>
25
26## Решение
27
28<a id="adr0092-p1"></a>
29
301. **Принять** направление **отдельной крупной программной линии** (трек) **Visual UI** в рамках Cascade IDE: визуальная работа с декларативной разметкой пользовательского UI (в первую очередь **.NET**-стек в фокусе CIDE), с **бэклогом** и **критериями готовности** по фазам, согласованными с [0022](0022-mfd-visual-design-surface-axaml-blazor.md).
31
32<a id="adr0092-p2"></a>
33
342. **Канонический ADR по продукту/UX** для этой линии — **[0022](0022-mfd-visual-design-surface-axaml-blazor.md)** (модель внимания, MFD, отсутствие второго `TopLevel` под превью, фазы MVP / следующий шаг / дальше, не-цели). **0092** отвечает на вопрос «**как это вести** как трек», а не «**как выглядит** в кокпите» — при противоречии приоритет у **0022** для продуктовых правил.
35
36<a id="adr0092-p3"></a>
37
383. **Порядок стеков (план приоритета, не сроки):**
39 - **Первая волна (ориентир):** **Avalonia / AXAML** — ближе к существующему хосту CIDE, предсказуемый контур превью.
40 - **Вторая волна:** **Blazor** — отдельный хост (браузер / WebView / изолят), сложнее границы design-time; сценарий пользователя тот же на уровне IDE ([0022 п. 4](0022-mfd-visual-design-surface-axaml-blazor.md)).
41 - **Razor (MVC/Pages) и смежное:** **не** часть обязательного MVP трека; отдельное решение (spike / отдельная эпик-задача), т.к. чаще **HTML+шаблоны**, а не дерево визуальных контролов — иначе размытие границ трека.
42
43<a id="adr0092-p4"></a>
44
454. **Связь с агентом и контрактом:** трек **ортогонален** [0008](0008-mcp-contracts-and-testable-infrastructure.md) и [0052](0052-agent-contract-cli-and-snapshot-tests.md): по мере появления стабильных **снимков/команд** для design surface (файл открыт, режим превью, выбор узла) — **расширения MCP/CLI** вносятся **сознательно**, с тем же требованием паритета JSON, **без** дублирования логики. До появления таких API трек **не** блокируется на «сначала все тулы агента».
46
47<a id="adr0092-p5"></a>
48
495. **Граница с другими треками:** **не** относить к этому трёку EICAS/HUD, «облачный inline» и прочие контуры, перечисленные в 0022 как **не-цели** с точки зрения зоны внимания; **не** путать **Cockpit UI** (приборы CIDE) с **дизайнером пользовательского приложения** — см. [0066](0066-cockpit-ui-vs-ide-presentation-layer.md).
50
51---
52
53<a id="adr0092-consequences"></a>
54
55## Последствия
56
57| Плюсы | Минусы / риски |
58|--------|-----------------|
59| Ясная **корзина** задач: легко говорить «в треке Visual UI / вне трека» | Нужна **дисциплина** не раздувать трек «всё про UI в мире» |
60| **0022** остаётся единым местом продуктовых правил; 0092 не дублирует таблицу фаз | Два ADR вместо одного — зато меньше дрейфа «процесс vs продукт» |
61| Порядок Avalonia → Blazor → (опц.) Razor снижает риск **одновременного** взрыва стеков | **Открытые вопросы 0022** (минимальный v1 по технологиям, вкладка MFD, двусторонняя синхронизация) — **по-прежнему** в 0022; трек не закрывает их автоматически |
62
63---
64
65<a id="adr0092-open-questions"></a>
66
67## Открытые вопросы
68
69- Явные **имена** в бэклоге/метках (одна линия GitLab / теги) — на усмотрение репо; в ADR зафиксировано **смысловое** имя *Visual UI* / *design surface* в связке с 0022.
70- **SDK / плагины** ([0024](0024-ide-sdk-and-stable-contracts.md)): если дизайнер когда-либо вынесется в расширение, это **отдельное** ADR, не 0092.
71
72---
73
74<a id="adr0092-rejected"></a>
75
76## Отклонённые альтернативы
77
78- **Считать дизайнер только «частью» Markdown preview или WebView-ADR** — отклонено: слишком разный предмет (авторский Markdown vs **пользовательский** AXAML/Blazor).
79- **Расширять 0022 таблицей «как вести бэклог»** — возможно, но вынесено в 0092, чтобы 0022 оставался **коротким** продуктовым ADR.
80
View only · write via MCP/CIDE