ADR 0171: Presentation tiers — Compact (standard IDE) vs Cockpit
Статус: Accepted · Implemented (P0–P4)
Дата: 2026-07-10
Резюме
CIDE проектировалась с трёхмониторным cockpit (P)(F)(M) и пространственным scan pattern (P → F → M). На 1–2 обычных мониторах (16:9, ноутбук) попытка «впихнуть кабину» даёт узкие колонки, ложные PFD/MFD в MainGrid и плохой UX — при том же harness под капотом.
Принято направление:
- Два presentation tier:
compact(обычная IDE) иcockpit(полный P/F/M). - 1–2 стандартных экрана → default
compact: не симулировать трёхзонную кабину колонками в одном окне. cockpit— 3 монитора или cockpit-capable холст (UltraWide и аналоги с достаточной шириной для фиксированных якорей).- Harness (MCP, Intercom, AEE, FM, KB in-proc) — одинаковый в обоих tier; меняется только presentation policy и acceptance по scan/checklist.
- Авиационная дисциплина внимания (ANC, dark cockpit для приборов) — в обоих tier; пространственный scan и scan-checklist — только cockpit.
0168 остаётся полезным переходным policy для topology (P+F)(M); этот ADR задаёт продуктовый tier выше: на compact P+F split не обязателен.
Связанные ADR
| ADR | Роль |
|---|---|
| 0017 | presentation, topology, host windows |
| 0021 | PFD / Forward / MFD, внимание, scan |
| 0046 | CockpitPresentationLayoutPolicy |
| 0066 | Cockpit UI vs IDE chrome |
| 0120 | Intercom vs Editor в Forward |
| 0166 | Harness ≠ habitat; economics |
| 0168 | 2-screen P+F collapsed — interim внутри cockpit-топологии |
| 0170 | Читаемость ленты — оба tier |
Вне ADR
| Документ | Роль |
|---|---|
| playbook-layout-presentation-intercom-troubleshooting-v1 | Симптомы layout; § tier |
| kb-aviation-pfd-mfd-efis-eicas-fundamentals-v1 | Метафора PFD/MFD |
| Comet note: cascade attention architecture (agent-notes personal) | Scan pattern как инвариант cockpit |
Контекст
1.1 North-star vs реальность оператора
| Конфигурация | Канон до ADR | Опыт оператора |
|---|---|---|
| 3 × 16:9 | (P)(F)(M), hosts, full-width Intercom на F |
Эталон; scan pattern раскрывается |
| 2 × 16:9 | (P+F)(M), 0168 |
P+F делят экран → «полоска», сырой чат на фоне layout |
| 1 × 16:9 | веса в одном MainGrid |
Симуляция кабины без пространства |
Операторский feedback (2026-07): CIDE интересна как harness, но много сырого в Intercom и layout; на 2 мониторах неудобно по сравнению с привычной IDE.
1.2 Число кабелей ≠ tier
UltraWide (32:9, 49", два логических canvas) — не «один монитор» в смысле compact, если ширина позволяет стабильные якоря с предсказуемым scan. Критерий — cockpit-capable width, не Screen.Count == 3.
1.3 Что не меняется
- Intercom wire, attachments, topics, slash, AEE, in-proc MCP.
[workspace] primary_work_surface— defaultintercom(conversation-first);editorв Forward — compact presentation с Intercom в side/bottom panel.- Авиация как язык дисциплины (не смешивать критичное с побочным) — не отменяется.
Решение
2.1 Два tier
| Tier | Когда (default) | UX-обещание |
|---|---|---|
compact |
1–2 стандартных монитора; ноутбук; узкий 21:9 | IDE-scan, conversation-first: Intercom в Forward по умолчанию; редактор — toggle; Explorer / Problems / Terminal в dock; при editor-forward — Intercom в side/bottom panel |
cockpit |
3 монитора (P)(F)(M); или cockpit_capable UltraWide |
Полный P / F / M, host windows, пространственный scan, semantic map / deck на своих якорях, dark cockpit для приборов. |
2.2 Выбор tier
Настройка (целевая):
[display.presentation]
tier = "auto" # auto | compact | cockpit
# Пороги для auto → cockpit на одном физическом экране (эвристика, уточняется)
cockpit_min_total_width_px = 4800
cockpit_min_anchor_width_px = 1280
auto (MLP):
| Условие | Tier |
|---|---|
topology явно (P)(F)(M) и ≥3 physical screens |
cockpit |
(P+F)(M) или 2 screens |
compact (MFD — dock/host по выбору, не split P+F в main) |
| 1 screen, width < порога | compact |
1 screen, width ≥ cockpit_min_total_width_px и зоны ≥ cockpit_min_anchor_width_px |
предложить cockpit (wizard), не silent |
Оператор всегда может tier = cockpit или compact вручную.
2.3 Compact — поведение (норматив)
| Элемент | Cockpit (было default mindset) | Compact |
|---|---|---|
Main MainGrid P/M колонки |
220 / 340 при якорях | 0 слева; IDE-scan слоты ниже |
| PFD semantic map / SE | default на 3-screen / слева | Правая колонка при IsPfdRegionExpanded; иначе палитра (Ctrl+P) |
| Intercom | Forward full-width | Правая панель (ChatPanelView напрямую, без MfdShellPage.Chat) |
| MFD (terminal, build, git) | правая колонка / host | Нижний dock при видимом contour content |
| Scan checklist (acceptance) | обязателен для release cockpit | не применяется |
CockpitPresentationLayoutPolicy coercion P/M |
инварианты якорей | relaxed / bypass для compact tier |
| Host windows Pfd/Mfd | типично | опционально; не default при старте |
Compact IDE-scan (presentation slots, семантика зон сохраняется):
| Зона (команда) | Слот на 1 мониторе |
|---|---|
| Forward | Центр — Intercom по умолчанию (primary_work_surface = intercom); редактор — toggle/reveal |
| PFD | Правая колонка (Solution Explorer) при раскрытии |
| Intercom | Forward (default) или правая/нижняя панель при primary_work_surface = editor |
| MFD | Нижний dock — Terminal / Build / Git / Problems |
compact_intercom_placement: side (default) — Intercom справа; bottom — Intercom снизу (над MFD при обоих видимых). Chat focus: toggle_primary_work_surface / primary_work_surface = intercom — Intercom на весь Forward (как Cursor maximize chat).
Команды (set_mfd_shell_page, focus_forward, /build) по-прежнему адресуют зону, не пиксели; compositor tier compact выбирает слот из таблицы выше.
Инвариант compact: пользователь узнаёт раскладку VS Code / Rider / Cursor — один главный canvas, панели по краям.
2.4 Cockpit — без изменений north-star
(P)(F)(M)на трёх экранах — эталон 0017.- Scan pattern P → F → M — design invariant (Comet note; 0021).
- 0168: если оператор явно держит cockpit tier на 2 экранах — PFD collapsed, SE/map на MFD; это исключение, не default path для новых пользователей.
2.5 UltraWide
Один кабель, cockpit-capable:
- Три логические зоны с фиксированными min-width на одном canvas или два logical viewport (OS «two displays on one panel»).
- Wizard: «Cockpit layout on ultrawide» vs «Compact».
- Не смешивать с compact только из-за
Screen.Count == 1.
2.6 Связь с harness (0166)
| Плоскость | Compact | Cockpit |
|---|---|---|
| Model / FM | ✅ | ✅ |
| Tools / MCP | ✅ | ✅ |
| Memory / KB | ✅ | ✅ |
| Verify / AEE | ✅ | ✅ |
| Lifecycle / checkpoint | ✅ (product hooks) | ✅ + scan ritual |
Anti-pattern: откладывать читаемость Intercom 0170 «пока не cockpit» — compact как раз первый приоритет UX.
Фазы
| Фаза | Содержание | Критерий |
|---|---|---|
| P0 | tier в settings + compact defaults для 1–2 screens; скрыть P/M колонки в main при compact |
Нет «полосы по центру» на 2 mon без ручного cockpit |
| P1 | First-run wizard: count screens + width → recommend tier | Новый пользователь не попадает в (0.25P+0.75F) silent |
| P2 | Intercom side panel layout в compact; editor primary | Паритет ощущений с «обычной IDE» |
| P3 | UltraWide cockpit zones на одном canvas | Scan checklist green |
| P4 | Документация + playbook; deprecate «всё через triple» в onboarding | README / samples |
Не цели
- Удаление cockpit tier или ADR 0017/0021.
- Отдельный продукт «CIDE Lite» — один бинарник, два presentation preset.
- Авто-migrate Cursor users в cockpit на ноутбуке.
- Vim/Emacs keymap — 0169.
Последствия
defaults-settings.toml: при отсутствии явногоtopologyдля 1–2 screens —tier = compact, не(0.25P + 0.75F) (M)как единственный default.CockpitPresentationLayoutPolicy: веткаcompact— не применять coercion «нельзя скрыть P/M якорь» 0046.- Playbook layout: симптом «узкая полоса» на 2 mon → проверить
tier; fix = compact, не только collapse PFD 0168. - Тесты:
PresentationTier.Compact→IsPfdColumnVisible == false,IsMfdColumnVisible == falseв main at startup. - Marketing / README: cockpit — power-user / 3-screen; compact — default для большинства.
История
| Дата | Событие |
|---|---|
| 2026-07-10 | Proposed: operator feedback — не впихивать cockpit на 1–2 mon; UltraWide — отдельный кейс; harness общий |
| 2026-07-10 | Accepted · Implemented: tier resolver, compact shell, ultrawide layout, first-run wizard, defaults |