Skip to content

Feature archetype v1 — как добавлять возможность в Cascade IDE

Статус: действующий чертёж (v1).
Связь: architecture-policy.md, architecture-migration.md, ADR 0006, ADR 0066, ADR 0076, iop-manifest-v1.md.

Цель — чтобы новая работа сама ложилась в каркас CDS · CCU · DAL · IDS, как после внедрения pipeline кабины, а не обрастала исключениями в MainWindowViewModel.


1. Чеклист Definition of Done

Перед merge фичи проверь:

# Вопрос Ожидаемый ответ
1 Где I/O (файл, процесс, сеть)? Features/<Domain>/DataAcquisition/ — не в CCU и не в VM
2 Где бизнес-смысл и snapshot? Features/<Domain>/Application/ или CCU в Cockpit/
3 Куда попадает на экране? CDS (зона PFD / Forward / MFD / слот прибора) или IDS (палитра, модалка) — явно в ADR/описании PR
4 Где UI state и команды? Features/<Domain>/*ViewModel + view; не новые сотни строк в MWVM
5 Skia-surface? Intent → … → Layout → Render; примитивы из Views/SkiaKit/; CASCOPE008
6 Avalonia MFD/page? CascadeTheme.* + Views/UiKit/; без сырых #RRGGBB в разметке
7 Intent для агента? Тот же command_id в MCP / палитре / Intercom (0119)
8 Тесты Application/CCU/оркестратор; UI — по необходимости headless contract

MWVM — композитор: bind, TryNavigate…, мост IIdeMcpActions, вызов оркестратора. Логика «как собрать JSON / что значит статус» — вне MWVM.


2. Каркас слоёв (кратко)

DAL          →  сырьё с диска/процесса/wire
Application  →  use-cases, оркестраторы, политики
CCU + CDS    →  кабина: канал → композитор → surface snapshot
IDS          →  overlay shell (палитра, …) поверх workspace
Features/*   →  VM + Views + регистрация в shell
MWVM         →  composition root окна

Подробнее: architecture-migration.md § Стратегия.


3. Шаблон каталогов (новая фича Foo)

Features/Foo/
  DataAcquisition/     # опционально
  Application/         # оркестраторы, проекции
  FooPanelViewModel.cs
Views/
  FooMfdPageView.axaml   # если страница MFD
  Foo*.axaml             # или Skia surface в Views/Foo/Skia/
CascadeIDE.Tests/
  Foo*Tests.cs

Не добавлять доменную логику в IdeMcpCommandExecutor — только диспетчер; handler вызывает Application или IIdeMcpActions.


4. UI: IDE chrome vs cockpit

Слой Путь Когда
IDE chrome CascadeTheme, Views/UiKit/, Themes/*.json меню, MFD-страницы, настройки, чат-оболочка AXAML
SkiaKit Views/SkiaKit/ плотные surfaces (чат, карты)
PrimitivesKit Cockpit/PrimitivesKit/ приборы, лампы, deck — не для обычных панелей

Токены chrome v1: ide-chrome-tokens-v1.md.
UX-принципы: ADR 0076.


5. IOP / Intercom

Если фича — способ договориться о работе:

  • один смысл → IdeCommands + опционально slash / Melody;
  • верификация остаётся в Forward (код, diff, тесты);
  • продуктовая линия — iop-manifest-v1.md, ADR 0121.

6. Исключения

Отклонение от чеклиста — только с явной пометкой в PR + ссылкой на ADR 0009. Временный код в MWVM помечай // strangler: и заводи задачу на вынос.