Архитектурная политика 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).
Рекомендуемая точка входа (как устроено сейчас)¶
- Текущая архитектура (срез v1):
architecture/current-architecture-v1.md - Как читать ADR по темам:
architecture/adr-map-v1.md - Эталон UI Flight (layout + имена регионов):
ui-ux/cascade-ide-ui-layout-v1.md
Цель¶
Сохранить скорость разработки одного десктопного приложения (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 и обратный запрет Cockpit → IdeDisplay (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.13 — 0019 принят (Accepted); реализация
GitMcp.Coreв meta-repoopen, паритет 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.19 — vertical-slice-attention-capabilities-v1; регистрация
ui.chrome.surface.solution_explorerдля сквозной проверки. - v1.20 — добавлен 0026 (превью Markdown: поверхности и TOML); UX размещения снят с канона в 0023 (там — язык и диаграммы).
- v1.20a — добавлен 0069: preview переосмыслен как отдельный MFD-first tool surface;
0026superseded в части inline/forward_split; authoring-расширение Markdown зафиксировано как ортогональная линия. - v1.20b — добавлен 0070: command palette закреплена как прямой overlay surface в активном
TopLevel;ModalOverlayбольше не считается каноническим baseline для palette render-host. - v1.21 — добавлен 0027 (узкая команда vs зрелость для открытия: две оси; Proposed).
- v1.22 — 0027 принят (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.25 — 0029: уточнено — deferred целостный UI настроек (0027); «фасад» = правило для точечного UI и канона.
- v1.26 — 0029: мотивация точечного UI vs TOML-only (в т.ч. редкий заход под одну опцию, ACP).
- v1.27 — 0029: перспектива динамического UI от модели/метаданных; точечный UI = вес кода, осознанно.
- v1.28 — 0028: канон пользовательских настроек —
settings.toml; переход с прежнего формата считается завершённым. - v1.29 — 0028: ветка миграции
settings.jsonудалена изSettingsService; ADR и SETUP обновлены. - v1.30 — 0028: секреты API —
ai-keys.toml(Tomlyn, какsettings.toml);ai-keys.jsonне используется. - v1.31 — 0030: слои команд и хоткеев; реестр v1 в
IdeCommandRegistry*.cs; чертёж ide-command-registry-v1. Статус ADR: Implemented. - v1.32 — добавлен 0031 (чат: пакеты уточнений, многострочные ответы, треды опционально; Proposed).
- v1.33 — 0026: намерение по внутренним отсылкам в превью (hover/peek «Show Definition» для «см. п. N» и якорей; ортогонально 0023).
- v1.34 — README ADR: политика внутренних якорей (
adrNNNN-pK) и ссылок вместо голого «см. п. N»; якоря в 0010, 0011, 0012, 0015, 0017, 0021 (§17 п. 10 → §18), перекрёстные ссылки в 0022, 0031; якоря списка фазы 5 в architecture-migration.md. - v1.35 — 0017: мультиоконность v1 не смешивается с переработкой Power и прочих режимов; вопрос Flight vs Power для второго окна снят до отдельной дорожной карты режимов.
- v1.36 — 0017: уточнение зона Mfd vs страницы
MfdShellPage; не «чат как зона». - v1.37 — подраздел «Документация и справка (намерение)»: User Guide / справка в IDE — продуктовый слой, не обязанность отдельного ADR; 0017 остаётся нормативом по нотации и мультиоконности.
- v1.38 — 0017: статус Accepted (мультиоконность,
presentation/ EBNF, слойsettings.tomlvs репозиторный workspace). - v1.39 — 0017 п. 8:
MfdHostWindow— только полныйMfdShellView(всеMfdShellPage); узкий одностраничный хост не планируется. - v1.40 — 0017 п. 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.48 — 0017: раздел «Состояние реализации» (сверка с кодом: топология, плейсмент, 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.50 — 0034: уточнён контракт — EICAS и сигналы КВС, liveness, контекстный HUD, safety interlock; граница «биометрия» = liveness/присутствие для безопасности.
- v1.51 — 0034: слой A — прокси присутствия (мышь, клавиатура, фокус); оговорены ложные срабатывания и комбинирование сигналов.
- v1.52 — 0034: слой 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.55 — 0036: статус 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.60 — 0039: продуктовая метафора (шкаф vs карта боя), граф релевантного контекста, PFD/MFD, карта намерений и
presentation. - v1.61 — 0037: канон имён строгой поверхности —
[PfdStrict]/PfdStrictControl(§ канон). - v1.62 — 0039: 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.65 — north-star-cursor-mcp-cascade-workbench-v1.md: приоритет перехода из Cursor vs паритет VS в долгую; в этом файле — подраздел «Продуктовый фокус» под Цель.
- v1.66 — добавлен 0041 (protobuf vs JSON для сообщений агента/IDE: границы, критерии, гибрид; точка входа; Proposed).
- v1.67 — 0039: зафиксирован реализованный 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.71 — 0047: канонический термин Instrument (кабинный) и тип
CockpitInstrumentDescriptorвместо черновика Widget /CockpitWidgetDescriptor; переименован файл ADR. - v1.72 — 0047: статус Accepted (ось термина и дескриптора закреплены; реестр/wire — по дорожной карте).
- v1.73 — слой
Cockpit/Composition/HostSurface:MainWindowHostSurfaceFrame+ композитор (shell +CockpitInstrumentDescriptor); VM собирает кадр одним вызовом — граница перед Skia в слотах, Avalonia как хост (cds-contract-v0 §3, §7). - v1.74 —
Cockpit/Cds/CockpitSurfaceState(schema0.3) получилinstrumentsкак проекцию HostSurface-кадра для MCP/наблюдаемости; добавленCockpit/Surface/MainWindowInstrumentMountRegistry(instrument_id → mount, хост-слой Avalonia/Skia, без UI карты намерений на этом шаге). - v1.75 — 0046: заголовок, §«Решение» и индексы приведены к канону CDS (
CockpitPresentationLayoutPolicy); уточнено, что статический слой вServices/Presentationснят, на границе VM — только intentApply*. - 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.79 — 0052: статус Accepted (направление CLI + снапшот-тесты; открытых вопросов нет).
- v1.80 — 0052: первая поставка —
--agent-contract get_ui_modes_diagnostics,AgentContractRunner, тесты; MCP-PROTOCOL §CLI контракта. - v1.81 — adr/status-lifecycle.md: договорённость по статусам ADR (Accepted · Implemented для внедрённого кода); каталог
.cursor/в репозитории в.gitignore— при желании продублируй суть в локальных правилах Cursor. Строка 0051 в таблице ниже — Accepted · Implemented. - v1.82 — таблица ADR выше: пометки Accepted · Implemented выровнены с заголовками ADR и adr/README.md для уже внедрённых решений (в т.ч. 0008, 0010, 0015–0017, 0019, 0028–0029, 0036, 0039–0040, 0046–0047).
- v1.83 — 0053: карта намерений и поток управления на 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.86 — 0058: §6 — именованные профили, Manager, Auto-Focus / Combat / Echelon (тогда Glide Slope); связь с 0010, 0051, 0055.
- v1.87 — 0058: §7 — третий монитор как EFB / стратегический
Profile.GlobalMapvs тактический PFD; 0017, 0021. - v1.88 — разделение: 0058 — только ключи/оси TOML для сопряжения MCP; 0059 — профили, Manager, режимы, EFB (перенос из бывших §6–§7 у 0058).
- v1.89 — 0059: режим спокойного ввода переименован Glide Slope → Echelon (меньше путаницы с ILS glide path).
- v1.90 — 0059: 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.94 — 0063: ось форма представления — канон
ContentRepresentation(Strip/Page);DedicatedPageу WH — режим Page на этой оси; ось композиция — deck / порядок сегментов WH; чертёж workspace-health-implementation-map-v1 §1. - v1.95 — 0063: направление типы индикаторов в deck — Lamp / Bar / Sign (компактные страницы; не контракт кода v1).
- v1.96 — 0063: расширенная таксономия примитивов; Presence/Activity и согласование с Dark Cockpit (0021 §6).
- v1.97 — 0063: статус Accepted (терминология instrument deck /
ContentRepresentation; ключи топологии дисплеев — 0017 §display.screens/topology). - v1.98 — добавлен 0064: продуктовые примитивы deck — единое графическое представление; слой графики (
Cockpit/PrimitivesKit); семантическая палитра и Dark Cockpit; продуктовый примитив vs токены сцены; статус Accepted. - v1.99 — 0064: канон «вид индикатора» / форма сигнала; лексикон продукт ↔ код (
DeckPrimitiveKind); библиотека отрисовки вместо «ещё одного слоя»; отдельный runtime-tier не вводится. - v2.00 — добавлен 0065: категории инструментов как ось домена (CodeNavigation / WorkspaceNavigation / топология repo); ортогонально слоту и
instrument_id; «Карта намерений» — граф, не прибор; опциональноеinstrument_categoryв дескрипторе — по мере необходимости; статус Accepted. - v2.01 — 0065: «Карта намерений» в узком смысле — карта намерений кода; введена ось
graph_kind(тип графа в wire/MCP); таблица минимальных значений. - v2.02 — добавлен 0066: две опоры — Cockpit UI vs presentation IDE (
UiChrome, оверлеи, тема); инвариант не смешивать семантику приборов и оболочки; статус Accepted. - v2.03 — 0066: в сборке 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.14 — 0079: Roslyn CASCOPE013–016 в
CascadeIDE.ArchitectureAnalyzers—IdeDisplay/без Cockpit/Avalonia/UiChrome;Cockpit/безIdeDisplay; README анализаторов и строка навигатора обновлены. - v2.15 — добавлен 0080: Intercom как продуктовое имя канала связи (агент, команда, система); открытые вопросы UI/i18n; Proposed; строка в таблице «Где что зафиксировано».
- v2.16 — 0080: §5 готовый командный контур (интеграция/API) vs собственная реализация; ссылка на 0035 для риска WebView; открытый вопрос п.5; индекс README и строка навигатора уточнены.
- v2.17 — 0080: канон письма Intercom (одна m); файл ADR переименован с
0080-intercomm-…на0080-intercom-…; Intercomm как опечатка в §4. - v2.18 — 0080 § идеи развития: async голос в тред, выразительный TTS (в т.ч. OpenTTS), дуплекс/«радио» как отдельный класс требований; без коммита на v1.
- v2.19 — 0080 § идеи развития: якоря на код (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.23 — 0084 § контекст и таблица рисков: персона 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 для MCPide_get/set_ui_themeкак транспорт, stranglerThemes/*.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.33 — 0098 (semantic-first): переименование файла и номера с 0099 → 0098; внутренние отсылки в ADR и индексы обновлены.
- v2.34 — 0097: Accepted · Implemented (эталон CCU в IDE Health, CASCOPE019; см. 0099); 0099: Accepted · Implemented; строка навигатора и индекс README синхронизированы.
- v2.35 — 0103: субстрат 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.36 — 0103 и компаньоны
design//ux/: каноничный текст на русском; заголовок ADR, разделы и таблицы без англоязычного тела; индекс и строка навигатора уточнены («субстрат»). - v2.37 — 0103: статус Accepted (strangler); подраздел «Состояние реализации»; индекс README, строка навигатора.
- v2.38 — 0079: подраздел «Различение CDS и IDS (одно приложение, два домена)» (таблица, мнемоника, CASCOPE016); в навигаторе — подраздел CDS vs IDS со ссылкой на якорь
adr0079-cds-vs-ids. - Изменения направления — отдельным коммитом: обновление этого файла и при необходимости новый ADR в docs/adr/README.md.