Files
crank/docs/execution-boundary.md

38 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Единая граница выполнения 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 и этой границей не считается завершённой.