Перейти к содержанию

Архитектурная политика CascadeIDE (навигатор)

Статус: действующая.
Назначение этого файла: краткий живой навигатор — куда смотреть и какие решения уже зафиксированы. Детальная логика решений (контекст, выбор, последствия, отклонённые варианты) — в ADR, не дублируем здесь длинными разделами.

Статусы ADR (Proposed / Accepted / …, второй тег Implemented для внедрённого кода): adr/status-lifecycle.md.

Связь: git-and-submodules-v1.md, MCP-PROTOCOL.md, debug-human-agent-parity-v1.md, architecture-migration.md, черновик границ продукта north-star-cursor-mcp-cascade-workbench-v1.md (Cursor + MCP + Cascade).


Рекомендуемая точка входа (как устроено сейчас)

Цель

Сохранить скорость разработки одного десктопного приложения (Avalonia + MVVM) при явных границах между UI, сценариями и внешним миром; по отладке — единый слой для человека и агента (см. debug-human-agent-parity-v1.md и ADR 0002).

Политика прагматичная: не полный DDD на весь код — см. ADR 0006.

Продуктовый фокус (ближайший горизонт)

Приоритет итераций: комфортный переход пользователя из Cursor (MCP, наблюдаемость агента и репозитория в одном контуре с CascadeIDE). Паритет с Visual Studio по охвату сценариев — долгий горизонт, не критерий скорости ближайших выпусков. Подробнее и формулировка north-star — north-star-cursor-mcp-cascade-workbench-v1.md.

Keyboard-first: CascadeIDE запланирована как IDE, где типовой контур — клавиатура и палитра команд, а не обязательная навигация мышью по плотным панелям; согласуется с ADR 0013 и разделом про keyboard-first в north-star выше.

Документация и справка (намерение)

Развёрнутые объяснения для конечного пользователя (в т.ч. раскладки дисплеев, ментальная модель зон внимания) — отдельный продуктовый слой от ADR: каналы (внешний User Guide, встроенная справка в IDE, иное), объём и приоритеты задаются на уровне продукта, а не «внутри» конкретного ADR по окнам или конфигу. ADR остаются нормативной сжатой формой для разработки; пример нотации дисплеев — 0017.

Avalonia и слой кабины (граница ответственности)

Avalonia здесь — несущий каркас: TopLevel и окна, жизненный цикл, фокус, маршрутизация ввода на границе приложения, интеграция с ОС (в т.ч. DPI), хостинг тяжёлых контролов там, где переписывание не окупается (типично редактор кода).

Семантика кабины — какие зоны PFD / Forward / MFD, топология окон, эффективная presentation, фиксация долей из конфига без «плавающего» пересчёта ради удобства декларативного layout — живёт в CDS и композиторе поверхности (ADR 0036, чертёж cds-contract-v0). Это не источник истины в Grid / StackPanel как носителе смысла кокпита.

Кастомная отрисовка (например Skia) — над Avalonia как хостом: прямоугольники слотов и команды отрисовки выводятся из контракта CDS / композитора. Ядро Avalonia не форкается без необходимости; расширения продукта — в своём слое. Стабильность геометрии при явных весах в конфиге — 0017 (предохранитель).

CDS vs IDS (коротко)

Один процесс приложения — два домена смысла: CDS маршрутизирует данные в зоны кабины (PFD / MFD / слоты приборов); IDSоверлеи оболочки (палитра, модалки, toast) поверх workspace, без семантики «прибор в слоте». Таблица, мнемоника и связь с 0066: ADR 0079 — раздел «Различение CDS и IDS».


Где что зафиксировано (ADR)

