Forge

docs/ / adr/0171-presentation-tiers-compact-vs-cockpit.md · branch develop

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 под капотом.

Принято направление:

  1. Два presentation tier: compact (обычная IDE) и cockpit (полный P/F/M).
  2. 1–2 стандартных экрана → default compact: не симулировать трёхзонную кабину колонками в одном окне.
  3. cockpit3 монитора или cockpit-capable холст (UltraWide и аналоги с достаточной шириной для фиксированных якорей).
  4. Harness (MCP, Intercom, AEE, FM, KB in-proc) — одинаковый в обоих tier; меняется только presentation policy и acceptance по scan/checklist.
  5. Авиационная дисциплина внимания (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 — default intercom (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.CompactIsPfdColumnVisible == 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
View only · write via MCP/CIDE