Files
crank/docs/execution-boundary.md

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 и этой границей не считается завершённой.