Перейти к основному содержимому

Назначения, workspaces и leases

Статус: экспериментально. Реальное выполнение рантайма и провайдеры по умолчанию выключены. Эта страница описывает контракт execution plane и его защитные механизмы, а не готовую к автономной работе функцию.

Что это

Execution plane связывает задачу из операционного журнала с цифровым сотрудником, рабочим каталогом и запуском рантайма. Он существует как набор типизированных операционных записей поверх того же journal ops/task-ledger/ — этот журнал остаётся единственной историей задач (ADR-017). Определения агентов в каталоге инертны; активация каталога сама по себе не даёт никаких прав на выполнение.

Что выключено по умолчанию

В config/raytsystem.toml:

  • runtime_execution_enabled = false
  • codex_local_enabled = false
  • claude_local_enabled = false
  • scheduled_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.md
  • ops/decisions/ADR-018-task-workspaces-and-fenced-leases.md
  • docs/11-code-graph-and-execution-plane.md
  • config/raytsystem.toml