Forge
markdowndeeb25a2
1# CascadeIDE architecture policy (navigator)
2
3**Status:** Active.
4**Purpose of this file:** a short **living navigator** — where to look and which decisions are already recorded. Detailed **decision rationale** (context, choice, consequences, rejected alternatives) lives in [ADR](adr/README.md); we do not duplicate long sections here.
5
6**ADR statuses** (Proposed / Accepted / …, plus a second tag **`Implemented`** for shipped code): [adr/status-lifecycle.md](adr/status-lifecycle.md).
7
8**Related docs:** [../git-and-submodules-v1.md](../git-and-submodules-v1.md), [../MCP-PROTOCOL.md](../MCP-PROTOCOL.md), [../debug-human-agent-parity-v1.md](../debug-human-agent-parity-v1.md), [../architecture-migration.md](../architecture-migration.md), product boundary draft [../design/north-star-cursor-mcp-cascade-workbench-v1.md](../design/north-star-cursor-mcp-cascade-workbench-v1.md) (Cursor + MCP + Cascade).
9
10---
11
12## Recommended entry point (how things work today)
13
14- **Current architecture (v1 slice):** [`architecture/current-architecture-v1.md`](architecture/current-architecture-v1.md)
15- **How to read ADRs by topic:** [`architecture/adr-map-v1.md`](architecture/adr-map-v1.md)
16- **Flight UI reference (layout + region names):** [`ui-ux/cascade-ide-ui-layout-v1.md`](ui-ux/cascade-ide-ui-layout-v1.md)
17
18## Goal
19
20Keep velocity for a single desktop app (Avalonia + MVVM) while boundaries between UI, scenarios, and the outside world stay explicit; for debugging — one layer for human and agent (see [../debug-human-agent-parity-v1.md](../debug-human-agent-parity-v1.md) and [ADR 0002](adr/0002-debug-human-agent-parity.md)).
21
22The policy is **pragmatic**: not full DDD across the codebase — see [ADR 0006](adr/0006-presentation-layers-and-feature-slices.md).
23
24### Product focus (near horizon)
25
26**Iteration priority:** a comfortable path for users **coming from Cursor** (MCP, agent and repository observability in one loop with CascadeIDE). **Parity with Visual Studio** on scenario coverage is a **long horizon**, not a criterion for near-term release speed. More detail and the north-star wording — [../design/north-star-cursor-mcp-cascade-workbench-v1.md](../design/north-star-cursor-mcp-cascade-workbench-v1.md).
27
28**Keyboard-first:** CascadeIDE is **planned** as an IDE where the typical loop is **keyboard and command palette**, not mandatory mouse navigation through dense panels; aligned with [ADR 0013](adr/0013-command-surface-and-discoverability.md) and the keyboard-first section in the north-star doc above.
29
30### Documentation and help (intent)
31
32Rich explanations for **end users** (including multi-monitor layout, mental model of attention zones) are a **separate product layer** from ADR: channels (external User Guide, in-IDE help, other), scope and priorities are set **at product level**, not “inside” a specific ADR on windows or config. ADRs remain the **normative** compact form for development; display notation example — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md).
33
34## Avalonia and the cockpit layer (responsibility boundary)
35
36**Avalonia** here is the **airframe**: `TopLevel` and windows, lifecycle, focus, input routing at the app boundary, OS integration (including DPI), hosting **heavy** controls where rewrite does not pay off (typically the code **editor**).
37
38**Cockpit semantics** — which zones are PFD / Forward / MFD, window topology, effective `presentation`, pinning share ratios from config without “floating” recalculation for declarative layout convenience — live in **CDS** and the **surface compositor** ([ADR 0036](adr/0036-cds-channel-compositor-surface-pipeline.md), blueprint [../design/cds-contract-v0.md](../design/cds-contract-v0.md)). That is **not** the source of truth in `Grid` / `StackPanel` as the carrier of cockpit meaning.
39
40**Custom drawing** (e.g. Skia) sits **on top of** Avalonia as host: slot rectangles and draw commands come from the CDS / compositor contract. The Avalonia core is **not** forked without need; product extensions stay in our layer. Geometry stability with explicit weights in config — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) ([fuse policy](adr/0017-multi-window-workspace-and-agent-surfaces.md#adr0017-weight-fuse-policy)).
41
42### CDS vs IDS (short)
43
44One app process — **two meaning domains**: **CDS** routes data into **cockpit zones** (PFD / MFD / instrument slots); **IDS** is **shell overlays** (palette, modals, toast) over the workspace, without “instrument in slot” semantics. Table, mnemonic, and link to [0066](adr/0066-cockpit-ui-vs-ide-presentation-layer.md): [ADR 0079 — section “Distinguishing CDS and IDS”](adr/0079-ide-display-system-ids-overlay-pipeline.md#adr0079-cds-vs-ids).
45
46---
47
48## Where decisions are recorded (ADR)
49
50| Topic | ADR |
51|------|-----|
52| Layers, feature slices, role of `MainWindowViewModel`, list models | [0006](adr/0006-presentation-layers-and-feature-slices.md) |
53| Signals, loose coupling, queues/batching; UI thread reference | [0007](adr/0007-signals-coupling-and-ui-backpressure.md) + [0004](adr/0004-ui-thread-marshaling.md) |
54| MCP contracts, testable abstractions for git/processes | [0008](adr/0008-mcp-contracts-and-testable-infrastructure.md) (Accepted · Implemented) |
55| Strangler migration, when policy may be waived | [0009](adr/0009-strangler-migration-and-exceptions.md) |
56| Dynamic plugins (MEF) — not a near-term goal | [0005](adr/0005-defer-dynamic-plugins-mef.md) |
57| Debug: human/agent parity; Debug UI; hypotheses in JSON; awareness without “bottom panel only”; **launch profiles (multiple startup configurations)**; **optional embedded URL viewer on MFD** (0090 extension); **PFD-deck hypothesis when debugging (MFD density)** | [0002](adr/0002-debug-human-agent-parity.md), [0003](adr/0003-debug-ui-mode-separate-from-power.md), [0001](adr/0001-debug-hypotheses-json-storage.md), [0011](adr/0011-debug-situational-awareness.md), [0090](adr/0090-launch-profiles-and-debug-startup-configurations.md), [0093](adr/0093-mfd-embedded-browser-for-launch-url.md) (Proposed), [0091](adr/0091-pfd-debug-situational-deck-hypothesis.md) (Proposed) |
58| UI mode configuration (TOML) | [0010](adr/0010-ui-modes-toml-configuration.md) (Accepted · Implemented) |
59| Floating/detachable workspace chrome (bottom zone, telemetry; not floating docs in v1) | [0012](adr/0012-floating-workspace-chrome.md) |
60| Command surface, palette, minimal toolbar; do not mix with chrome placement | [0013](adr/0013-command-surface-and-discoverability.md) |
61| Situational checklists (catalog, triggers, UI card) | [0014](adr/0014-situational-checklists.md) |
62| TOML highlighting in editor (shipped TextMate pack; LSP separate) | [0015](adr/0015-editor-toml-syntax-highlighting.md) (Accepted · Implemented) |
63| External agent via ACP (stdio, Cursor CLI); not the IDE MCP server | [0016](adr/0016-agent-client-protocol-external-agent.md) (Accepted · Implemented) |
64| Multi-window workspace, second agent surfaces, screen zones; MCP — multiple roots in feature scope | [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) (Accepted · Implemented) |
65| `IdeCommands` registry: canonical XML docs (`summary` / `param` / `returns` / `example`) for ProtocolDocGen; migration from mini-language in summary | [0018](adr/0018-ide-commands-canonical-xml-documentation.md) (Proposed) |
66| Git: shared library for built-in `ide_git_*` and separate git-mcp; semantic parity | [0019](adr/0019-shared-git-core-ide-and-git-mcp.md) (Accepted · Implemented) |
67| Agent: reasoning visibility layers (reply, tool trace, optional raw log); provider API limits explicit, no fake “full thought process” | [0020](adr/0020-agent-reasoning-visibility-and-provider-limits.md) (Proposed) |
68| PFD / MFD / forward / EICAS / HUD — cockpit attention model | [0021](adr/0021-pfd-mfd-cockpit-attention-model.md) (Proposed) |
69| PFD **instrument deck** — composition variants and surfaces (SA, code metrics, semantic map, ADR indicator); catalog table, selection criteria; do not conflate with [0063](adr/0063-instrument-deck-named-composition-one-anchor.md) as terminology norm | [0073](adr/0073-pfd-instrument-deck.md) (Proposed) |
70| Visual UI surface (AXAML / Blazor): preview and design-time on MFD / second monitor; not a Blend clone | [0022](adr/0022-mfd-visual-design-surface-axaml-blazor.md) (Proposed) |
71| **Visual UI track** (layout designer): **separate major** CIDE program line; **backlog and stack priority** (Avalonia → Blazor → optional Razor); UX detail — **in 0022** | [0092](adr/0092-visual-ui-designer-major-track.md) (Accepted) |
72| Markdown + diagrams (Mermaid/PlantUML): first-class via LSP and workflow; LSP injection in fenced blocks — separate phase | [0023](adr/0023-markdown-diagrams-language-tooling.md) (Proposed) |
73| IDE SDK: stable contracts and capability model for internal extension; plugin host remains deferred | [0024](adr/0024-ide-sdk-and-stable-contracts.md) (Proposed) |
74| SDK and attention zones: PFD/MFD/… canon in capability metadata; presentation overlay without replacing semantics | [0025](adr/0025-sdk-attention-zones-and-capabilities.md) (Proposed) |
75| Markdown Preview: separate tool surface; primary MFD, secondary window; renderer decoupled from placement; authoring extensions orthogonal to preview | [0069](adr/0069-markdown-preview-tool-surface-and-renderer-decoupling.md) (Accepted) |
76| Command Palette: direct overlay surface in host, routing to active `TopLevel`; `ModalOverlay` not product baseline for palette | [0070](adr/0070-command-palette-direct-overlay-surface.md) (Accepted) |
77| **IDS (Ide Display System):** IDE overlays (palette, later toast/modals) — intent → compositor → snapshot → surface; **do not** extend CDS for this path; unified input host and slots — strangler per [0079](adr/0079-ide-display-system-ids-overlay-pipeline.md) | [0079](adr/0079-ide-display-system-ids-overlay-pipeline.md) (Accepted) |
78| **Intercom:** user-facing name for the IDE communication channel (not LLM-only); “participants + system” model; **team scale** — external stack/API by default, not duplicated in IDE; discoverability aliases; code `chat*` — strangler ([0080](adr/0080-intercom-naming-and-multi-party-channel-model.md)) | [0080](adr/0080-intercom-naming-and-multi-party-channel-model.md) (Proposed) |
79| **Intent Melody (parameters):** editor line range suffix (`:start:end`), validation, range refactors; input indicator; orthogonal to anchors from [0080](adr/0080-intercom-naming-and-multi-party-channel-model.md) | [0081](adr/0081-parametric-intent-melodies-editor-line-ranges.md) (Proposed) |
80| **ACP + MCP IDE (one process):** instead of second `CascadeIDE --mcp-stdio` — MCP host on loopback (HTTP/SSE) in GUI; token in headers; external `--mcp-stdio` not removed | [0082](adr/0082-acp-ide-mcp-loopback-single-process.md) (Proposed) |
81| **`settings.toml` — `[ai]`:** `mode` discriminant (local / acp / mcp_only / cloud), nested tables; legacy flat `provider` not auto-migrated | [0083](adr/0083-ai-mode-and-nested-settings-toml.md) (Accepted · Implemented) |
82| **Agent and editor:** single source of truth — editor buffer; chat — intent/status; agent presence (cursor, “typing”) on separate channel; diff in chat not default; preview/live and safety — see ADR | [0084](adr/0084-agent-edits-editor-source-of-truth-presence-channel.md) (Proposed) |
83| **Editor HUD** vs **HUD banner:** inline layer at code/caret vs file-level strip above text; global IDE overlays — IDS ([0079](adr/0079-ide-display-system-ids-overlay-pipeline.md)), not Editor HUD | [0085](adr/0085-editor-hud-inline-layer-and-hud-banner.md) (Proposed) |
84| Product philosophy (VS/Copilot-class risks, “good actor”); AI principles in IDE | [cascadeide-philosophy-v1](../design/cascadeide-philosophy-v1.md), [0071](adr/0071-ai-assistance-sovereignty-locality-invisibility.md) (Proposed) |
85| Product focus: small team vs openness readiness — axes “boundaries/contracts” and “queue/discoverability” | [0027](adr/0027-small-team-focus-vs-public-maturity.md) (Accepted) |
86| User settings: `settings.toml` path, TOML/snake_case, secrets in separate `ai-keys.toml` | [0028](adr/0028-user-settings-toml-localappdata-and-secrets.md) (Accepted · Implemented) |
87| **UI theme:** brush canon in TOML; JSON in MCP (`ide_get/set_ui_theme`) — wire format; `Themes/*.json` presets — strangler | [0086](adr/0086-ui-theme-toml-canonical-json-mcp-wire.md) (Proposed) |
88| **Naming:** agent omnibus `get_ide_state` (was `get_workspace_state`); **IDE Health** channel (was Workspace Health); orthogonal to [0002](adr/0002-debug-human-agent-parity.md) | [0089](adr/0089-ide-omnibus-naming-and-ide-health-channel-rename.md) (Accepted) |
89| Configuration: on-disk canon (TOML); settings center deferred; point UI — canon facade | [0029](adr/0029-configuration-toml-canonical-ui-facade.md) (Accepted · Implemented) |
90| Settings UI: compact layout, target anchor **MFD**; overflow policy in **P+F+M** (scroll, resize, fallback window — see ADR) | [0074](adr/0074-settings-ui-mfd-compact-layout-overflow.md) (Proposed; does not override [0029](adr/0029-configuration-toml-canonical-ui-facade.md) canon) |
91| **UI topic index** (`docs/adr/UI/`), MFD page conventions (payload vs projection, keyboard-first) | [0075](adr/0075-ui-topic-index-and-mfd-page-conventions.md) (Proposed) |
92| **UI/UX principles hub:** connected intro (cockpit, product philosophy); canon wording in [`snippets/ui`](adr/snippets/ui/README.md); full ADRs — by link | [0076](adr/0076-ui-ux-principles-hub.md) (Proposed) |
93| **TECH principles hub:** connected intro (boundaries/contracts, agent/debug); canon in [`snippets/tech`](adr/snippets/tech/README.md); index [`TECH/README.md`](adr/TECH/README.md) | [0077](adr/0077-tech-principles-hub.md) (Proposed) |
94| Commands: `IdeCommands` / palette / `hotkeys.toml` / VM bridge layers; unified UI catalog — blueprint, not required immediately | [0030](adr/0030-command-ids-hotkeys-and-ui-registry-layers.md) (Accepted · Implemented) |
95| Agent chat: clarification batches as structured flow, thread/decision graph as first-class; Skia surface — product path, orthogonal to PFD confirmations | [0031](adr/0031-agent-chat-clarification-batches-and-threading.md) (Proposed), [0057](adr/0057-chat-surface-pipeline-adoption.md) (Accepted) |
96| HUD above editor: what to show and how — in `settings.toml`; optional grammar like `presentation` / `[presentation_grammar]` | [0032](adr/0032-hud-banner-configuration-and-grammar.md) (Proposed) |
97| Internationalization: ResX, UI culture; TOML not the dictionary for all UI; orthogonal to config and HUD | [0033](adr/0033-internationalization-resx-avalonia.md) (Proposed) |
98| Operator incapacitation: Emergency Mode; EICAS + PIC signal class; liveness, HUD by attention context, dangerous-command interlock; sensors — opt-in | [0034](adr/0034-pilot-incapacitation-emergency-mode-and-presence-sensing.md) (Proposed) |
99| MFD: embedded WebView2, external web LLMs; web ≠ MCP client; explicit context handoff; bridge to IDE tools (Host Object, allowlist) — [0108](adr/0108-web-ai-portal-host-object-tools-bridge.md) | [0035](adr/0035-mfd-embedded-webview-external-llm-and-mcp-boundary.md) (Proposed), [0108](adr/0108-web-ai-portal-host-object-tools-bridge.md) (Accepted) |
100| CDS: channel → cockpit contract → slot compositor → surface (Avalonia); not full ARINC 661 | [0036](adr/0036-cds-channel-compositor-surface-pipeline.md) (Accepted · Implemented) |
101| PFD: surface invariants (weight, input lock, channels) and Roslyn; canon `[PfdStrict]` / `PfdStrictControl` | [0037](adr/0037-pfd-surface-invariants-and-roslyn-enforcement.md) (Proposed) |
102| Agent facade: LLM providers (`AiProviderManager`), chat, ACP, autonomous mode; external MCP; evolution direction | [0038](adr/0038-agent-facade-ai-provider-and-tool-orchestration.md) (Accepted · Implemented) |
103| Workspace navigation: C#-first / .NET north-star; multiple views, graph/semantic map; PFD/MFD; MCP: `get_code_navigation_context` (presets, `kind_filter`, subgraph) | [0039](adr/0039-workspace-navigation-affordances.md) (Accepted · Implemented) |
104| LSP C#/Markdown: presets and optional `executable`/`arguments` in `settings.toml`; explicit env read flag — per [0040](adr/0040-lsp-launch-line-settings-toml-presets-and-environment.md) | [0040](adr/0040-lsp-launch-line-settings-toml-presets-and-environment.md) (Accepted · Implemented) |
105| Protobuf vs JSON: when binary IDL fits agent/IDE; boundaries with MCP and `IdeCommands`; pilot criteria | [0041](adr/0041-protobuf-for-agent-and-ide-messages.md) (Proposed) |
106| Pre-flight briefing: Planned Changes and Review Before Apply; semantic layer before disk write; partial approval; reject without artifacts | [0042](adr/0042-pre-flight-planned-changes-and-review-before-apply.md) (Proposed) |
107| MCP transport: parity “human can restart MCP in host ↔ agent sees failure and recovery”; host / CascadeIDE / observability levels; do not mix with debug parity | [0043](adr/0043-mcp-transport-recovery-human-agent-parity.md) (Proposed) |
108| Agent chat: dialogue model first, then UI; Avalonia as fuselage, Skia — render-layer hypothesis; spike after/parallel to model | [0044](adr/0044-avalonia-host-skia-agent-chat-surface.md) (Proposed) |
109| Agent chat: persistence via append-only event log (`*.events.ndjson`) + `meta.json`; UI projections separate | [0045](adr/0045-agent-chat-persistence-event-log-and-projections.md) (Proposed) |
110| Cockpit layout: `presentation` as P/F/M invariant; CDS canon — `CockpitPresentationLayoutPolicy`; coercion for menu/MCP/UI modes and reactive layer | [0046](adr/0046-presentation-layout-authority-and-cockpit-invariants.md) (Accepted · Implemented) |
111| Cockpit instrument: compositor slot descriptor (`CockpitInstrumentDescriptor`), not Avalonia control; SE vs semantic map as different `instrument_id` on PFD | [0047](adr/0047-cockpit-instrument-descriptor-and-slot-composition.md) (Accepted · Implemented) |
112| Cursor ACP chat in IDE: `mcpServers`, auto IDE MCP; apps — tool gaps, Cursor host (`mcp.json`) ↔ `ide_*` parsing | [0048](adr/0048-cursor-acp-chat-ide-parity-and-mcp-tool-surface.md) (Proposed) |
113| Skia rollout in CIDE: Avalonia remains host/fuselage, Skia expands in surface layer in waves (dual-path, fallback until stable) | [0049](adr/0049-skia-surface-rollout-over-avalonia-host.md) (Proposed) |
114| “Instrument → zone/slot” map in TOML: merge bundle/repo/user, `[instrument_routing]`, alias, `InstrumentPlacementRuntime` | [0050](adr/0050-declarative-instrument-zone-placement-toml.md) (Accepted · Implemented) |
115| Intent-based attention routing from TOML | [0051](adr/0051-intent-based-attention-routing-toml.md) (Accepted · Implemented) |
116| CLI for agent contract (MCP parity) and snapshot tests | [0052](adr/0052-agent-contract-cli-and-snapshot-tests.md) (Accepted · Implemented: CLI, CI smoke, CDS golden slice) |
117| Semantic map on PFD: control flow in method (branches, join), KISS; Roslyn CFG source; subgraph / MCP extension | [0053](adr/0053-semantic-map-control-flow-pfd.md) (Accepted · Implemented) |
118| CIDE performance benchmarks: scenarios, metrics, baseline and measurement protocol | [0054](adr/0054-benchmarking-methodology-and-baselines.md) (Proposed) |
119| Agent ↔ Roslyn MCP coupling in `settings.toml`: limits, node kinds, timeouts, query presets; orthogonal to `[semantic_map]` and navigation presets [0039](adr/0039-workspace-navigation-affordances.md) | [0058](adr/0058-agent-roslyn-mcp-coupling-settings-toml.md) (Proposed) |
120| Roslyn MCP profiles, Manager: tactics on PFD; EFB / GlobalMap on **MFD** (not PFD); Auto-Focus / Combat / Echelon | [0059](adr/0059-roslyn-mcp-profiles-manager-tactical-strategic-efb.md) (Proposed) |
121| Keyboard-first: chord layer (CascadeChord / Ctrl+K), FMS-style S/T, overlay hints, MODE on PFD; palette Ctrl+Q not replaced | [0060](adr/0060-keyboard-chord-stack-fms-tactical-strategic.md) (Proposed; extends [0013](adr/0013-command-surface-and-discoverability.md)) |
122| Chat: topic cards, drill-in/back, intent navigation commands; Melody/Chords/palette parity ([0060](adr/0060-keyboard-chord-stack-fms-tactical-strategic.md) — chat-domain refinement only) | [0072](adr/0072-chat-topic-cards-intent-melody-keyboard-contract.md) (Proposed) |
123| ADR as awareness layer: path → ADR map in `workspace.toml`, PFD indicator, brief intent; agent — advisory on bound ADR deviation | [0061](adr/0061-context-aware-adr-map-pfd-knowledge-indicator.md) (Proposed; implementation deferred) |
124| **GitMap** (separate from CNC): git submodules / repo boundaries; do not mix with `get_code_navigation_context`; reuse Skia pipeline; see [git-and-submodules-v1](../git-and-submodules-v1.md) | [0062](adr/0062-git-submodules-semantic-map-subgraph.md) (Proposed) |
125| Named composition in one anchor (**instrument deck**); **`ContentRepresentation`** form axis; primitive taxonomy (incl. Presence/Activity) and **Dark Cockpit**; do not mix with v1 `[instrument_routing]` | [0063](adr/0063-instrument-deck-named-composition-one-anchor.md) (Accepted) |
126| **Deck indicator kinds:** unified graphic embodiment; **render library** (`PrimitivesKit`); **semantic palette**; indicator kind ≠ whole-scene metric tokens; no separate runtime tier | [0064](adr/0064-deck-primitives-visual-language-render-layer-and-palette.md) (Accepted) |
127| **Instrument categories** and **graph kinds** (`graph_kind`): domain axis + subgraph structure; “Semantic map” = **code intent map** (not “any link graph”); optional descriptor/JSON fields — roadmap | [0065](adr/0065-instrument-categories-domain-taxonomy.md) (Accepted) |
128| **Cockpit UI** (deck, instruments, `PrimitivesKit`, cockpit palette) **separate** from **IDE presentation** (chrome, modal overlays, shell theme); default rule in ADR; do not mix layers in review; **CASCOPE011/012** — no cross-`using` between `Features/UiChrome` and `Cockpit/PrimitivesKit` | [0066](adr/0066-cockpit-ui-vs-ide-presentation-layer.md) (Accepted) |
129| **Graph-backed surfaces** — shared contract for graph screens (semantic map, GitMap, future); dimensions: data, interaction, navigation, layout, selection, workspace sync | [0067](adr/0067-graph-backed-surfaces-contract.md) (Accepted) |
130| **Row payload** / **presentation projection** / **slot**: channel vs how a row is drawn (lamp, glyph, table); orthogonal to ContentRepresentation and deck ([0063](adr/0063-instrument-deck-named-composition-one-anchor.md)) | [0068](adr/0068-deck-row-payload-and-presentation-projection.md) (Accepted) |
131| **UI delivery bus** ( **AFDX** analogy): `System.Threading.Channel<T>`, bounded + UI batching; **not** the product cockpit channel [0036](adr/0036-cds-channel-compositor-surface-pipeline.md); strangler — build log / terminal | [0094](adr/0094-ingestion-bus-afdx-analogy-and-threading-channels.md) (Proposed) |
132| **Three Health levels:** Workspace (folders, Git) · Solution (build, tests) · IDE (LSP, MCP, environment); channel/CDS/MCP taxonomy; strangler from IDE Health | [0095](adr/0095-workspace-solution-ide-health-stratification.md) (Proposed) |
133| **Intercom:** topic card — **summary** (card index) + drill-in; product **spine** separate from main thread (CIDE — example); complements topic cards [0072](adr/0072-chat-topic-cards-intent-melody-keyboard-contract.md) | [0096](adr/0096-intercom-topic-card-summary-and-product-spine.md) (Proposed) |
134| **Cockpit compute units (CCU):** fold inputs into channel snapshot/DTO (LRU *Unit* analogy); not bus [0094](adr/0094-ingestion-bus-afdx-analogy-and-threading-channels.md), not CDS; with [0095](adr/0095-workspace-solution-ide-health-stratification.md) on `stratum` | [0097](adr/0097-cockpit-compute-units-transport-to-channel-dto.md) (Accepted · Implemented) |
135| **Data Acquisition Layer (DAL):** external adapters (inbound/outbound) separate from CCU; `Features/<Feature>/Application` allowed for use-case orchestration without direct I/O; DAL ↔ Application ↔ CCU ↔ UI boundary | [0102](adr/0102-data-acquisition-layer-boundary-and-contract.md) (Proposed) |
136| **Editor HUD substrate:** normalized semantic projections + inline/banner policy + editor surface adapter; **hi-freq** (caret/pointer) — separate bounded path, not `IDataBus` [0099](adr/0099-ide-databus-typed-events-and-projections.md); baseline **AvaloniaEdit**; host comparison — [editor-surface-candidates-comparison-v1](../design/editor-surface-candidates-comparison-v1.md) | [0103](adr/0103-editor-hud-substrate-semantic-projection-and-surface-adapter.md) (Accepted (strangler)) |
137| **Semantic-first:** primary **semantic map**; sources and git — **projections**; with [0084](adr/0084-agent-edits-editor-source-of-truth-presence-channel.md) on edit session; [0009](adr/0009-strangler-migration-and-exceptions.md) for migration | [0098](adr/0098-semantic-first-document-as-projection.md) (Proposed) |
138
139Full index: [adr/README.md](adr/README.md).
140
141---
142
143## Quick links (operational docs)
144
145| Document | Why |
146|----------|--------|
147| [../architecture-migration.md](../architecture-migration.md) | Stepwise migration, phases, strangler status; section **“Strategy: lean on target skeleton”** (CDS/CCU/DAL/IDS and simplification around `MainWindowViewModel`) |
148| [../MCP-PROTOCOL.md](../MCP-PROTOCOL.md) | Agent command contracts |
149| [../../Features/README.md](../../Features/README.md) | `Features/` slice catalog |
150| [../design/onboarding-first-run-v1.md](../design/onboarding-first-run-v1.md) | Onboarding and First Run — living blueprint (not ADR); grows with ideas |
151| [../design/attention-zone-panel-playbook-v1.md](../design/attention-zone-panel-playbook-v1.md) | Zone ↔ shell panel ↔ SDK: next step after “this is PFD” (not ADR) |
152| [../design/vertical-slice-attention-capabilities-v1.md](../design/vertical-slice-attention-capabilities-v1.md) | Vertical slice: register UI surface + dump/test check |
153| [../design/north-star-cursor-mcp-cascade-workbench-v1.md](../design/north-star-cursor-mcp-cascade-workbench-v1.md) | “Cursor + MCP + Cascade” boundaries; **Cursor transition** priority, VS parity — long term; done/remaining matrix (draft) |
154| [../design/cds-contract-v0.md](../design/cds-contract-v0.md) | CDS in **contract** sense vs `UiLayoutSnapshot`; v0 field draft (living blueprint; [0021 §1.1](adr/0021-pfd-mfd-cockpit-attention-model.md#glossary-cds-contract)) |
155| [../../CascadeIDE.ArchitectureAnalyzers/README.md](../../CascadeIDE.ArchitectureAnalyzers/README.md) | Roslyn: **CASCOPE001**/**CASCOPE002** — `Cockpit/Channels`, `Cds`, `Composition` without Avalonia / without `using Features.UiChrome` ([0036](adr/0036-cds-channel-compositor-surface-pipeline.md)); **CASCOPE003** — P/M intent at `MainWindowViewModel` without silent assigns outside allowlist ([0046](adr/0046-presentation-layout-authority-and-cockpit-invariants.md)); **CASCOPE013–016** — **IDS** (`IdeDisplay/`) vs cockpit / Avalonia / `UiChrome` and reverse ban `Cockpit` → `IdeDisplay` ([0079](adr/0079-ide-display-system-ids-overlay-pipeline.md)); **CASCOPE019** — IDE Health fold point ([0097](adr/0097-cockpit-compute-units-transport-to-channel-dto.md), [0099](adr/0099-ide-databus-typed-events-and-projections.md)) |
156
157---
158
159## Versioning of this navigator
160
161- **v1** — original policy with layers and slices in one file.
162- **v1.1** — target `Features/` catalog, link to architecture-migration; git via `IGitCommandRunner`.
163- **v1.2** — event and UI-thread plan; MEF deferred.
164- **v1.3** — policy collapsed into **navigator**; extended rationale moved to ADR 0006–0009 (and earlier 0001–0005).
165- **v1.4** — ADR table: added [0011](adr/0011-debug-situational-awareness.md) (debug: awareness without bottom-panel-only reliance).
166- **v1.5** — ADR table: added [0012](adr/0012-floating-workspace-chrome.md) (floating workspace chrome).
167- **v1.6** — ADR table: added [0013](adr/0013-command-surface-and-discoverability.md) (command palette, discoverability, minimal toolbar).
168- **v1.7** — clarified [0013](adr/0013-command-surface-and-discoverability.md); added [0014](adr/0014-situational-checklists.md) (situational checklists separate from palette/toolbar).
169- **v1.8** — added [0015](adr/0015-editor-toml-syntax-highlighting.md) (TOML highlighting via TextMate; not LSP in v1).
170- **v1.9** — added [0016](adr/0016-agent-client-protocol-external-agent.md) (external agent via Agent Client Protocol, stdio, Cursor CLI; PoC accepted).
171- **v1.10** — added [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) (multi-window, agent surfaces; then Proposed — see **v1.38**).
172- **v1.11** — added [0018](adr/0018-ide-commands-canonical-xml-documentation.md) (canonical XML docs for `IdeCommands`/ProtocolDocGen; Proposed).
173- **v1.12** — added [0019](adr/0019-shared-git-core-ide-and-git-mcp.md) (shared Git Core for IDE and git-mcp; Proposed).
174- **v1.13** — [0019](adr/0019-shared-git-core-ide-and-git-mcp.md) accepted; `GitMcp.Core` in meta-repo `open`, argv parity for IDE and git-mcp.
175- **v1.14** — added [0020](adr/0020-agent-reasoning-visibility-and-provider-limits.md) (agent reasoning visibility: L0–L2 layers, honest LLM provider limits; Proposed).
176- **v1.15** — ADR table: [0021](adr/0021-pfd-mfd-cockpit-attention-model.md) (PFD/MFD attention model) and [0022](adr/0022-mfd-visual-design-surface-axaml-blazor.md) (AXAML/Blazor visual surface on MFD; Proposed).
177- **v1.16** — added [0025](adr/0025-sdk-attention-zones-and-capabilities.md) (SDK: capabilities bound to attention zones; Proposed).
178- **v1.17** — [0025](adr/0025-sdk-attention-zones-and-capabilities.md): native Open/Save vs zone metadata, default policy (native dialog; inline — conscious exception).
179- **v1.18** — playbook [attention-zone-panel-playbook-v1](../design/attention-zone-panel-playbook-v1.md); [0025](adr/0025-sdk-attention-zones-and-capabilities.md): `HostAttentionPanelId`, `CapabilityAttentionConsistency`.
180- **v1.19** — [vertical-slice-attention-capabilities-v1](../design/vertical-slice-attention-capabilities-v1.md); register `ui.chrome.surface.solution_explorer` for end-to-end check.
181- **v1.20** — added [0026](adr/0026-markdown-preview-surfaces-and-placement.md) (Markdown preview: surfaces and TOML); placement UX removed from canon in [0023](adr/0023-markdown-diagrams-language-tooling.md) (language and diagrams there).
182- **v1.20a** — added [0069](adr/0069-markdown-preview-tool-surface-and-renderer-decoupling.md): preview as separate MFD-first tool surface; `0026` superseded for inline/`forward_split`; Markdown authoring extension orthogonal.
183- **v1.20b** — added [0070](adr/0070-command-palette-direct-overlay-surface.md): command palette as direct overlay in active `TopLevel`; `ModalOverlay` no longer canonical palette host baseline.
184- **v1.21** — added [0027](adr/0027-small-team-focus-vs-public-maturity.md) (small team vs openness maturity: two axes; Proposed).
185- **v1.22** — [0027](adr/0027-small-team-focus-vs-public-maturity.md) accepted; minimum discoverability (docs, examples, ADR) + link to [onboarding-first-run-v1](../design/onboarding-first-run-v1.md); axis B backlog triggers.
186- **v1.23** — added [0028](adr/0028-user-settings-toml-localappdata-and-secrets.md) (user `settings.toml`, `%LocalAppData%\CascadeIDE\`, `ai-keys.json`; distinct from [0010](adr/0010-ui-modes-toml-configuration.md)).
187- **v1.24** — added [0029](adr/0029-configuration-toml-canonical-ui-facade.md) (TOML-first; UI as facade; TOML-only allowed).
188- **v1.25** — [0029](adr/0029-configuration-toml-canonical-ui-facade.md): deferred **full** settings UI ([0027](adr/0027-small-team-focus-vs-public-maturity.md)); “facade” = rule for point UI and canon.
189- **v1.26** — [0029](adr/0029-configuration-toml-canonical-ui-facade.md): point UI vs TOML-only motivation (rare single-option visit, ACP).
190- **v1.27** — [0029](adr/0029-configuration-toml-canonical-ui-facade.md): dynamic UI from model/metadata perspective; point UI = code weight, conscious.
191- **v1.28** — [0028](adr/0028-user-settings-toml-localappdata-and-secrets.md): user settings canon — `settings.toml`; migration from prior format considered complete.
192- **v1.29** — [0028](adr/0028-user-settings-toml-localappdata-and-secrets.md): `settings.json` migration branch removed from `SettingsService`; ADR and SETUP updated.
193- **v1.30** — [0028](adr/0028-user-settings-toml-localappdata-and-secrets.md): API secrets — **`ai-keys.toml`** (Tomlyn, like `settings.toml`); `ai-keys.json` not used.
194- **v1.31** — [0030](adr/0030-command-ids-hotkeys-and-ui-registry-layers.md): command and hotkey layers; v1 registry in `IdeCommandRegistry*.cs`; blueprint [ide-command-registry-v1](../design/ide-command-registry-v1.md). ADR status: **Implemented**.
195- **v1.32** — added [0031](adr/0031-agent-chat-clarification-batches-and-threading.md) (chat: clarification batches, multiline replies, threads optional; Proposed).
196- **v1.33** — [0026](adr/0026-markdown-preview-surfaces-and-placement.md): intent for **internal references** in preview (hover/peek “Show Definition” for “see § N” and anchors; orthogonal to [0023](adr/0023-markdown-diagrams-language-tooling.md)).
197- **v1.34** — [ADR README](adr/README.md#adr-anchors-policy): **internal anchor** policy (`adrNNNN-pK`) and links instead of bare “see § N”; anchors in **0010**, **0011**, **0012**, **0015**, **0017**, **0021** (§17 item 10 → §18), cross-links in **0022**, **0031**; phase 5 list anchors in [architecture-migration.md](../architecture-migration.md).
198- **v1.35** — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md): multi-window v1 **not** mixed with **Power** mode rework; Flight vs Power for second window **deferred** to separate mode roadmap.
199- **v1.36** — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md): **Mfd zone** vs **pages** `MfdShellPage`; not “chat as a zone”.
200- **v1.37** — subsection **“Documentation and help (intent)”**: User Guide / in-IDE help — **product layer**, not obligation of a single ADR; [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) remains norm for notation and multi-window.
201- **v1.38** — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md): status **Accepted** (multi-window, `presentation` / EBNF, `settings.toml` layer vs repo workspace).
202- **v1.39** — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) [§8](adr/0017-multi-window-workspace-and-agent-surfaces.md#adr0017-p8-mfd-host-wide): **`MfdHostWindow`** — **full** `MfdShellView` only (all `MfdShellPage`); narrow single-page host **not** planned.
203- **v1.40** — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) [§5 addendum](adr/0017-multi-window-workspace-and-agent-surfaces.md#adr0017-p5-primary-vs-forward): primary OS display ≠ semantic Forward; touch-monitor vs “main” display example; OS layout vs `presentation` — user responsibility.
204- **v1.41** — draft goal boundaries “Cursor + MCP + Cascade instead of VS”: [north-star-cursor-mcp-cascade-workbench-v1.md](../design/north-star-cursor-mcp-cascade-workbench-v1.md).
205- **v1.42** — same doc: **product vision** — attention axis / cockpit / Dark Cockpit vs VS “window cabinet”; not a VS clone, different daily work.
206- **v1.43** — north-star: for JetBrains ecosystem, fairer comparison is **Rider** (not IntelliJ IDEA); differentiation axis unchanged.
207- **v1.44** — north-star: explicit **CascadeIDE as agent-first IDE** (shared loop with human; cockpit does not contradict the axis).
208- **v1.45** — north-star: **KB / agent memory** layer (knowledge canon, MCP `read_knowledge_file` / …, agent-notes); link to [MCP-PROTOCOL.md](../MCP-PROTOCOL.md).
209- **v1.46** — added [0032](adr/0032-hud-banner-configuration-and-grammar.md) (HUD: content config and grammar like `presentation`; Proposed).
210- **v1.47** — added [0033](adr/0033-internationalization-resx-avalonia.md) (i18n: ResX/Avalonia; Proposed); cross-link with [0032](adr/0032-hud-banner-configuration-and-grammar.md).
211- **v1.48** — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md): **Implementation status** section (code alignment: topology, placement, bounds); [concept-to-implementation-map-v1](ui-ux/concept-to-implementation-map-v1.md) **§6** — second `TopLevel` / `MfdHostWindow`.
212- **v1.49** — added [0034](adr/0034-pilot-incapacitation-emergency-mode-and-presence-sensing.md) (operator incapacitation, Emergency Mode, optional presence via webcam MCP; Proposed).
213- **v1.50** — chat: [0031](adr/0031-agent-chat-clarification-batches-and-threading.md) and [0057](adr/0057-chat-surface-pipeline-adoption.md) aligned to pipeline snapshot, structured clarification flow, single Skia product path without mandatory Avalonia fallback.
214- **v1.50** — [0034](adr/0034-pilot-incapacitation-emergency-mode-and-presence-sensing.md): contract clarified — EICAS and PIC signals, liveness, contextual HUD, safety interlock; “biometrics” = liveness/presence for safety.
215- **v1.51** — [0034](adr/0034-pilot-incapacitation-emergency-mode-and-presence-sensing.md): layer A — presence proxy (mouse, keyboard, focus); false positives and signal combination noted.
216- **v1.52** — [0034](adr/0034-pilot-incapacitation-emergency-mode-and-presence-sensing.md): layer C — eye tracking deferred, not baseline; accessibility (field of view ≠ tracker signal); no mandatory ET.
217- **v1.49** — blueprint [cds-contract-v0](../design/cds-contract-v0.md): CDS (cockpit contract) vs `UiLayoutSnapshot`; [0021](adr/0021-pfd-mfd-cockpit-attention-model.md) §1.1 — glossary.
218- **v1.53** — added [0035](adr/0035-mfd-embedded-webview-external-llm-and-mcp-boundary.md) (MFD: WebView2, external web LLMs; MCP boundary; hybrid via operator; web↔MCP bridge outside baseline; Proposed).
219- **v1.54** — added [0036](adr/0036-cds-channel-compositor-surface-pipeline.md) (channel → CDS → compositor → surface; Agent-first; Proposed).
220- **v1.55** — [0036](adr/0036-cds-channel-compositor-surface-pipeline.md): status **Accepted**; code layers `Cockpit/Cds`, `Cockpit/Channels`, `Cockpit/Composition`, `Cockpit/Surface` ([`cds-contract-v0`](../design/cds-contract-v0.md) §6–7).
221- **v1.56** — Roslyn analyzer [`CascadeIDE.ArchitectureAnalyzers`](../../CascadeIDE.ArchitectureAnalyzers/README.md): **CASCOPE001** / **CASCOPE002** (Cockpit layer boundaries per ADR 0036).
222- **v1.57** — added [0037](adr/0037-pfd-surface-invariants-and-roslyn-enforcement.md) (PFD: weight / input lock / channels; explicit Roslyn markers; Proposed).
223- **v1.58** — added [0038](adr/0038-agent-facade-ai-provider-and-tool-orchestration.md) (agent facade: `AiProviderManager`, chat vs ACP vs autonomous loop, `McpClientService`; direction draft in same ADR).
224- **v1.59** — added [0039](adr/0039-workspace-navigation-affordances.md) (workspace navigation: not file tree only; multiple views and “related”; Proposed).
225- **v1.60** — [0039](adr/0039-workspace-navigation-affordances.md): product metaphor (cabinet vs battle map), relevance graph, PFD/MFD, semantic map and `presentation`.
226- **v1.61** — [0037](adr/0037-pfd-surface-invariants-and-roslyn-enforcement.md): strict surface naming canon — `[PfdStrict]` / `PfdStrictControl` ([§ naming](adr/0037-pfd-surface-invariants-and-roslyn-enforcement.md#adr0037-naming)).
227- **v1.62** — [0039](adr/0039-workspace-navigation-affordances.md): language north-star — C# / .NET, not polyglot IDE; [north-star workbench](../design/north-star-cursor-mcp-cascade-workbench-v1.md) updated.
228- **v1.63** — section **“Avalonia and cockpit layer”**: fuselage (windows, input, editor host) vs CDS/compositor (cockpit semantics); custom draw on host; link [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) (weight fuse). [0036](adr/0036-cds-channel-compositor-surface-pipeline.md) §4 clarified; line in [cds-contract-v0](../design/cds-contract-v0.md) §3.
229- **v1.64** — added [0040](adr/0040-lsp-launch-line-settings-toml-presets-and-environment.md): LSP command line in `settings.toml` (presets, optional keys; `launch_from_environment` flag — Proposed).
230- **v1.65** — [north-star-cursor-mcp-cascade-workbench-v1.md](../design/north-star-cursor-mcp-cascade-workbench-v1.md): **Cursor transition** priority vs VS parity long term; this file — **Product focus** under [Goal](#goal).
231- **v1.66** — added [0041](adr/0041-protobuf-for-agent-and-ide-messages.md) (protobuf vs JSON for agent/IDE messages: boundaries, criteria, hybrid; entry point; Proposed).
232- **v1.67** — [0039](adr/0039-workspace-navigation-affordances.md): shipped MCP layer — `get_code_navigation_context` (presets in `settings.toml` `[code_navigation]`, merge, `kind_filter` echo, subgraph: `kind` / `related_kind`); cookbook [workspace-navigation-mcp-cookbook.md](../design/workspace-navigation-mcp-cookbook.md); closed item 5 in [closed questions](adr/0039-workspace-navigation-affordances.md#adr0039-closed-questions).
233- **v1.68** — added [0045](adr/0045-agent-chat-persistence-event-log-and-projections.md): chat persistence as append-only NDJSON + meta/projections; initial `ChatSessionStore` in `Features/Chat/`.
234- **v1.69** — added [0046](adr/0046-presentation-layout-authority-and-cockpit-invariants.md): `presentation` as P/F/M cockpit invariant; CDS rules in `CockpitPresentationLayoutPolicy`; coercion from menu/MCP/UI modes/reactive layer.
235- **v1.70** — added [0047](adr/0047-cockpit-instrument-descriptor-and-slot-composition.md): slot descriptor at compositor → surface boundary; not mixed with `Control`.
236- **v1.71** — [0047](adr/0047-cockpit-instrument-descriptor-and-slot-composition.md): canonical term **Instrument** (cockpit) and type `CockpitInstrumentDescriptor` instead of draft *Widget* / `CockpitWidgetDescriptor`; ADR file renamed.
237- **v1.72** — [0047](adr/0047-cockpit-instrument-descriptor-and-slot-composition.md): status **Accepted** (term and descriptor axis fixed; registry/wire — roadmap).
238- **v1.73** — layer **`Cockpit/Composition/HostSurface`**: `MainWindowHostSurfaceFrame` + compositor (shell + `CockpitInstrumentDescriptor`); VM builds frame in one call — boundary before Skia in slots, Avalonia as host ([cds-contract-v0](../design/cds-contract-v0.md) §3, §7).
239- **v1.74** — `Cockpit/Cds/CockpitSurfaceState` (schema `0.3`) gained `instruments` as HostSurface frame projection for MCP/observability; added `Cockpit/Surface/MainWindowInstrumentMountRegistry` (`instrument_id → mount`, Avalonia/Skia host layer, no semantic map UI on this step).
240- **v1.75** — [0046](adr/0046-presentation-layout-authority-and-cockpit-invariants.md): title, §Decision, indexes aligned to CDS canon (`CockpitPresentationLayoutPolicy`); static layer in `Services/Presentation` removed, VM boundary — intent `Apply*` only.
241- **v1.76** — Roslyn **CASCOPE003** ([`CascadeIDE.ArchitectureAnalyzers`](../../CascadeIDE.ArchitectureAnalyzers/README.md)): ban direct P/M intent assigns outside allowlist; see [0046](adr/0046-presentation-layout-authority-and-cockpit-invariants.md).
242- **v1.77** — added [0049](adr/0049-skia-surface-rollout-over-avalonia-host.md): phased Skia surfaces in CIDE with Avalonia as host; wave migration, dual-path and fallback until stable.
243- **v1.78** — ADR index: [0050](adr/0050-declarative-instrument-zone-placement-toml.md) (instrument map in TOML), [0051](adr/0051-intent-based-attention-routing-toml.md) (intent routing), [0052](adr/0052-agent-contract-cli-and-snapshot-tests.md) (agent contract CLI and snapshot tests).
244- **v1.79** — [0052](adr/0052-agent-contract-cli-and-snapshot-tests.md): status **Accepted** (CLI + snapshot tests direction; no open questions).
245- **v1.80** — [0052](adr/0052-agent-contract-cli-and-snapshot-tests.md): first delivery — `--agent-contract get_ui_modes_diagnostics`, `AgentContractRunner`, tests; MCP-PROTOCOL §agent contract CLI.
246- **v1.81** — [adr/status-lifecycle.md](adr/status-lifecycle.md): ADR status convention (**Accepted · Implemented** for shipped code); `.cursor/` in repo `.gitignore` — duplicate locally in Cursor rules if desired. Table row [0051](adr/0051-intent-based-attention-routing-toml.md) below — **Accepted · Implemented**.
247- **v1.82** — ADR table above: **Accepted · Implemented** aligned with ADR headers and [adr/README.md](adr/README.md) for shipped decisions (incl. [0008](adr/0008-mcp-contracts-and-testable-infrastructure.md), [0010](adr/0010-ui-modes-toml-configuration.md), [0015](adr/0015-editor-toml-syntax-highlighting.md)–[0017](adr/0017-multi-window-workspace-and-agent-surfaces.md), [0019](adr/0019-shared-git-core-ide-and-git-mcp.md), [0028](adr/0028-user-settings-toml-localappdata-and-secrets.md)–[0029](adr/0029-configuration-toml-canonical-ui-facade.md), [0036](adr/0036-cds-channel-compositor-surface-pipeline.md), [0039](adr/0039-workspace-navigation-affordances.md)–[0040](adr/0040-lsp-launch-line-settings-toml-presets-and-environment.md), [0046](adr/0046-presentation-layout-authority-and-cockpit-invariants.md)–[0047](adr/0047-cockpit-instrument-descriptor-and-slot-composition.md)).
248- **v1.83** — [0053](adr/0053-semantic-map-control-flow-pfd.md): semantic map and control flow on PFD (branches, KISS, Roslyn CFG, subgraph/MCP); status **Accepted · Implemented**.
249- **v1.84** — added [0054](adr/0054-benchmarking-methodology-and-baselines.md): CIDE benchmark protocol (scenarios, metrics, baseline, comparison rules); status **Proposed**.
250- **v1.85** — added [0058](adr/0058-agent-roslyn-mcp-coupling-settings-toml.md): agent ↔ Roslyn MCP in `settings.toml` (limits, node kinds, timeouts, presets); consumer table; v0 vs deferred; status **Proposed**.
251- **v1.86** — [0058](adr/0058-agent-roslyn-mcp-coupling-settings-toml.md): §6 — named profiles, Manager, Auto-Focus / Combat / Echelon (then Glide Slope); links [0010](adr/0010-ui-modes-toml-configuration.md), [0051](adr/0051-intent-based-attention-routing-toml.md), [0055](adr/0055-skia-instrument-composition-pipeline.md).
252- **v1.87** — [0058](adr/0058-agent-roslyn-mcp-coupling-settings-toml.md): §7 — third monitor as EFB / strategic `Profile.GlobalMap` vs tactical PFD; [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md), [0021](adr/0021-pfd-mfd-cockpit-attention-model.md).
253- **v1.88** — split: [0058](adr/0058-agent-roslyn-mcp-coupling-settings-toml.md) — TOML keys/axes for MCP coupling only; [0059](adr/0059-roslyn-mcp-profiles-manager-tactical-strategic-efb.md) — profiles, Manager, modes, EFB (moved from former §6–§7 in 0058).
254- **v1.89** — [0059](adr/0059-roslyn-mcp-profiles-manager-tactical-strategic-efb.md): calm input mode renamed **Glide Slope → Echelon** (less confusion with ILS glide path).
255- **v1.90** — [0059](adr/0059-roslyn-mcp-profiles-manager-tactical-strategic-efb.md): **EFB = MFD**, not PFD; hysteresis tactical loop only (§2); EFB static / on intent.
256- **v1.91** — added [0060](adr/0060-keyboard-chord-stack-fms-tactical-strategic.md): chord layer and FMS-style (**S/T**), overlay, MODE indication; extends [0013](adr/0013-command-surface-and-discoverability.md); **Ctrl+K** vs palette **Ctrl+Q**.
257- **v1.92** — added [0061](adr/0061-context-aware-adr-map-pfd-knowledge-indicator.md): contextual ADR ↔ path map in `workspace.toml`, PFD indicator, intent/tooltip, agent advisory; status **Proposed** (implementation deferred).
258- **v1.93** — added [0063](adr/0063-instrument-deck-named-composition-one-anchor.md): **instrument deck** — named instrument composition in one anchor; distinct from WH Page and v1 `[instrument_routing]`; status **Proposed**.
259- **v1.94** — [0063](adr/0063-instrument-deck-named-composition-one-anchor.md): **ContentRepresentation** axis — canon **Strip/Page**; WH `DedicatedPage` — Page mode on this axis; composition axis — deck / WH segment order; blueprint [workspace-health-implementation-map-v1](../design/workspace-health-implementation-map-v1.md) §1.
260- **v1.95** — [0063](adr/0063-instrument-deck-named-composition-one-anchor.md): direction for **indicator types** in deck — **Lamp / Bar / Sign** (compact pages; not v1 code contract).
261- **v1.96** — [0063](adr/0063-instrument-deck-named-composition-one-anchor.md): extended primitive taxonomy; **Presence/Activity** and **Dark Cockpit** alignment ([0021](adr/0021-pfd-mfd-cockpit-attention-model.md) §6).
262- **v1.97** — [0063](adr/0063-instrument-deck-named-composition-one-anchor.md): status **Accepted** (terminology **instrument deck** / **`ContentRepresentation`**; display topology keys — [0017](adr/0017-multi-window-workspace-and-agent-surfaces.md) § `display.screens` / `topology`).
263- **v1.98** — added [0064](adr/0064-deck-primitives-visual-language-render-layer-and-palette.md): deck product primitives — unified graphics; graphics layer (`Cockpit/PrimitivesKit`); semantic palette and Dark Cockpit; product primitive vs scene tokens; status **Accepted**.
264- **v1.99** — [0064](adr/0064-deck-primitives-visual-language-render-layer-and-palette.md): canon **“indicator kind”** / **signal form**; product ↔ code lexicon (`DeckPrimitiveKind`); **render library** not “another layer”; no separate runtime tier.
265- **v2.00** — added [0065](adr/0065-instrument-categories-domain-taxonomy.md): **instrument categories** as domain axis (CodeNavigation / WorkspaceNavigation / repo topology); orthogonal to slot and `instrument_id`; “Semantic map” — graph, not instrument; optional `instrument_category` in descriptor — as needed; status **Accepted**.
266- **v2.01** — [0065](adr/0065-instrument-categories-domain-taxonomy.md): “Semantic map” narrow sense — **code intent map**; **`graph_kind`** axis (graph type in wire/MCP); minimum value table.
267- **v2.02** — added [0066](adr/0066-cockpit-ui-vs-ide-presentation-layer.md): two pillars — **Cockpit UI** vs **IDE presentation** (`UiChrome`, overlays, theme); invariant — do not mix instrument and shell semantics; status **Accepted**.
268- **v2.03** — [0066](adr/0066-cockpit-ui-vs-ide-presentation-layer.md): build **CASCOPE011** / **CASCOPE012** (`CascadeIDE.ArchitectureAnalyzers`) — `using` boundary between `Features/UiChrome` and `Cockpit/PrimitivesKit`.
269- **v2.04** — added [0067](adr/0067-graph-backed-surfaces-contract.md): **graph-backed surface** as architectural class; contract dimensions table (data, interaction, navigation, layout, selection, sync); status **Accepted**.
270- **v2.05** — added [0068](adr/0068-deck-row-payload-and-presentation-projection.md): three layers — **row payload**, **slot identity**, **presentation projection**; link [0063](adr/0063-instrument-deck-named-composition-one-anchor.md); homogeneous DTO in v1 OK; status **Accepted**.
271- **v2.06** — added [cascadeide-philosophy-v1](../design/cascadeide-philosophy-v1.md) (philosophy reference: DX, “good actor”, cloud inline-assistant risk class) and [0071](adr/0071-ai-assistance-sovereignty-locality-invisibility.md) (sovereignty/locality/invisibility for AI in IDE; anti-pattern); ADR status **Proposed**.
272- **v2.07** — added [0072](adr/0072-chat-topic-cards-intent-melody-keyboard-contract.md): topic cards, drill-in/back, adaptive default view; mandatory v1 intent layer for chat topic navigation (palette / Melody / Chords); links [0031](adr/0031-agent-chat-clarification-batches-and-threading.md), [0057](adr/0057-chat-surface-pipeline-adoption.md); **refines** [0060](adr/0060-keyboard-chord-stack-fms-tactical-strategic.md) in chat domain only; status **Proposed**.
273- **v2.08** — added [0073](adr/0073-pfd-instrument-deck.md): PFD instrument deck — variant catalog (SA, code metrics, semantic map, ADR indicator…), placement criteria; **Proposed**, complements [0021](adr/0021-pfd-mfd-cockpit-attention-model.md) and [0063](adr/0063-instrument-deck-named-composition-one-anchor.md).
274- **v2.09** — added [0074](adr/0074-settings-ui-mfd-compact-layout-overflow.md): settings — more compact, MFD anchor; overflow strategies in P+F+M table; **Proposed**, [0029](adr/0029-configuration-toml-canonical-ui-facade.md) canon unchanged.
275- **v2.10** — added [0075](adr/0075-ui-topic-index-and-mfd-page-conventions.md): [adr/UI](adr/UI/README.md) as UI topic index; normative ADRs stay in `docs/adr/`; **Proposed**.
276- **v2.11** — added [0076](adr/0076-ui-ux-principles-hub.md): **UI/UX principles hub** — connected text from [`snippets/ui`](adr/snippets/ui/README.md) (attention/cockpit, product philosophy vs “second VS” and cloud inline risk); **Proposed**; complements [0075](adr/0075-ui-topic-index-and-mfd-page-conventions.md) and [cascadeide-philosophy-v1](../design/cascadeide-philosophy-v1.md).
277- **v2.12** — added [0077](adr/0077-tech-principles-hub.md): **TECH principles hub** — connected text from [`snippets/tech`](adr/snippets/tech/README.md) (boundaries/contracts/MCP/git/LSP; agent/debug/observability); topic index [adr/TECH/README.md](adr/TECH/README.md), build `adr-book-tech.md`; **Proposed**.
278- **v2.13** — added [0079](adr/0079-ide-display-system-ids-overlay-pipeline.md): **IDS** — IDE overlay pipeline (palette and beyond), orthogonal to **CDS**; unified input capture and slots — strangler; status **Accepted**; “Where recorded” table updated.
279- **v2.14** — [0079](adr/0079-ide-display-system-ids-overlay-pipeline.md): Roslyn **CASCOPE013–016** in `CascadeIDE.ArchitectureAnalyzers` — `IdeDisplay/` without Cockpit/Avalonia/UiChrome; `Cockpit/` without `IdeDisplay`; analyzer README and navigator row updated.
280- **v2.15** — added [0080](adr/0080-intercom-naming-and-multi-party-channel-model.md): **Intercom** as product name for communication channel (agent, team, system); open UI/i18n questions; **Proposed**; navigator table row.
281- **v2.16** — [0080](adr/0080-intercom-naming-and-multi-party-channel-model.md): §5 ready-made team loop (integration/API) vs in-house; link [0035](adr/0035-mfd-embedded-webview-external-llm-and-mcp-boundary.md) for WebView risk; open question item 5; README index and navigator row clarified.
282- **v2.17** — [0080](adr/0080-intercom-naming-and-multi-party-channel-model.md): spelling canon **Intercom** (one **m**); ADR file renamed from `0080-intercomm-…` to `0080-intercom-…`; **Intercomm** as typo in §4.
283- **v2.18** — [0080 future modalities](adr/0080-intercom-naming-and-multi-party-channel-model.md#adr0080-future-modalities): async voice in thread, expressive TTS (incl. OpenTTS), duplex/“radio” as separate requirement class; no v1 commitment.
284- **v2.19** — [0080 future modalities](adr/0080-intercom-naming-and-multi-party-channel-model.md#adr0080-future-modalities): code anchors (deep link, range, selection) and alternate anchor representation; links [0039](adr/0039-workspace-navigation-affordances.md), [0067](adr/0067-graph-backed-surfaces-contract.md); no v1 commitment.
285- **v2.20** — added [0081](adr/0081-parametric-intent-melodies-editor-line-ranges.md): parametric Intent Melody with `:startLine:endLine` suffix for editor text ops; validation; range refactors; UX (indicator, chord vs palette); **Proposed**; index [README](adr/README.md), navigator row, [UI/README](adr/UI/README.md).
286- **v2.21** — added [0082](adr/0082-acp-ide-mcp-loopback-single-process.md): ACP inside IDE — direction to MCP IDE in **same process** (loopback HTTP/SSE), no second `CascadeIDE --mcp-stdio`; security; keep external `--mcp-stdio`; **Proposed**; index [README](adr/README.md), [TECH/README](adr/TECH/README.md), navigator row.
287- **v2.22** — added [0084](adr/0084-agent-edits-editor-source-of-truth-presence-channel.md): agent edits — **single text in editor**; chat — intent and status; **presence** layer (cursor, “typing”) separate; diff in chat not primary; preview/live and risks — in ADR; **Proposed**; index [README](adr/README.md), [UI/README](adr/UI/README.md), [TECH/README](adr/TECH/README.md), `principles.md`, `ui-adr-manifest` / `tech-adr-manifest`, navigator row.
288- **v2.23** — [0084 context and risk table](adr/0084-agent-edits-editor-source-of-truth-presence-channel.md): **review-only / lead** persona lowers *frequency* of personal-input conflicts; canon for simultaneous edit mitigation **not** weakened.
289- **v2.24** — added [0085](adr/0085-editor-hud-inline-layer-and-hud-banner.md): **Editor HUD** (inline at caret/in text) vs **HUD banner** (strip above editor); distinct from IDS; **Proposed**; index [README](adr/README.md), [UI/README](adr/UI/README.md), `UI/principles.md`, `ui-adr-manifest`, navigator row; cross-ref [0021 §9](adr/0021-pfd-mfd-cockpit-attention-model.md).
290- **v2.25** — added [0086](adr/0086-ui-theme-toml-canonical-json-mcp-wire.md): UI theme — **TOML canon** (`settings.toml`), **JSON** for MCP `ide_get/set_ui_theme` as wire, strangler `Themes/*.json`; **Proposed**; index [README](adr/README.md), navigator row, `tech-adr-manifest`.
291- **v2.26** — added [0092](adr/0092-visual-ui-designer-major-track.md): **Visual UI** track (layout designer) as **separate major** program line; [0022](adr/0022-mfd-visual-design-surface-axaml-blazor.md) remains product/UX norm; stack priority Avalonia → Blazor → (opt.) Razor; **Accepted**; index [README](adr/README.md), navigator row.
292- **v2.27** — added [0093](adr/0093-mfd-embedded-browser-for-launch-url.md): extension to [0090](adr/0090-launch-profiles-and-debug-startup-configurations.md) — **optional** embedded Kestrel URL viewer on MFD; external browser default; **Proposed**; index [README](adr/README.md), [TECH/README](adr/TECH/README.md), `tech-adr-manifest`, link from [0090](adr/0090-launch-profiles-and-debug-startup-configurations.md), navigator row.
293- **v2.28** — added [0094](adr/0094-ingestion-bus-afdx-analogy-and-threading-channels.md): UI event delivery bus (**AFDX** analogy), `Channel<T>`, batching and backpressure; orthogonal to CDS “channel”; **Proposed**; index [README](adr/README.md), [TECH/README](adr/TECH/README.md), `tech-adr-manifest`, navigator row.
294- **v2.29** — added [0095](adr/0095-workspace-solution-ide-health-stratification.md): three Health levels (**Workspace** / **Solution** / **IDE**), taxonomy for channels and MCP; strangler from current IDE Health; **Proposed**; index [README](adr/README.md), [TECH/README](adr/TECH/README.md), `tech-adr-manifest`, navigator row.
295- **v2.30** — added [0096](adr/0096-intercom-topic-card-summary-and-product-spine.md): Intercom — **topic card summary** (card index) and product **spine** (CIDE example in main repo) orthogonal to main thread; complements [0072](adr/0072-chat-topic-cards-intent-melody-keyboard-contract.md); **Proposed**; index [README](adr/README.md), navigator row; links in [0072](adr/0072-chat-topic-cards-intent-melody-keyboard-contract.md), [0080](adr/0080-intercom-naming-and-multi-party-channel-model.md).
296- **v2.31** — added [0097](adr/0097-cockpit-compute-units-transport-to-channel-dto.md): **cockpit compute units (CCU)** — fold raw input into channel snapshot/DTO (LRU *Unit* analogy between bus and indication); orthogonal to [0094](adr/0094-ingestion-bus-afdx-analogy-and-threading-channels.md) and CDS; **Proposed**; index [README](adr/README.md), navigator row; cross-links in [0094](adr/0094-ingestion-bus-afdx-analogy-and-threading-channels.md), [0095](adr/0095-workspace-solution-ide-health-stratification.md), blueprint [`workspace-health-implementation-map-v1.md`](../design/workspace-health-implementation-map-v1.md). ADR file renamed from `…compute-nodes…` to `…compute-units…` (canon **unit**, not *node*).
297- **v2.32** — added semantic-first ADR: **semantic-first** — semantic map primary, code/docs/git — projections; aligned with [0084](adr/0084-agent-edits-editor-source-of-truth-presence-channel.md) on edit session; [0009](adr/0009-strangler-migration-and-exceptions.md) for migration; **Proposed**; index [README](adr/README.md), [TECH/README](adr/TECH/README.md), `tech-adr-manifest`, navigator row; hint at future ADR **0100** (separate). *(Initially **0099**, renumbered to [0098](adr/0098-semantic-first-document-as-projection.md) — v2.33.)*
298- **v2.33** — [0098](adr/0098-semantic-first-document-as-projection.md) (**semantic-first**): file and number renamed **0099** → **0098**; internal ADR refs and indexes updated.
299- **v2.34** — [0097](adr/0097-cockpit-compute-units-transport-to-channel-dto.md): **Accepted · Implemented** (CCU reference in IDE Health, **CASCOPE019**; see [0099](adr/0099-ide-databus-typed-events-and-projections.md)); [0099](adr/0099-ide-databus-typed-events-and-projections.md): **Accepted · Implemented**; navigator row and index [README](adr/README.md) synced.
300- **v2.35** — [0103](adr/0103-editor-hud-substrate-semantic-projection-and-surface-adapter.md): **Editor HUD substrate** (projection pipeline, `EditorHudEngine`, `IEditorSurfaceAdapter`); DAL [0102](adr/0102-data-acquisition-layer-boundary-and-contract.md) / CCU [0097](adr/0097-cockpit-compute-units-transport-to-channel-dto.md) / DataBus [0099](adr/0099-ide-databus-typed-events-and-projections.md) boundaries; separate **hi-freq** bounded path; baseline **AvaloniaEdit**; companions [editor-surface-candidates-comparison-v1](../design/editor-surface-candidates-comparison-v1.md), [editor-forward-ui-cleanup-roadmap-v1](../ui-ux/editor-forward-ui-cleanup-roadmap-v1.md); **Proposed**; index [README](adr/README.md), navigator row.
301- **v2.36** — [0103](adr/0103-editor-hud-substrate-semantic-projection-and-surface-adapter.md) and companion `design/` / `ui-ux/`: **canonical Russian text**; ADR title, sections, tables without English body; index and navigator row clarified (“substrate”).
302- **v2.37** — [0103](adr/0103-editor-hud-substrate-semantic-projection-and-surface-adapter.md): status **Accepted (strangler)**; “Implementation status” subsection; index [README](adr/README.md), navigator row.
303- **v2.38** — [0079](adr/0079-ide-display-system-ids-overlay-pipeline.md): subsection **“Distinguishing CDS and IDS (one app, two domains)”** (table, mnemonic, CASCOPE016); navigator — **CDS vs IDS** subsection with anchor `adr0079-cds-vs-ids`.
304- Direction changes — separate commit: update this file and new ADR in [adr/README.md](adr/README.md) when needed.
305
View only · write via MCP/CIDE