feat: complete Epic 1 production foundation
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# Единая граница выполнения 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 и этой границей не считается завершённой.
|
||||
Reference in New Issue
Block a user