2.5 KiB
Единая граница выполнения REST Operation
Admin Draft Test и MCP tools/call используют один путь:
RuntimeExecutionRequest → crank-runtime → ProtocolAdapter → crank-adapter-rest.
До mapping и сетевого dispatch envelope фиксирует workspace, origin, точную
Operation/version, Agent для immutable snapshot, authorization, resolved auth,
correlation context и монотонный deadline. Runtime не создаёт fallback Request ID
или Trace ID. admin_draft не принимает Agent ID, а agent_snapshot требует его.
Результат и ошибки
Успешный результат — нормализованный JSON output. Ошибка один раз преобразуется
в закрытый ExecutionFailure: error_code, stage, retryability,
outcome_certainty, безопасные Request/Trace IDs и ограниченный typed context.
Admin и MCP лишь проецируют этот descriptor в свои wire-ответы.
retryability принимает never, safe, after_delay, manual_reconcile или
requires_confirmation. При timeout/transport cancellation после возможного
dispatch возвращается manual_reconcile + outcome_unknown; автоматически
повторять такой вызов нельзя. HTTP/MCP status и текст ошибки не меняют это решение.
Raw URL, upstream body/headers, parser/Reqwest/SQLx error и секреты не входят в
ответ или Invocation History. Resolved auth и confirmation token имеют redacted
Debug и не сериализуются как execution envelope.
История и совместимость
Migration v5 (execution-outcome-v5) добавляет nullable поля exact Operation
version, stage, stable error code, retryability и certainty. Для legacy v4 строк
они остаются NULL; значения не фабрикуются. Новые Admin/MCP записи сохраняют
их вместе с Request ID и Trace ID независимо от telemetry sampling.
Пути Admin API, MCP methods и успешные response fields не изменены. Поля ошибки добавлены обратно совместимо. Outbound DNS/redirect/retry/SSRF policy принадлежит Story 1.9 и этой границей не считается завершённой.