| 1 | # ADR 0121: Парадигма Intent-Oriented Programming (IOP) — концептуальный фундамент Cascade IDE |
| 2 | |
| 3 | **Статус:** Accepted |
| 4 | **Дата:** 2026-05-17 |
| 5 | |
| 6 | ## Связанные ADR |
| 7 | |
| 8 | | ADR | Роль | |
| 9 | |-----|------| |
| 10 | | [0100](0100-project-constitution.md) | Конституция: agent-first, кокпит, общая операционная модель | |
| 11 | | [0013](0013-command-surface-and-discoverability.md) | Палитра, keyboard-first, discoverability команд | |
| 12 | | [0051](0051-intent-based-attention-routing-toml.md) | Intent-based routing внимания (TOML) | |
| 13 | | [0072](0072-chat-topic-cards-intent-melody-keyboard-contract.md) | Intent-first: topic cards, Melody/Chords, `command_id` | |
| 14 | | [0080](0080-intercom-naming-and-multi-party-channel-model.md) | Intercom — канал сессии и намерений | |
| 15 | | [0109](0109-declarative-parametric-melody-catalog-toml-and-code-binders.md) | Каталог Intent Melody (декларативный слой интентов) | |
| 16 | | [0119](0119-chat-slash-commands-intercom-surface.md) | Слэш в Intercom → тот же `command_id`, что палитра/MCP | |
| 17 | | [0120](0120-primary-work-surface-intercom-or-editor.md) | Якорь Forward: Intercom или редактор — где живёт IOP-цикл | |
| 18 | | [0174](0174-sedm-software-engineering-decision-making-ux-spine.md) | SEDM — операционная модель под IOP; фазы → UX | |
| 19 | | [0122](0122-collaborative-iop-environment-and-shared-situational-display.md) | Среда: N станций `(P)(F)(M)` + общий ситуационный экран комнаты | |
| 20 | | [0019](0019-shared-git-core-ide-and-git-mcp.md) | Паритет git: человек и агент в одном контуре | |
| 21 | | [0084](0084-agent-edits-editor-source-of-truth-presence-channel.md) | Редактор — source of truth текста; чат — intent/status | |
| 22 | |
| 23 | ### Вне ADR |
| 24 | |
| 25 | | Документ | Роль | |
| 26 | |----------|------| |
| 27 | | [iop-manifest-v1.md](../iop-manifest-v1.md) | Краткий манифест IOP для сайта и онбординга | |
| 28 | | [architecture-policy.md](../architecture-policy.md) | Политика архитектуры, north-star, KB | |
| 29 | | [MCP-PROTOCOL.md](../MCP-PROTOCOL.md) | Команды IDE/MCP — исполнение интентов | |
| 30 | | [intent-melody-language-v1.md](../intent-melody-language-v1.md) | Грамматика `c:` (Melody), не слэши чата | |
| 31 | | [design/north-star-cursor-mcp-cascade-workbench-v1.md](../design/north-star-cursor-mcp-cascade-workbench-v1.md) | Границы «Cursor + MCP + Cascade» | |
| 32 | |
| 33 | ## Резюме |
| 34 | |
| 35 | - Принять **Intent-Oriented Programming (IOP)** — *интенционально-ориентированное программирование* — как **именованную парадигму продукта** Cascade IDE: прежде всего **дисциплина коммуникации** в контуре разработки (**рабочая реализация гипотезы в продукте**), а не замена ООП/ФП. |
| 36 | - Три столпа IOP в CIDE: **намерение вместо ручного синтаксиса** (intent layer), **двухконтурная верификация** (агент синтезирует — человек утверждает diff), **эпистемический контекст** (канон KB и маршрутизация контекста как нормативный слой для агента). |
| 37 | - Публичная формулировка для команды и сайта — [iop-manifest-v1.md](../iop-manifest-v1.md); этот ADR — нормативная привязка к существующим решениям и non-goals. |
| 38 | |
| 39 | --- |
| 40 | |
| 41 | ## Контекст |
| 42 | |
| 43 | В экосистеме agent-first IDE уже есть «intent-first» в отдельных ADR ([0072](0072-chat-topic-cards-intent-melody-keyboard-contract.md), [0055](0055-skia-instrument-composition-pipeline.md) Intent→…→Render), каталог **Intent Melody**, слой **Intercom**, паритет **MCP** и **Roslyn**. Не хватает **единого имени парадигмы**, которое: |
| 44 | |
| 45 | 1. объясняет новичку (в т.ч. на испытательном сроке), *почему* продукт устроен так, а не как «VS + чат»; |
| 46 | 2. связывает разрозненные ADR в одну ментальную модель; |
| 47 | 3. честно отделяет **гипотезу и рабочую реализацию в продукте** от претензии «единственный стандарт индустрии» или «эталон по спецификации». |
| 48 | |
| 49 | Обсуждение с командой (в т.ч. с Атласом) предложило термин **IOP** по аналогии с ООП и ФП. Смысл глубже, чем UI-команды: ИТ в глобальном смысле про **информационный поток** (цели, намерения, процессы, коммуникация, прозрачность); разработка ПО — часть потока, а не весь предмет. Агенты усилили старую истину: без явных намерений и общей картины код и команда расходятся в хаос. |
| 50 | |
| 51 | --- |
| 52 | |
| 53 | ## Проблема |
| 54 | |
| 55 | 1. **Поверхностное чтение IOP:** формулировка «базовая единица — интент» звучит как «ещё слэши», хотя речь о **договорённости о цели** в информационном контуре команды. |
| 56 | 2. **Когнитивный потолок:** человек не удерживает 100k+ строк монолита как «один текст в голове»; роль человека — архитектура и верификация, не ручной компилятор синтаксиса. |
| 57 | 3. **Разрыв контуров:** без общей парадигмы легко дублировать парсинг команд (слэш в чате vs Melody vs MCP) — см. мотивацию [0119](0119-chat-slash-commands-intercom-surface.md). |
| 58 | 4. **Слабый контекст агента:** без канона KB и маршрутизации (`route_context`, playbook'и) интенты «плывут»; нужна явная модель **эпистемических ограничений**, а не только промпт. |
| 59 | 5. **Маркетинг vs инженерия:** без ADR термин IOP рискует звучать как декларация «революции» без привязки к коду и статусам ADR. |
| 60 | |
| 61 | --- |
| 62 | |
| 63 | ## Решение |
| 64 | |
| 65 | <a id="adr0121-p1"></a> |
| 66 | |
| 67 | ### 1. Определение IOP (в scope Cascade IDE) |
| 68 | |
| 69 | **Intent-Oriented Programming (IOP)** — способ организации работы в IDE, где: |
| 70 | |
| 71 | - **предмет** — согласованный **информационный поток** (цели, процессы, коммуникация, прозрачность), а не только текст программы; |
| 72 | - **интент** — *именованная договорённость* о намерении или целевом состоянии в этом потоке (не синтаксис и не «ещё один слэш»); |
| 73 | - **исполнение** (в т.ч. генерация кода) делегируется агенту и инфраструктуре (MCP, сборка, Roslyn, git) под **наблюдаемостью** человека; |
| 74 | - **корректность** проверяется по **дельте** (diff, диагностики, тесты) и по **нормативному знанию** (KB), а не только по «сгенерировалось ли что-то». |
| 75 | |
| 76 | IOP в CIDE — **дисциплина коммуникации** в agent-first IDE (информационный поток сделан явным и проверяемым). **C#, проекты и редактор остаются source of truth** для текста программы ([0084](0084-agent-edits-editor-source-of-truth-presence-channel.md), [0098](0098-semantic-first-document-as-projection.md)). |
| 77 | |
| 78 | <a id="adr0121-p2"></a> |
| 79 | |
| 80 | ### 2. Три столпа IOP в Cascade IDE |
| 81 | |
| 82 | | Столп | Смысл | В CIDE (уже есть / в пути) | |
| 83 | |-------|--------|----------------------------| |
| 84 | | **1. Поток и явное намерение** | Согласованный информационный поток; интент = договорённость о цели/состоянии | Intercom, topic cards, KB/ADR; Intent Melody, `command_id`, палитра, [0119](0119-chat-slash-commands-intercom-surface.md) слэши → тот же контур, что MCP; [0109](0109-declarative-parametric-melody-catalog-toml-and-code-binders.md) | |
| 85 | | **2. Двухконтурная верификация** | Агент синтезирует; человек — архитектор и арбитр diff | Forward (редактор) / Intercom ([0120](0120-primary-work-surface-intercom-or-editor.md)); Roslyn MCP, build/test MCP, git MCP; human-in-the-loop на merge | |
| 86 | | **3. Эпистемический контекст** | Нормативный слой над кодом — канон KB, router, политики | kb-public, agent-notes, дерево `knowledge/` (каталог `domains/` — **путь в репо**, не термин «домен»); [architecture-policy](../architecture-policy.md), [0100](0100-project-constitution.md) | |
| 87 | |
| 88 | «Компилятор интента» в метафоре манифеста — **не один бинарник**, а связка: **Intercom + command surface + MCP + агент + верификация в IDE**. |
| 89 | |
| 90 | <a id="adr0121-p3"></a> |
| 91 | |
| 92 | ### 3. Рабочая реализация в продукте |
| 93 | |
| 94 | Cascade IDE — **открытая рабочая реализация** предложенной парадигмы IOP (**экземпляр в продукте**, не эталон по внешней спецификации): стек IDE, Roslyn MCP, agent-notes, kb-public, документируемый на [сайте проекта](https://ai-guiders.github.io/cascade-ide/). |
| 95 | |
| 96 | Формулировки уровня «весь мир перейдёт на IOP», «единственный в мире компилятор» или **reference implementation** в смысле ISO/W3C **не** являются частью этого ADR — только **рабочая гипотеза парадигмы** для продукта и сообщества AI-Guiders. |
| 97 | |
| 98 | <a id="adr0121-p4"></a> |
| 99 | |
| 100 | ### 4. Терминология (глоссарий v0) |
| 101 | |
| 102 | Полный словарь продукта: [cide-glossary-v1.md](../design/cide-glossary-v1.md). |
| 103 | |
| 104 | | Термин | Значение в IOP/CIDE | |
| 105 | |--------|---------------------| |
| 106 | | **Intent** | Именованная договорённость о цели/целевом состоянии в информационном потоке; в CIDE носители — Intercom, KB, `command_id`, Melody, slash (не «атом = слэш») | |
| 107 | | **Intent Melody** | Декларативный/параметрический язык привязки интентов к UI и горячим клавишам | |
| 108 | | **Intercom** | Канал сессии: диалог, topic cards, слэши — лобовая поверхность намерений ([0080](0080-intercom-naming-and-multi-party-channel-model.md)) | |
| 109 | | **Verification loop** | Синтез → diff/диагностики/тесты → принятие или откат человеком | |
| 110 | | **Epistemic context** | KB, agent-notes, router/playbook'и, политики — ограничители смысла для агента | |
| 111 | |
| 112 | --- |
| 113 | |
| 114 | ## Non-goals |
| 115 | |
| 116 | - **Не** сводить IOP к слэш-командам, палитре или Melody — это поверхности, не парадигма. |
| 117 | - **Не** заменять ООП, ФП или C# в репозитории пользователя «интентами вместо кода». |
| 118 | - **Не** автономный merge в main без human-in-the-loop (см. [0100](0100-project-constitution.md), git-политики). |
| 119 | - **Не** IOP без инфраструктуры верификации (Roslyn/build/test/git) — иначе это только чат. |
| 120 | - **Не** претензия на стандарт ISO/ECMA; IOP здесь — **продуктовая и архитектурная** рамка CIDE. |
| 121 | - **Не** дублировать тело [0119](0119-chat-slash-commands-intercom-surface.md) / [0109](0109-declarative-parametric-melody-catalog-toml-and-code-binders.md) — только связующий слой. |
| 122 | - **Не** обещать «переварить любой поток» от пользователей: IOP снижает хаос коммуникации, а не отменяет лимиты внимания человека и команды. |
| 123 | |
| 124 | --- |
| 125 | |
| 126 | ## Риски и границы (честно) |
| 127 | |
| 128 | | Риск | Ответ IOP/CIDE | |
| 129 | |------|----------------| |
| 130 | | **Intercom = бесконечная лента** | Intercom — **центр коммуникации вокруг цели** ([0080](0080-intercom-naming-and-multi-party-channel-model.md), [0120](0120-primary-work-surface-intercom-or-editor.md)), не generic messenger; topic cards, spine, треды ([0072](0072-chat-topic-cards-intent-melody-keyboard-contract.md), [0031](0031-agent-chat-clarification-batches-and-threading.md)) | |
| 131 | | **«Не вывезем поток от людей»** | Не вывозят и люди без структуры; продукт **не увеличивает** входящий шум, а **именует намерения** и отделяет синтез от верификации | |
| 132 | | **Агент делает всё подряд** | Human-in-the-loop, diff, non-goals на автономный merge; слэш/MCP — контракт, не хаос сообщений | |
| 133 | |
| 134 | --- |
| 135 | |
| 136 | ## Последствия |
| 137 | |
| 138 | - **Intercom** в перспективе — **центр коммуникации вокруг цели** (люди + агенты → намерение → реализация), см. [0120](0120-primary-work-surface-intercom-or-editor.md), [0080](0080-intercom-naming-and-multi-party-channel-model.md). |
| 139 | - **Командная среда** — несколько кокпитов + **общий ситуационный экран** (не лента чата), см. [0122](0122-collaborative-iop-environment-and-shared-situational-display.md). |
| 140 | - Новые фичи command/chat/MCP описываются как **расширение intent surface** + **parity** + **verification**, с отсылкой к столпам IOP. |
| 141 | - Сайт документации: блок на [главной](../index.md), [манифест IOP](../iop-manifest-v1.md), EN-версия в `docs/en/`. |
| 142 | - При **Accepted** — одна строка в [architecture-policy.md](../architecture-policy.md) (цель / позиционирование) и при необходимости глоссарий в [MCP-PROTOCOL.md](../MCP-PROTOCOL.md). |
| 143 | - Онбординг (испытательный срок, контрибьюторы): сначала манифест + [concept-overview](../en/concept-overview.md) / главная, затем ADR по теме. |
| 144 | |
| 145 | --- |
| 146 | |
| 147 | ## Статус реализации (на момент Accepted) |
| 148 | |
| 149 | | Столп | Зрелость | Комментарий | |
| 150 | |-------|----------|-------------| |
| 151 | | Намерение | Implemented (v1) | Melody, палитра, MCP; [0119](0119-chat-slash-commands-intercom-surface.md) фазы A–B; [0120](0120-primary-work-surface-intercom-or-editor.md) | |
| 152 | | Верификация | Implemented (контур) | Редактор, Roslyn/build/git MCP; полнота UX — по roadmap | |
| 153 | | Эпистемический контекст | Implemented (внешний стек) | kb-public, agent-notes-mcp; интеграция в CIDE — по [0118](0118-agent-notes-core-2-toml-and-knowledge-path.md) | |
| 154 | |
| 155 | --- |
| 156 | |
| 157 | ## История |
| 158 | |
| 159 | | Дата | Изменение | |
| 160 | |------|-----------| |
| 161 | | 2026-05-17 | Proposed: парадигма IOP, три столпа, манифест, рабочая реализация CIDE. | |
| 162 | | 2026-05-17 | Смягчение позиционирования: «reference implementation» → «рабочая реализация в продукте». | |
| 163 | | 2026-05-17 | IOP: «домены знаний» → канон KB + маршрутизация; `knowledge/domains/` — только путь в репо. | |
| 164 | | 2026-05-17 | Глубина IOP: информационный поток, коммуникация/прозрачность; интент ≠ слэш. | |
| 165 | | 2026-05-17 | Якорная формулировка: IOP = **дисциплина коммуникации** («в коммуникации весь ключ»). | |
| 166 | | 2026-05-17 | Intercom как центр коммуникации вокруг цели; риски потока сообщений. | |
| 167 | | 2026-05-17 | Ссылка на [0122](0122-collaborative-iop-environment-and-shared-situational-display.md) — среда vs приложение. | |
| 168 | |