Назначения, workspaces и leases
Статус: экспериментально. Реальное выполнение рантайма и провайдеры по умолчанию выключены. Эта страница описывает контракт execution plane и его защитные механизмы, а не готовую к автономной работе функцию.
Что это
Execution plane связывает задачу из операционного журнала с цифровым сотрудником, рабочим каталогом и запуском рантайма. Он существует как набор типизированных операционных записей поверх того же journal ops/task-ledger/ — этот журнал остаётся единственной историей задач (ADR-017). Определения агентов в каталоге инертны; активация каталога сама по себе не даёт никаких прав на выполнение.
Что выключено по умолчанию
В config/raytsystem.toml:
runtime_execution_enabled = falsecodex_local_enabled = falseclaude_local_enabled = falsescheduled_heartbeats_enabled = false
Включены как безопасные примитивы: digital_employees_enabled, task_workspaces_enabled, heartbeats_enabled. Чтобы реально запустить провайдера, нужны и флаг runtime_execution_enabled, и выбранный провайдерский флаг, и политическое одобрение для места назначения (egress). Изменение одного флага планировщика не создаёт планировщик — запланированные heartbeats не входят в эту поставку.
Назначение цифрового сотрудника
Версионированные записи AgentDefinition проецируются в типизированные DigitalEmployee. Иерархия необязательна; ни один сотрудник не становится «главным» автоматически. Назначения, графовые области (graph scopes), сессии, запуски, бюджеты, одобрения, комментарии и транскрипты хранятся как связанные записи в локальной управляющей БД, а не внутри неизменяемых объектов задач.
Managed task workspace
raytsystem сам выводит идентичность каждого workspace и создаёт его только внутри .raytsystem/workspaces/<workspace-id>/ (ADR-018). HTTP никогда не принимает cwd или путь файловой системы. Продакшн-режим по умолчанию — отдельный detached Git-worktree на точном коммите; контекст, артефакты и логи лежат рядом внутри управляемого workspace. Автоматической очистки или удаления нет.
Atomic checkout и неизменяемый манифест. Манифест связывает поколение/ревизию задачи, ревизию каталога и сотрудника, коммит Git, снимок и отпечаток графа, область графа и хеш контекста. Повторное использование ID требует побайтового совпадения; расхождение (drift) фейлится закрыто (fail-closed).
Fenced leases (fencing token)
Checkout использует таблицу leases в ControlDB с TTL, продлением, control epoch и монотонным fencing-токеном. У одной партиции задачи может быть только один живой владелец. Повтор того же запуска идемпотентен; освобождённый или истёкший lease выдаёт следующему владельцу более высокий fence. Устаревший fence не может зафиксировать операционное состояние — даже если процесс пережил свой lease, его запись не будет принята.
Heartbeats, восстановление и координация
- Heartbeats продлевают lease, пока работа идёт. Первый включённый триггер — ручной heartbeat; запланированные heartbeats остаются выключенными.
- Pause/cancel/recovery явно освобождают или отзывают lease и сигналят группе процессов; workspace при этом не удаляется.
- После сбоя новый владелец получает более высокий fence, и вывод от устаревшего fence не сохраняется.
- Координация идёт через комментарии, события прогресса и дочерние задачи — это аудируемый канал. Скрытых сообщений между агентами в дизайне нет.
Бюджеты и одобрения
Бюджеты могут привязываться к сотруднику, задаче, проекту, запуску или workspace и отслеживать токены (вход/выход/кеш), оценочную и фактическую стоимость, число запусков и heartbeats. Жёсткий лимит блокирует новый запуск. Одобрения рантайма — точные, истекающие записи, привязанные к действию, хешу полезной нагрузки, сотруднику, задаче, запуску, workspace, месту назначения и области. Изменение содержимого, workspace или назначения аннулирует одобрение. Обход разрешений, внешние корни, push/publish/send/delete/оплата, egress приватного корпуса и промоушен реального корпуса никогда не проходят через общий одобряющий механизм.
Граница безопасности
- Ввод из браузера не может перенаправить рантайм в другой каталог.
- Вывод рантайма считается недоверенным свидетельством: он может обновлять операционное состояние запуска/ревью и создавать черновые артефакты, но не может писать в
_raw/,ledger/, генерируемые знания или промоутить контент. - Внешние корни требуют отдельного типизированного одобрения и в этой поставке недоступны.
Ограничения
- Долгая автономность, автоматические публикация/деплой и «права, созданные агентом» — вне этой поставки.
- Worktrees занимают диск, пока не будет одобрена будущая политика хранения.
- Смена состояния задачи создаёт новую неизменяемую привязку и может потребовать свежего снимка workspace/контекста.
Связанные страницы
Источники истины
ops/decisions/ADR-017-digital-employee-execution-plane.mdops/decisions/ADR-018-task-workspaces-and-fenced-leases.mddocs/11-code-graph-and-execution-plane.mdconfig/raytsystem.toml