Workflow заблокирован
Что это
Движок процессов (workflow_engine_enabled: true в config/platform.yaml) исполняет
типизированный DAG из узлов. Иногда процесс «застревает»: активный узел не переходит
дальше, а следующие узлы не запускаются. Почти всегда это не сбой, а сработавшая
граница безопасности — узел ждёт человека или ресурс, который сознательно выключен.
Когда использовать
Когда workflow list показывает процесс в состоянии «в работе», но прогресса нет
дольше ожидаемого.
Пошагово: симптом → причина → диагностика → решение
1. Узел ждёт approval или review
Среди десяти типов узлов есть review и approval
(src/raytsystem/contracts/workflows.py). Такой узел не проходит сам — ему нужно явное
человеческое решение.
- Диагностика:
uv run raytsystem workflow list— найдите процесс и текущий узел. - Решение: выдайте разрешение через
uv run raytsystem workflow approve(approval должен быть точным, не истёкшим и связанным с payload — см. /security/approvals). Если решение отрицательное —uv run raytsystem workflow cancel.
2. Узел требует runtime-исполнения, которое выключено
Узлы agent и task могут требовать запуска провайдера. В базовой поставке
runtime_execution_enabled = false (config/raytsystem.toml), поэтому такой узел не
стартует и процесс останавливается. Это ожидаемое состояние, а не поломка. Подробнее —
/troubleshooting/provider-unavailable.
3. Узел deterministic_command ссылается на незарегистрированную операцию
deterministic_command исполняет только зарегистрированные operation ID; произвольный
shell запрещён (src/raytsystem/contracts/workflows.py). Если операция не зарегистрирована,
узел не выполнится. Проверьте определение процесса.
4. Исчерпан retry, тайм-аут или сработал автомат защиты
Платформенные автоматы защиты (config/platform.yaml) латчат при накоплении ошибок:
retry_loop: 20, failed_approvals: 5, а также предел длительности
max_run_duration_seconds: 7200. После срабатывания продвижение останавливается до
разбора причины.
- Диагностика: изучите /workflow/execution-controls и
историю узла в
workflow list.
Ожидаемый результат
После выдачи корректного approval, включения нужного ресурса под одобрением или отмены процесс либо продолжается, либо завершается контролируемо.
Ограничения и безопасность
- Движок процессов помечен как экспериментальный: полагайтесь на явные состояния
из
workflow list, а не на догадки. GET/HEADничего не пишет; продвижение процесса всегда идёт через типизированные, защищённые CSRF/сессией мутации.deterministic_commandникогда не выполняет сырой shell.
Когда открыть issue
Если узел находится в допустимом состоянии, все approval выданы и корректны, нужный
флаг включён под одобрением, но узел всё равно не продвигается — это баг. Приложите
идентификатор процесса и узла из workflow list (без секретов).
Связанные страницы
Источники истины
src/raytsystem/contracts/workflows.pyconfig/platform.yamlconfig/raytsystem.toml