Перейти к содержанию

ADR 0034: Недееспособность оператора (Incapacitation), Emergency Mode и опциональное сенсорное присутствие

Статус: Proposed (намерение и границы зафиксированы; реализация — по отдельной дорожной карте).
Дата: 2026-04-12 · Обновлено: 2026-04-15

Связанные ADR

ADR Роль
0021 модель внимания, EICAS как слой сигналов; метафора КВС — [§1, глоссарий](0021-pfd-mfd-cockpit-attention-model.md#glossary-kvs
0025 зоны и capabilities
0032 HUD / «умное» снижение шума при ограничении внимания
0008 внешние MCP, stdio

Контекст

В авиации Pilot Incapacitation — ситуация, когда пилот не может продолжать безопасное управление (здоровье, усталость, стресс, потеря сознания). В кокпите есть процедуры передачи управления и ограничения риска.

Для Cascade IDE как «кокпита разработки» периодически поднимается идея аналогичного срабатывания на уровне продукта: если система фиксирует, что оператор перестал адекватно реагировать на критические сигналы (в т.ч. EICAS-подобные алерты) или долго не подтверждает опасные действия агента при включённой автономности, IDE переходит в Emergency Mode: жёстко фиксирует безопасное состояние рабочей копии (например запрет записи в защищённую ветку, блок автономных мутаций), требует явного выхода (перезапуск сессии, повторная авторизация, ручное снятие режима).

Отдельно обсуждается использование уже существующего в meta-repo open MCP webcam-capture-mcp не как «развлечение», а как опциональный канал сигналов — в перспективе не только «стрим пикселей», а контракт на уровне безопасности: присутствие оператора, грубая оценка внимания к экрану (при наличии отдельного контура анализа, например webcam-analysis-mcp), liveness для политик «оператор в контуре» — в дополнение к чисто программным триггерам.

Роль в «авионике» и EICAS

Когда этот контракт будет реализован, EICAS (смысл 0021: слой критичных/предупреждающих сигналов для оператора) получает ещё один класс входов — состояние КВС (оператор в кадре / не в кадре / нет подтверждения внимания к монитору), с приоритетом и объединением с существующими сигналами здоровья workspace. Аналог в авиации — не прямое копирование боевой авионики, а по смыслу: датчики «руки на управлении» / присутствия пилота и системы, которые пересчитывают риск автоматики при потере контакта (в IDE — риск автономной задачи агента).

Этот ADR не утверждает готовую реализацию и не смешивает:

  • здоровье репозитория / сборки / тестов (существующие и плановые сигналы IDE Health, EICAS в смысле 0021);
  • со состоянием человека-оператора (новый класс входов и политик).

Решение (намерение)

  1. Два класса сигналов (канон на будущее):
  2. A — программные: таймауты на критические подтверждения, отсутствие реакции на высокоприоритетные алерты при включённой автономности агента, явные пороги «сколько раз подряд отклонён опасный шаг» — без камеры. Дополнительно внутри приложения (без видео) возможны прокси-сигналы присутствия: активность указателя (движение мыши, события в зоне клиента IDE), клавиатуры (ввод в редакторе и т.д.) — как дешёвый и приватный индикатор «кто-то взаимодействует с кокпитом». Ограничения: чтение без движения курсора, уход в другое приложение, длинный простой при мониторинге — дают ложные «нет в контуре» или наоборот; политика должна комбинировать сигналы и пороги, а не опираться на мышь одну.
  3. B — опциональные внешние: данные с webcam-capture-mcp (или аналога) как датчик присутствия / отсутствия в кадре с пользовательски настраиваемыми порогами и явным opt-in; без opt-in слой B не активен.

  • C — аппаратный eye tracking (отложено, не baseline): отдельные устройства/API (Tobii и др.), калибровка, стоимость, ОС. Сильно отложенная дорожная карта, не требующаяся для первых версий политик присутствия. Риски: у части пользователей движения глаз / саккады не укладываются в «типовую» модель калибровки при нормальном поле зрения и работе с широким экраном — система не должна трактовать это как «не смотрит» или отказывать в interlock. Доступность: любой сценарий, где теоретически задействован взгляд, обязан иметь эквивалент без eye tracking (фокус, мышь, явное подтверждение).

  1. Emergency Mode (целевое поведение на высоком уровне): при выполнении политики «оператор недоступен для безопасного продолжения» — стабилизация: остановка или приостановка автономных действий с побочными эффектами, блок опасных git-операций (как минимум push/merge в защищённые ветки — точная матрица — в проектировании), сохранение состояния UI/сессии там, где это не противоречит безопасности, явный выход только после осознанного действия оператора (или администратора в корпоративном сценарии — вне scope v1).

  1. Smart Attention / HUD: при сигналах «оператор не у экрана» (слой B или эвристика по отсутствию ввода — отдельно) — снижение навязчивости подсказок агента (например ghost text, интенсивность HUD) по согласованию с 0032 и Dark Cockpit из 0021 §9; не выжигать контекстное окно, пока оператора нет.

  1. Приватность и безопасность: видеопоток не является обязательным для Cascade IDE; хранение и обработка — по политике пользователя; никакой обязательной отправки изображений наружу из IDE; интеграция с MCP — локальный процесс и явные настройки. Ложные срабатывания камеры компенсировать консервативными порогами и ручным override.

  1. Границы ADR (уточнение «биометрия»): не заменять integrity-протоколы агента в KB. Слово биометрия здесь — в смысле сигналы присутствия и живости (liveness) для безопасности, не идентификация личности и не медицинская диагностика; отдельное согласие и политика (в т.ч. корпоративная) — если канал когда-либо станет обязательным для класса команд. Не обещать в ранних версиях распознавание эмоций; не позиционировать камеру как единственный источник истины — слой A (программный) остаётся базой.

  1. Liveness / присутствие без «кнопки я тут» (целевое): при включённом opt-in оператор не обязан периодически нажимать отдельную кнопку подтверждения; система использует непрерывные или частые сигналы присутствия/внимания (в рамках политики и приватности), чтобы отличать «в контуре» от «выпал / ушёл» для пересчёта риска автономной задачи. Комбинация слоя A (мышь/клавиатура/фокус окна) и при необходимости слоя B (камера) задаётся политикой; только мышь без контекста — недостаточно для строгих interlock.

  1. Контекстный HUD и внимание (целевое): если доступна оценка куда направлено внимание (хотя бы грубо: зона PFD/телеметрии vs зона редактора кода), агент/UI могут усиливать релевантную телеметрию и приглушать второстепенное по принципу Dark Cockpit (0021 §9) и настраиваемого HUD (0032). Базовый порядок — эвристики фокуса окна/панели и слоя A; аппаратный eye tracking (п. 1, слой C) — только как опциональное улучшение, когда появится и будет иметь смысл по продукту; не v1.

  1. Safety interlock (целевое): для заранее определённого класса опасных действий (примеры класса: деплой, разрушающие операции с БД, необратимые git-операции — точный список политикой) при активной политике «требуется подтверждённое присутствие» — запрет или двухшаговое подтверждение, если сенсоры не подтверждают, что оператор в контуре / внимание к рабочей зоне (прокси: фокус, слой A; при наличии — B; не обязательный буквальный «взгляд» до появления надёжного и доступного канала). Это дополняет PFD-подтверждения (0017), а не заменяет integrity в KB.

Последствия

  • Появится место в архитектурной памяти для дорожной карты: политики, настройки, UI режима Emergency, интеграция с git/автономностью агента.
  • Реализация потребует отдельных задач: модель состояний, тесты политик, UX снятия режима, документация для пользователя.

Отклонённые / отложенные альтернативы

  • Только камера без программных порогов — высокий риск ложных срабатываний и приватности; слой A остаётся базой.
  • Обязательная камера для автономности — противоречит принципу opt-in и разным средам (сервер без камеры, политика организации).
  • Обязательный eye tracking для любого критичного сценария — отклонён: дорого, не у всех есть устройство, доступность и разнообразие паттернов движения глаз относительно поля зрения; допустим только как опция (п. 1, слой C).

Открытые вопросы

  • Точная матрица git-операций в Emergency Mode и взаимодействие с 0019.
  • Единый реестр сигналов (EICAS репозитория vs «оператор недоступен») в UI — один слой или два визуально связанных; приоритет при одновременном критическом алерте repo и сигнале «оператор не в контуре».
  • Нужен ли отдельный IdeCommands / MCP-тул для принудительного Emergency с подтверждением (как PFD-подтверждения — см. 0017, 0031).
  • Пайплайн взгляда/фокуса: достаточно ли эвристик «активная панель / зона внимания» без камеры, или для interlock нужен отдельный контур (например анализ кадра в webcam-analysis-mcp); калибровка и ложные срабатывания.
  • Eye tracking (если когда-либо): калибровка под разные профили; не смешивать «широкое поле зрения» с качеством сигнала трекера; режим «без eye tracking» в настройках всегда доступен.
  • Мышь/клавиатура как сигнал: пороги простоя (ms), учёт фокуса окна, смешение с алертами; сценарии «читает без движения мыши», «ушёл в браузер» — явно в политике или в UX-подсказках.
  • Юридические и организационные ограничения на биометрические сигналы в корпоративной среде (даже как liveness, не идентификация).