Тема ADR
Слои, срезы фич, роль MainWindowViewModel, модели списков 0006
Сигналы, слабая связность, очереди/батчинг; ссылка на UI-поток 0007 + 0004
Контракты MCP, тестируемые абстракции для git/процессов 0008 (Accepted · Implemented)
Strangler-миграция, когда можно отклоняться от политики 0009
Динамические плагины (MEF) — не ближайшая цель 0005
Отладка: паритет человек/агент; Debug UI; гипотезы в JSON; осведомлённость без «только нижняя панель»; профили запуска (несколько стартовых конфигураций); опц. встроенный просмотр URL на MFD (расширение 0090); гипотеза PFD-deck при отладке (плотность Mfd) 0002, 0003, 0001, 0011, 0090, 0093 (Proposed), 0091 (Proposed)
Конфигурация UI-режимов (TOML) 0010 (Accepted · Implemented)
Плавающий/отцепляемый хром workspace (нижняя зона, телеметрия; не floating доки в v1) 0012
Поверхность команд, палитра, минимальный toolbar; не смешивать с размещением хрома 0013
Ситуационные чеклисты (каталог, триггеры, карточка UI) 0014
Подсветка TOML в редакторе (шипнутый TextMate-пакет; LSP — отдельно) 0015 (Accepted · Implemented)
Внешний агент по ACP (stdio, Cursor CLI), не путать с MCP-сервером IDE 0016 (Accepted · Implemented)
Мультиоконность workspace, вторые поверхности агента, зоны экрана; MCP — несколько корней в scope фичи 0017 (Accepted · Implemented)
Реестр IdeCommands: каноничные XML-доки (summary / param / returns / example) для ProtocolDocGen; миграция с мини-языка в summary 0018 (Proposed)
Git: общая библиотека логики для встроенных ide_git_* и отдельного git-mcp; паритет семантики 0019 (Accepted · Implemented)
Агент: слои видимости рассуждения (ответ, трасс инструментов, опционально сырой лог); ограничения API провайдеров — явно, без имитации «полного мыслительного процесса» 0020 (Proposed)
PFD / MFD / лобовое / EICAS / HUD — модель внимания кокпита 0021 (Proposed)
PFD instrument deck — варианты состава и поверхностей (SA, метрики кода, карта намерений, ADR indicator); таблица-каталог, критерии отбора; не смешивать с 0063 как нормативом терминов 0073 (Proposed)
Визуальная поверхность UI (AXAML / Blazor): превью и дизайн-тайм на MFD / втором мониторе; не цель Blend 0022 (Proposed)
Трек Visual UI (дизайнер разметки): отдельная крупная программная линия CIDE; бэклог и приоритет стеков (Avalonia → Blazor → опц. Razor); детали UX — в 0022 0092 (Accepted)
Markdown + диаграммы (Mermaid/PlantUML): first-class опыт через LSP и workflow; инъекция LSP в fenced-блоки — отдельная фаза 0023 (Proposed)
SDK для IDE: стабильные контракты и capability‑модель для внутреннего расширения; plugin-host остаётся deferred 0024 (Proposed)
SDK и зоны внимания: канон PFD/MFD/… в метаданных capabilities; overlay презентации без подмены семантики 0025 (Proposed)
Markdown Preview: отдельный tool surface; primary placement — MFD, secondary — окно; renderer decoupled от placement; authoring-расширение Markdown ортогонально preview 0069 (Accepted)
Command Palette: прямой overlay surface в host, маршрутизация в активный TopLevel; ModalOverlay не продуктовый baseline для палитры 0070 (Accepted)
IDS (Ide Display System): оверлеи IDE (палитра и далее toast/модалки) — intent → композитор → снимок → поверхность; не расширять CDS этим контуром; единый хост ввода и слоты — strangler по 0079 0079 (Accepted)
Intercom: пользовательское имя канала связи в IDE (не только LLM); модель «участники + система»; командный масштаб — внешний стек/API по умолчанию, не дублировать в IDE; алиасы discoverability; код chat* — strangler (0080) 0080 (Proposed)
Intent Melody (параметры): диапазон строк, URL-портал; melody c: + полный slash-паритет каталога (ChatSlashParametricArgsBuilder, 0124); индикатор ввода 0081 · 0109 · 0124
ACP + MCP IDE (один процесс): вместо второго CascadeIDE --mcp-stdio — MCP хост на loopback (HTTP/SSE) в GUI; токен в заголовках; внешний --mcp-stdio не отменять 0082 (Proposed)
settings.toml[ai]: дискриминант mode (local / acp / mcp_only / cloud), вложенные таблицы; старый плоский provider не мигрируем автоматически 0083 (Accepted · Implemented)
Агент и редактор: единый источник правды — буфер редактора; чат — намерение/статус; присутствие агента (курсор, «пишет») отдельным каналом; дифф в чате не default; preview/live и безопасность — см. ADR 0084 (Proposed)
Editor HUD vs HUD banner: inline-слой по месту кода/каретки vs file-level полоса над текстом; глобальные оверлеи IDE — IDS (0079), не Editor HUD 0085 (Proposed)
Философия продукта (VS/Copilot-class риски, «хороший актёр»); принципы AI в IDE cascadeide-philosophy-v1, 0071 (Proposed)
Продуктовый фокус: малая команда vs готовность к открытию — оси «границы/контракты» и «очередь/discoverability» 0027 (Accepted)
Пользовательские настройки: путь settings.toml, TOML/snake_case, секреты в отдельном ai-keys.toml 0028 (Accepted · Implemented)
Тема UI: канон кистей в TOML; JSON в MCP (ide_get/set_ui_theme) — транспорт; пресеты Themes/*.json — strangler 0086 (Proposed)
Именование: омнибус агента get_ide_state (вместо get_workspace_state); канал IDE Health (вместо Workspace Health); ортогонально 0002 0089 (Accepted)
Конфигурация: канон на диске (TOML); центр настроек deferred; точечный UI — фасад канона 0029 (Accepted · Implemented)
UI настроек: компактная вёрстка, целевой якорь MFD; политика при нехватке места в P+F+M (scroll, ресайз, fallback-окно — см. ADR) 0074 (Proposed; не отменяет канон 0029)
Тематический указатель UI (docs/adr/UI/), соглашения по страницам MFD (payload vs проекция, keyboard-first) 0075 (Proposed)
UI/UX — центр принципов: связный вводный текст (кокпит, философия продукта); канон формулировок в snippets/ui; полные ADR — по ссылкам 0076 (Proposed)
TECH — центр принципов: связный вводный текст (границы/контракты, агент/отладка); канон формулировок в snippets/tech; указатель TECH/README.md 0077 (Proposed)
Команды: слои IdeCommands / палитра / hotkeys.toml / мост VM; единый UI-каталог — чертёж, не обязателен сразу 0030 (Accepted · Implemented)
Чат агента: пакеты уточнений как structured flow, thread/decision graph как first-class модель; Skia surface — продуктовый путь, ортогонально PFD-подтверждениям 0031 (Proposed), 0057 (Accepted)
HUD над редактором: что показывать и в каком виде — в settings.toml; опциональная грамматика по образцу presentation / [presentation_grammar] 0032 (Proposed)
Интернационализация: ResX, культура UI; TOML не словарь всего интерфейса; ортогонально конфигу и HUD 0033 (Proposed)
Оператор недоступен (Incapacitation): Emergency Mode; EICAS + класс сигналов КВС; liveness, HUD по контексту внимания, interlock опасных команд; сенсоры — opt-in 0034 (Proposed)
MFD: встроенный WebView2, внешние веб-LLM; веб не равно MCP-клиент; явная передача контекста; мост к инструментам IDE (Host Object, allowlist) — 0108 0035 (Proposed), 0108 (Accepted)
CDS: канал → контракт кабины → композитор слота → поверхность (Avalonia); не ARINC 661 целиком 0036 (Accepted · Implemented)
PFD: инварианты поверхности (weight, input lock, каналы) и Roslyn; канон [PfdStrict] / PfdStrictControl 0037 (Proposed)
Фасад агента: провайдеры LLM (AiProviderManager), чат, ACP, автономный режим; внешние MCP; направление развития 0038 (Accepted · Implemented)
Навигация по workspace: C#-first / .NET north-star; несколько представлений, граф/semantic map; PFD/MFD; MCP: get_code_navigation_context (пресеты, kind_filter, subgraph) 0039 (Accepted · Implemented)
LSP C#/Markdown: пресеты и опциональные executable/arguments в settings.toml; явный флаг чтения из окружения — по 0040 0040 (Accepted · Implemented)
Protobuf vs JSON: когда уместен бинарный IDL для агента/IDE; границы с MCP и IdeCommands; критерии пилота 0041 (Proposed)
Pre-flight briefing: Planned Changes и Review Before Apply; семантический слой перед записью на диск; частичное одобрение; отказ без артефактов 0042 (Proposed)
MCP-транспорт: паритет «человек может перезапустить MCP в хосте ↔ агент видит сбой и восстановление»; уровни хост / CascadeIDE / наблюдаемость; не смешивать с паритетом отладки 0043 (Proposed)
Чат агента: модель диалога первична, затем UI; Avalonia как фюзеляж, Skia — гипотеза слоя отрисовки; спайк после/параллельно модели 0044 (Proposed)
Чат агента: persistence через append-only event log (*.events.ndjson) + meta.json; проекции для UI отдельно 0045 (Proposed)
Раскладка кабины: presentation как инвариант P/F/M; канон в CDS — CockpitPresentationLayoutPolicy; coercion для меню/MCP/UI-режимов и реактивного слоя 0046 (Accepted · Implemented)
Инструмент кабины: дескриптор слота композитора (CockpitInstrumentDescriptor), не Avalonia-контрол; SE vs карта намерений как разные instrument_id в PFD 0047 (Accepted · Implemented)
Чат Cursor ACP в IDE: mcpServers, авто IDE MCP; приложения — пробелы тулов, разбор хоста Cursor (mcp.json) ↔ ide_* 0048 (Proposed)
Rollout Skia по CIDE: Avalonia остается host/fuselage, Skia расширяется в surface-слое волнами (dual-path, fallback до стабилизации) 0049 (Proposed)
Карта «инструмент → зона/слот» в TOML: merge bundle/repo/user, [instrument_routing], alias, InstrumentPlacementRuntime 0050 (Accepted · Implemented)
Intent-based attention routing из TOML (маршрутизация внимания) 0051 (Accepted · Implemented)
CLI для контракта агента (паритет с MCP) и снапшот-тесты 0052 (Accepted · Implemented: CLI, CI smoke, golden slice CDS)
Карта намерений на PFD: поток управления в методе (условные ветки, схождение), KISS; Roslyn CFG как источник; расширение subgraph / MCP 0053 (Accepted · Implemented)
Бенчмарки производительности CIDE: сценарии, метрики, baseline и протокол измерения 0054 (Proposed)
Сопряжение агента и Roslyn MCP в settings.toml: лимиты, виды узлов, таймауты, пресеты запросов; ортогонально [semantic_map] и пресетам навигации 0039 0058 (Proposed)
Профили Roslyn MCP, Manager: тактика на PFD; EFB / GlobalMap на MFD (не PFD); Auto-Focus / Combat / Echelon 0059 (Proposed)
Keyboard-first: аккордный слой (CascadeChord / Ctrl+K), FMS-style S/T, overlay-подсказки, MODE на PFD; палитра Ctrl+Q не заменяется 0060 (Proposed; расширение 0013)
Чат: topic cards, drill-in/back, intent-команды навигации по темам; Melody/Chords/palette паритет (0060 — уточнение только chat-domain) 0072 (Proposed)
ADR как слой осведомлённости: карта путь → ADR в workspace.toml, индикатор на PFD, краткий intent; агент — advisory при отклонении от привязанного ADR 0061 (Proposed; реализация отложена)
GitMap (отдельно от CNC): git submodules / границы репо; не смешивать с get_code_navigation_context; переиспользование Skia pipeline; см. git-and-submodules-v1 0062 (Proposed)
Именованная композиция в якоре (instrument deck); ось формы ContentRepresentation; таксономия примитивов (в т.ч. Presence/Activity) и Dark Cockpit; не смешивать с v1 [instrument_routing] 0063 (Accepted)
Виды индикаторов deck: единое графическое воплощение; библиотека отрисовки (PrimitivesKit); семантическая палитра; вид индикатора ≠ токены метрик целой сцены; отдельный runtime-слой не вводится 0064 (Accepted)
Категории инструментов и типы графов (graph_kind): ось домена + структура подграфа; «Карта намерений» = карта намерений кода (не «любой граф связей»); опциональные поля дескриптора / JSON — по дорожной карте 0065 (Accepted)
Cockpit UI (deck, приборы, PrimitivesKit, палитра кабины) отдельно от presentation IDE (хром, модальные оверлеи, тема shell); правило по умолчанию — в ADR; не смешивать слои в ревью; CASCOPE011/012 — запрет перекрёстных using между Features/UiChrome и Cockpit/PrimitivesKit 0066 (Accepted)
Graph-backed surfaces — общий контракт для графовых экранов (карта намерений, GitMap, будущие); измерения: данные, interaction, навигация, layout, selection, sync с workspace 0067 (Accepted)
Полезная нагрузка строки / проекция представления / слот: канал vs то, как строка рисуется (лампа, глиф, таблица); ортогонально ContentRepresentation и deck (0063) 0068 (Accepted)
Шина доставки в UI (аналогия AFDX): System.Threading.Channel<T>, bounded + батчинг на UI; не смешивать с продуктовым каналом кабины 0036; strangler — журнал сборки / терминал 0094 (Proposed)
Три уровня Health: Workspace (папки, Git) · Solution (сборка, тесты) · IDE (LSP, MCP, окружение); таксономия каналов/CDS/MCP; strangler от IDE Health 0095 (Proposed)
Intercom: карточка темы — сводка (картотека) + drill-in; spine продуктовой линии отдельно от main thread (CIDE — пример); дополняет topic cards 0072 0096 (Proposed)
Вычислительные блоки кабины (CCU): свёртка входов в снимок/DTO канала (аналог LRU Unit); не шина 0094, не CDS; с 0095 по stratum 0097 (Accepted · Implemented)
Data Acquisition Layer (DAL): внешние адаптеры (inbound/outbound) отдельно от CCU; рядом допустим слой Features/<Feature>/Application для use-case orchestration без прямого I/O; граница DAL ↔ Application ↔ CCU ↔ UI 0102 (Proposed)
Субстрат Editor HUD: нормализованные семантические проекции + политика inline/banner + адаптер поверхности редактора; hi-freq (каретка/указатель) — отдельный bounded-контур, не IDataBus 0099; baseline AvaloniaEdit; сравнение хостов — editor-surface-candidates-comparison-v1 0103 (Accepted (strangler))
Semantic-first: первична семантическая карта; исходники и git — проекции; с 0084 по сессии правок; 0009 для миграции 0098 (Proposed)

Полный индекс: docs/adr/README.md.


Быстрые ссылки (операционные документы)

Документ Зачем
architecture-migration.md Пошаговый перенос, фазы, статус strangler; раздел «Стратегия: опора на целевой каркас» (CDS/CCU/DAL/IDS и упрощение вокруг MainWindowViewModel)
MCP-PROTOCOL.md Контракты команд агента
Features/README.md Каталог срезов Features/
design/onboarding-first-run-v1.md Онбординг и First Run — живой чертёж (не ADR); дополняется по мере идей
design/attention-zone-panel-playbook-v1.md Зона ↔ панель shell ↔ SDK: следующий шаг после «это PFD» (не ADR)
design/vertical-slice-attention-capabilities-v1.md Вертикальный срез: регистрация UI surface + проверка дампа / теста
design/north-star-cursor-mcp-cascade-workbench-v1.md Границы «Cursor + MCP + Cascade»; приоритет перехода из Cursor, VS-паритет — долгую; матрица сделано/осталось (черновик)
design/cds-contract-v0.md CDS в контрактном смысле vs UiLayoutSnapshot; черновик полей v0 (живой чертёж; 0021 §1.1)
CascadeIDE.ArchitectureAnalyzers/README.md Roslyn: CASCOPE001/CASCOPE002 — слои Cockpit/Channels, Cds, Composition без Avalonia / без using Features.UiChrome (0036); CASCOPE003 — intent P/M у MainWindowViewModel без «тихих» присваиваний вне белого списка (0046); CASCOPE013–016 — граница IDS (IdeDisplay/) vs кабина / Avalonia / UiChrome и обратный запрет CockpitIdeDisplay (0079); CASCOPE019 — точка свёртки IDE Health (0097, 0099)

Версионирование этого навигатора

  • v1 — исходная политика со слоями и срезами в одном файле.
  • v1.1 — целевой каталог Features/, ссылка на architecture-migration; git через IGitCommandRunner.
  • v1.2 — план событий и UI-потока; MEF отложен.
  • v1.3 — политика свёрнута в навигатор; расширенная логика вынесена в ADR 0006–0009 (и ранее 0001–0005).
  • v1.4 — в таблицу ADR добавлен 0011 (отладка: осведомлённость без опоры только на нижнюю панель).
  • v1.5 — в таблицу ADR добавлен 0012 (плавающий хром workspace).
  • v1.6 — в таблицу ADR добавлен 0013 (палитра команд, discoverability, минимальный toolbar).
  • v1.7 — уточнён 0013; добавлен 0014 (ситуационные чеклисты отдельно от палитры/toolbar).
  • v1.8 — добавлен 0015 (подсветка TOML в редакторе через TextMate; не LSP в v1).
  • v1.9 — добавлен 0016 (внешний агент по Agent Client Protocol, stdio, Cursor CLI; PoC принят).
  • v1.10 — добавлен 0017 (мультиоконность, поверхности агента; тогда Proposed — см. v1.38).
  • v1.11 — добавлен 0018 (каноничные XML-доки для IdeCommands/ProtocolDocGen; Proposed).
  • v1.12 — добавлен 0019 (общий Git Core для IDE и git-mcp; Proposed).
  • v1.130019 принят (Accepted); реализация GitMcp.Core в meta-repo open, паритет argv для IDE и git-mcp.
  • v1.14 — добавлен 0020 (видимость рассуждения агента: слои L0–L2, честные ограничения провайдеров LLM; Proposed).
  • v1.15 — в таблицу ADR добавлены 0021 (модель внимания PFD/MFD) и 0022 (визуальная поверхность AXAML/Blazor на MFD; Proposed).
  • v1.16 — добавлен 0025 (SDK: привязка capabilities к зонам внимания; Proposed).
  • v1.17 — в 0025 уточнено: нативные Open/Save vs метаданные зоны, политика по умолчанию (нативный диалог; inline — осознанное исключение).
  • v1.18 — playbook attention-zone-panel-playbook-v1; в 0025: HostAttentionPanelId, CapabilityAttentionConsistency.
  • v1.19vertical-slice-attention-capabilities-v1; регистрация ui.chrome.surface.solution_explorer для сквозной проверки.
  • v1.20 — добавлен 0026 (превью Markdown: поверхности и TOML); UX размещения снят с канона в 0023 (там — язык и диаграммы).
  • v1.20a — добавлен 0069: preview переосмыслен как отдельный MFD-first tool surface; 0026 superseded в части inline/forward_split; authoring-расширение Markdown зафиксировано как ортогональная линия.
  • v1.20b — добавлен 0070: command palette закреплена как прямой overlay surface в активном TopLevel; ModalOverlay больше не считается каноническим baseline для palette render-host.
  • v1.21 — добавлен 0027 (узкая команда vs зрелость для открытия: две оси; Proposed).
  • v1.220027 принят (Accepted); минимум discoverability (дока, примеры, ADR) + ссылка на onboarding-first-run-v1; триггеры вывода задач оси B из бэклога.
  • v1.23 — добавлен 0028 (пользовательский settings.toml, %LocalAppData%\CascadeIDE\, ai-keys.json; отличие от 0010).
  • v1.24 — добавлен 0029 (TOML-first; UI как фасад; TOML-only допустим).
  • v1.250029: уточнено — deferred целостный UI настроек (0027); «фасад» = правило для точечного UI и канона.
  • v1.260029: мотивация точечного UI vs TOML-only (в т.ч. редкий заход под одну опцию, ACP).
  • v1.270029: перспектива динамического UI от модели/метаданных; точечный UI = вес кода, осознанно.
  • v1.280028: канон пользовательских настроек — settings.toml; переход с прежнего формата считается завершённым.
  • v1.290028: ветка миграции settings.json удалена из SettingsService; ADR и SETUP обновлены.
  • v1.300028: секреты API — ai-keys.toml (Tomlyn, как settings.toml); ai-keys.json не используется.
  • v1.310030: слои команд и хоткеев; реестр v1 в IdeCommandRegistry*.cs; чертёж ide-command-registry-v1. Статус ADR: Implemented.
  • v1.32 — добавлен 0031 (чат: пакеты уточнений, многострочные ответы, треды опционально; Proposed).
  • v1.330026: намерение по внутренним отсылкам в превью (hover/peek «Show Definition» для «см. п. N» и якорей; ортогонально 0023).
  • v1.34README ADR: политика внутренних якорей (adrNNNN-pK) и ссылок вместо голого «см. п. N»; якоря в 0010, 0011, 0012, 0015, 0017, 0021 (§17 п. 10 → §18), перекрёстные ссылки в 0022, 0031; якоря списка фазы 5 в architecture-migration.md.
  • v1.350017: мультиоконность v1 не смешивается с переработкой Power и прочих режимов; вопрос Flight vs Power для второго окна снят до отдельной дорожной карты режимов.
  • v1.360017: уточнение зона Mfd vs страницы MfdShellPage; не «чат как зона».
  • v1.37 — подраздел «Документация и справка (намерение)»: User Guide / справка в IDE — продуктовый слой, не обязанность отдельного ADR; 0017 остаётся нормативом по нотации и мультиоконности.
  • v1.380017: статус Accepted (мультиоконность, presentation / EBNF, слой settings.toml vs репозиторный workspace).
  • v1.390017 п. 8: MfdHostWindow — только полный MfdShellView (все MfdShellPage); узкий одностраничный хост не планируется.
  • v1.400017 п. 5 доп.: primary ОС ≠ семантический Forward; пример сенсорного монитора и «основного» дисплея; согласование раскладки ОС и presentation — ответственность пользователя.
  • v1.41 — черновик границ цели «Cursor + MCP + Cascade вместо VS»: north-star-cursor-mcp-cascade-workbench-v1.md.
  • v1.42 — тот же документ: продуктовое видение — ось внимания / кокпит / Dark Cockpit vs «шкаф окон» VS; не клон VS, а иная повседневная работа.
  • v1.43 — north-star: для экосистемы JetBrains честнее сравнение с Rider (не IntelliJ IDEA); ось дифференциации та же.
  • v1.44 — north-star: явное позиционирование CascadeIDE как agent-first IDE (общий контур с человеком; кокпит не противоречит оси).
  • v1.45 — north-star: слой KB / память агента (канон knowledge, MCP read_knowledge_file / …, agent-notes); ссылка на MCP-PROTOCOL.md.
  • v1.46 — добавлен 0032 (HUD: конфиг содержимого и грамматика как у presentation; Proposed).
  • v1.47 — добавлен 0033 (i18n: ResX/Avalonia; Proposed); уточнён перекрёсток с 0032.
  • v1.480017: раздел «Состояние реализации» (сверка с кодом: топология, плейсмент, bounds); concept-to-implementation-map-v1 §6 — второй TopLevel / MfdHostWindow.
  • v1.49 — добавлен 0034 (Incapacitation оператора, Emergency Mode, опциональное присутствие через webcam MCP; Proposed).
  • v1.50 — чат: 0031 и 0057 синхронизированы под pipeline snapshot, structured clarification flow и единый Skia product path без обязательного Avalonia fallback.
  • v1.500034: уточнён контракт — EICAS и сигналы КВС, liveness, контекстный HUD, safety interlock; граница «биометрия» = liveness/присутствие для безопасности.
  • v1.510034: слой A — прокси присутствия (мышь, клавиатура, фокус); оговорены ложные срабатывания и комбинирование сигналов.
  • v1.520034: слой C — eye tracking отложен, не baseline; доступность (поле зрения ≠ сигнал трекера); запрет обязательного ET.
  • v1.49 — чертёж cds-contract-v0: CDS (контракт кабины) vs UiLayoutSnapshot; 0021 §1.1 — глоссарий.
  • v1.53 — добавлен 0035 (MFD: WebView2, внешние веб-LLM; граница с MCP; гибрид через оператора; мост веб↔MCP — вне baseline; Proposed).
  • v1.54 — добавлен 0036 (канал → CDS → композитор → поверхность; Agent-first; Proposed).
  • v1.550036: статус Accepted; в коде слои Cockpit/Cds, Cockpit/Channels, Cockpit/Composition, Cockpit/Surface (cds-contract-v0 §6–7).
  • v1.56 — Roslyn-анализатор CascadeIDE.ArchitectureAnalyzers: CASCOPE001 / CASCOPE002 (границы слоёв Cockpit по ADR 0036).
  • v1.57 — добавлен 0037 (PFD: weight / input lock / каналы; явные маркеры для Roslyn; Proposed).
  • v1.58 — добавлен 0038 (фасад агента: AiProviderManager, чат vs ACP vs автономный цикл, McpClientService; черновик направления в том же ADR).
  • v1.59 — добавлен 0039 (навигация workspace: не только дерево файлов; несколько представлений и «связанные»; Proposed).
  • v1.600039: продуктовая метафора (шкаф vs карта боя), граф релевантного контекста, PFD/MFD, карта намерений и presentation.
  • v1.610037: канон имён строгой поверхности — [PfdStrict] / PfdStrictControl (§ канон).
  • v1.620039: north-star по языкам — C# / .NET, не polyglot IDE; north-star workbench обновлён.
  • v1.63 — раздел «Avalonia и слой кабины (граница ответственности)»: фюзеляж (окна, ввод, хост редактора) vs CDS/композитор (семантика кабины); кастомная отрисовка над хостом; ссылка на 0017 (предохранитель весов). Уточнение 0036 п. 4; строка в cds-contract-v0 §3.
  • v1.64 — добавлен 0040: командная строка LSP в settings.toml (пресеты, опциональные ключи; флаг launch_from_environment — Proposed).
  • v1.65north-star-cursor-mcp-cascade-workbench-v1.md: приоритет перехода из Cursor vs паритет VS в долгую; в этом файле — подраздел «Продуктовый фокус» под Цель.
  • v1.66 — добавлен 0041 (protobuf vs JSON для сообщений агента/IDE: границы, критерии, гибрид; точка входа; Proposed).
  • v1.670039: зафиксирован реализованный MCP-слой — get_code_navigation_context (пресеты в settings.toml секция [code_navigation], merge, эхо kind_filter, subgraph: kind / related_kind); cookbook workspace-navigation-mcp-cookbook.md; закрыт п.5 в закрытых вопросах.
  • v1.68 — добавлен 0045: persistence чата как append-only NDJSON + meta/projections; стартовая реализация ChatSessionStore в Features/Chat/.
  • v1.69 — добавлен 0046: presentation трактуется как инвариант кабины P/F/M; канон правил в CDS (CockpitPresentationLayoutPolicy); coercion изменений из меню/MCP/UI-режимов/реактивного слоя.
  • v1.70 — добавлен 0047: дескриптор слота на границе композитор → поверхность; не смешивать с Control.
  • v1.710047: канонический термин Instrument (кабинный) и тип CockpitInstrumentDescriptor вместо черновика Widget / CockpitWidgetDescriptor; переименован файл ADR.
  • v1.720047: статус Accepted (ось термина и дескриптора закреплены; реестр/wire — по дорожной карте).
  • v1.73 — слой Cockpit/Composition/HostSurface: MainWindowHostSurfaceFrame + композитор (shell + CockpitInstrumentDescriptor); VM собирает кадр одним вызовом — граница перед Skia в слотах, Avalonia как хост (cds-contract-v0 §3, §7).
  • v1.74Cockpit/Cds/CockpitSurfaceState (schema 0.3) получил instruments как проекцию HostSurface-кадра для MCP/наблюдаемости; добавлен Cockpit/Surface/MainWindowInstrumentMountRegistry (instrument_id → mount, хост-слой Avalonia/Skia, без UI карты намерений на этом шаге).
  • v1.750046: заголовок, §«Решение» и индексы приведены к канону CDS (CockpitPresentationLayoutPolicy); уточнено, что статический слой в Services/Presentation снят, на границе VM — только intent Apply*.
  • v1.76 — Roslyn CASCOPE003 (CascadeIDE.ArchitectureAnalyzers): запрет прямых присваиваний intent P/M вне белого списка файлов; см. 0046.
  • v1.77 — добавлен 0049: поэтапный rollout Skia-поверхностей по CIDE при сохранении Avalonia как host; волновая миграция, dual-path и fallback до стабилизации.
  • v1.78 — в индекс ADR: 0050 (карта инструментов в TOML), 0051 (intent routing), 0052 (CLI контракта агента и снапшот-тесты).
  • v1.790052: статус Accepted (направление CLI + снапшот-тесты; открытых вопросов нет).
  • v1.800052: первая поставка — --agent-contract get_ui_modes_diagnostics, AgentContractRunner, тесты; MCP-PROTOCOL §CLI контракта.
  • v1.81adr/status-lifecycle.md: договорённость по статусам ADR (Accepted · Implemented для внедрённого кода); каталог .cursor/ в репозитории в .gitignore — при желании продублируй суть в локальных правилах Cursor. Строка 0051 в таблице ниже — Accepted · Implemented.
  • v1.82 — таблица ADR выше: пометки Accepted · Implemented выровнены с заголовками ADR и adr/README.md для уже внедрённых решений (в т.ч. 0008, 0010, 00150017, 0019, 00280029, 0036, 00390040, 00460047).
  • v1.830053: карта намерений и поток управления на PFD (условные ветки, KISS, Roslyn CFG, subgraph/MCP); статус Accepted · Implemented.
  • v1.84 — добавлен 0054: протокол бенчмарков CIDE (сценарии, метрики, baseline, правила сравнения); статус Proposed.
  • v1.85 — добавлен 0058: сопряжение агент ↔ Roslyn MCP в settings.toml (лимиты, виды узлов, таймауты, пресеты); таблица потребителей; v0 vs отложенное; статус Proposed.
  • v1.860058: §6 — именованные профили, Manager, Auto-Focus / Combat / Echelon (тогда Glide Slope); связь с 0010, 0051, 0055.
  • v1.870058: §7 — третий монитор как EFB / стратегический Profile.GlobalMap vs тактический PFD; 0017, 0021.
  • v1.88 — разделение: 0058 — только ключи/оси TOML для сопряжения MCP; 0059 — профили, Manager, режимы, EFB (перенос из бывших §6–§7 у 0058).
  • v1.890059: режим спокойного ввода переименован Glide Slope → Echelon (меньше путаницы с ILS glide path).
  • v1.900059: EFB = MFD, не PFD; гистерезис только для тактического контура (§2); EFB статичен / по намерению.
  • v1.91 — добавлен 0060: аккордный слой и FMS-style (S/T), overlay, индикация MODE; расширение 0013; Ctrl+K vs палитра Ctrl+Q.
  • v1.92 — добавлен 0061: контекстная карта ADR ↔ пути в workspace.toml, индикатор на PFD, intent/tooltip, advisory агента; статус Proposed (реализация отложена).
  • v1.93 — добавлен 0063: instrument deck — именованная композиция инструментов в одном якоре; отличие от WH Page и от [instrument_routing] v1; статус Proposed.
  • v1.940063: ось форма представления — канон ContentRepresentation (Strip/Page); DedicatedPage у WH — режим Page на этой оси; ось композиция — deck / порядок сегментов WH; чертёж workspace-health-implementation-map-v1 §1.
  • v1.950063: направление типы индикаторов в deck — Lamp / Bar / Sign (компактные страницы; не контракт кода v1).
  • v1.960063: расширенная таксономия примитивов; Presence/Activity и согласование с Dark Cockpit (0021 §6).
  • v1.970063: статус Accepted (терминология instrument deck / ContentRepresentation; ключи топологии дисплеев — 0017 § display.screens / topology).
  • v1.98 — добавлен 0064: продуктовые примитивы deck — единое графическое представление; слой графики (Cockpit/PrimitivesKit); семантическая палитра и Dark Cockpit; продуктовый примитив vs токены сцены; статус Accepted.
  • v1.990064: канон «вид индикатора» / форма сигнала; лексикон продукт ↔ код (DeckPrimitiveKind); библиотека отрисовки вместо «ещё одного слоя»; отдельный runtime-tier не вводится.
  • v2.00 — добавлен 0065: категории инструментов как ось домена (CodeNavigation / WorkspaceNavigation / топология repo); ортогонально слоту и instrument_id; «Карта намерений» — граф, не прибор; опциональное instrument_category в дескрипторе — по мере необходимости; статус Accepted.
  • v2.010065: «Карта намерений» в узком смысле — карта намерений кода; введена ось graph_kind (тип графа в wire/MCP); таблица минимальных значений.
  • v2.02 — добавлен 0066: две опоры — Cockpit UI vs presentation IDE (UiChrome, оверлеи, тема); инвариант не смешивать семантику приборов и оболочки; статус Accepted.
  • v2.030066: в сборке CASCOPE011 / CASCOPE012 (CascadeIDE.ArchitectureAnalyzers) — граница using между Features/UiChrome и Cockpit/PrimitivesKit.
  • v2.04 — добавлен 0067: graph-backed surface как архитектурный класс; таблица измерений контракта (данные, interaction, навигация, layout, выделение, sync); статус Accepted.
  • v2.05 — добавлен 0068: три слоя — полезная нагрузка строки, идентичность слота, проекция представления; связь с 0063; однородный DTO в v1 допустим; статус Accepted.
  • v2.06 — добавлены cascadeide-philosophy-v1 (справочник философского слоя: DX, «хороший актёр», класс риска облачного inline-ассистента) и 0071 (принципы суверенитета/локальности/невидимости для AI в IDE; анти-паттерн); статус ADR Proposed.
  • v2.07 — добавлен 0072: topic cards, drill-in/back, adaptive default view; обязательный v1 intent-слой для навигации по темам чата (палитра / Melody / Chords); связь с 0031, 0057; уточняет 0060 только в chat-domain; статус Proposed.
  • v2.08 — добавлен 0073: PFD instrument deck — каталог вариантов (SA, code metrics, карта намерений, ADR indicator…), критерии размещения; Proposed, дополняет 0021 и 0063.
  • v2.09 — добавлен 0074: настройки — компактнее, якорь на MFD; таблица стратегий при нехватке места в P+F+M; Proposed, канон 0029 не меняется.
  • v2.10 — добавлен 0075: папка adr/UI как тематический указатель по UI; нормативные ADR остаются в docs/adr/; Proposed.
  • v2.11 — добавлен 0076: центр UI/UX-принципов — связный текст из snippets/ui (внимание/кокпит, философия продукта vs «вторая VS» и класс риска облачного inline); Proposed; дополняет 0075 и cascadeide-philosophy-v1.
  • v2.12 — добавлен 0077: центр TECH-принципов — связный текст из snippets/tech (границы/контракты/MCP/git/LSP; агент/отладка/наблюдаемость); тематический указатель adr/TECH/README.md, сборка adr-book-tech.md; Proposed.
  • v2.13 — добавлен 0079: IDS — пайплайн IDE-оверлеев (палитра и далее), ортогонально CDS; единый input capture и слоты — strangler; статус Accepted; таблица «Где что зафиксировано» обновлена.
  • v2.140079: Roslyn CASCOPE013–016 в CascadeIDE.ArchitectureAnalyzersIdeDisplay/ без Cockpit/Avalonia/UiChrome; Cockpit/ без IdeDisplay; README анализаторов и строка навигатора обновлены.
  • v2.15 — добавлен 0080: Intercom как продуктовое имя канала связи (агент, команда, система); открытые вопросы UI/i18n; Proposed; строка в таблице «Где что зафиксировано».
  • v2.160080: §5 готовый командный контур (интеграция/API) vs собственная реализация; ссылка на 0035 для риска WebView; открытый вопрос п.5; индекс README и строка навигатора уточнены.
  • v2.170080: канон письма Intercom (одна m); файл ADR переименован с 0080-intercomm-… на 0080-intercom-…; Intercomm как опечатка в §4.
  • v2.180080 § идеи развития: async голос в тред, выразительный TTS (в т.ч. OpenTTS), дуплекс/«радио» как отдельный класс требований; без коммита на v1.
  • v2.190080 § идеи развития: якоря на код (deep link, диапазон, выделение) и альтернативное представление якоря; связь с 0039, 0067; без коммита на v1.
  • v2.20 — добавлен 0081: параметрические Intent Melody с суффиксом :startLine:endLine для операций над текстом редактора; валидация; рефакторинги по диапазону; UX (индикатор, chord vs палитра); Proposed; индекс README, строка навигатора, UI/README.
  • v2.21 — добавлен 0082: ACP внутри IDE — направление на MCP IDE в том же процессе (loopback HTTP/SSE), без второго CascadeIDE --mcp-stdio; безопасность; сохранение сценария внешнего --mcp-stdio; Proposed; индекс README, TECH/README, строка навигатора.
  • v2.22 — добавлен 0084: правки агента — единый текст в редакторе; чат — намерение и статус; слой присутствия (курсор, «пишет») отдельно; дифф в чате не основной путь; preview/live и риски — в ADR; Proposed; индекс README, UI/README, TECH/README, principles.md, ui-adr-manifest / tech-adr-manifest, строка навигатора.
  • v2.230084 § контекст и таблица рисков: персона review-only / lead (в основном читает и направляет) снижает частоту конфликтов с личным вводом; канон смягчения при одновременном редактировании не ослабляется.
  • v2.24 — добавлен 0085: Editor HUD (inline у каретки/в тексте) vs HUD banner (полоса над редактором); отличие от IDS; Proposed; индекс README, UI/README, UI/principles.md, ui-adr-manifest, строка навигатора; отсылка в 0021 §9.
  • v2.25 — добавлен 0086: тема UI — канон в TOML (settings.toml), JSON для MCP ide_get/set_ui_theme как транспорт, strangler Themes/*.json; Proposed; индекс README, строка навигатора, tech-adr-manifest.
  • v2.26 — добавлен 0092: трек Visual UI (дизайнер разметки) как отдельная крупная программная линия; 0022 остаётся нормативом по продукту/UX; приоритет стеков Avalonia → Blazor → (опц.) Razor; Accepted; индекс README, строка навигатора.
  • v2.27 — добавлен 0093: расширение 0090опциональный встроенный просмотр URL Kestrel на MFD; внешний браузер — default; Proposed; индекс README, TECH/README, tech-adr-manifest, ссылка из 0090, строка навигатора.
  • v2.28 — добавлен 0094: шина доставки событий в UI (аналогия AFDX), Channel<T>, батчинг и backpressure; ортогонально CDS-«каналу»; Proposed; индекс README, TECH/README, tech-adr-manifest, строка навигатора.
  • v2.29 — добавлен 0095: три уровня Health (Workspace / Solution / IDE), таксономия для каналов и MCP; strangler от текущего IDE Health; Proposed; индекс README, TECH/README, tech-adr-manifest, строка навигатора.
  • v2.30 — добавлен 0096: Intercom — сводка на карточке темы (картотека) и spine продуктовой линии (CIDE как пример в основном репо) ортогональна main thread; дополняет 0072; Proposed; индекс README, строка навигатора; связи в 0072, 0080.
  • v2.31 — добавлен 0097: вычислительные блоки кабины (CCU) — слой свёртки сырья в DTO/снимок канала (аналог LRU Unit между шиной и индикацией); ортогонально 0094 и CDS; Proposed; индекс README, строка навигатора; перекрёстные ссылки в 0094, 0095, чертёж workspace-health-implementation-map-v1.md. Файл ADR переименован с …compute-nodes… на …compute-units… (канон unit, не node).
  • v2.32 — добавлен semantic-first ADR: semantic-first — первична семантическая карта, код/доки/git — проекции; согласование с 0084 по сессии правок; 0009 для миграции; Proposed; индекс README, TECH/README, tech-adr-manifest, строка навигатора; намёк на будущий ADR 0100 (отдельно). (Изначально 0099, перенумерован в 0098 — v2.33.)
  • v2.330098 (semantic-first): переименование файла и номера с 00990098; внутренние отсылки в ADR и индексы обновлены.
  • v2.340097: Accepted · Implemented (эталон CCU в IDE Health, CASCOPE019; см. 0099); 0099: Accepted · Implemented; строка навигатора и индекс README синхронизированы.
  • v2.350103: субстрат Editor HUD (пайплайн проекций, EditorHudEngine, IEditorSurfaceAdapter); границы DAL 0102 / CCU 0097 / DataBus 0099; отдельный hi-freq bounded-контур; baseline AvaloniaEdit; компаньоны editor-surface-candidates-comparison-v1, editor-forward-ui-cleanup-roadmap-v1; Proposed; индекс README, строка навигатора.
  • v2.360103 и компаньоны design/ / ux/: каноничный текст на русском; заголовок ADR, разделы и таблицы без англоязычного тела; индекс и строка навигатора уточнены («субстрат»).
  • v2.370103: статус Accepted (strangler); подраздел «Состояние реализации»; индекс README, строка навигатора.
  • v2.380079: подраздел «Различение CDS и IDS (одно приложение, два домена)» (таблица, мнемоника, CASCOPE016); в навигаторе — подраздел CDS vs IDS со ссылкой на якорь adr0079-cds-vs-ids.
  • Изменения направления — отдельным коммитом: обновление этого файла и при необходимости новый ADR в docs/adr/README.md.