From 227c05b1546de26d8f717e850f4e777ba8d65cf6 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Fri, 25 Sep 2026 22:03:50 +0000 Subject: [PATCH] Document retry composition and preserve error summaries --- docs/operations.md | 11 +++++++++++ docs/roadmap/implementation.md | 2 ++ internal/framework/llm/scheduled_client.go | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/operations.md b/docs/operations.md index cf9790be..ae055968 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -163,6 +163,17 @@ operator needs one HTTP attempt per generation. A semantic correction rebuilds the ordinary producer request and supplies only the latest rejected model response plus aggregated validator guidance; it is not a conversation replay. +These budgets multiply only by their declared scopes. With two outer producer +retries, two transient retries, and one structural repair, a single producer +can issue up to 18 HTTP attempts: three producer attempts, each with an initial +generation and one repair generation, each allowing three HTTP attempts. This +is an illustration, not a total-deadline or exactly-once guarantee. Every +built-in HTTP attempt has its own generation timeout; caller cancellation +remains the overall authority and interrupts Retry-After waiting. The shared +Notarius scheduler keeps its permit through those waits, so retry budgets can +increase latency and provider cost. Observed usage can remain incomplete when +providers omit accounting fields. + After the applicable budgets are exhausted, the resolved [`validation_policy`](config.md#pipelines) determines the result. Structural failure and semantic rejection normally fail the run; an explicit diff --git a/docs/roadmap/implementation.md b/docs/roadmap/implementation.md index 9f4ecf93..df581d3f 100644 --- a/docs/roadmap/implementation.md +++ b/docs/roadmap/implementation.md @@ -310,6 +310,8 @@ the new projection assertions. No new warnings result from recovered retries. ## Stage 7 — Verify Retry Composition And Finish Operator Guidance +**Status:** Completed 2026-09-25. + **Goal:** Validate the cross-boundary behavior that individual stages cannot prove, then reconcile current documentation. One prompt; no generalized retry test framework or runtime redesign. diff --git a/internal/framework/llm/scheduled_client.go b/internal/framework/llm/scheduled_client.go index f2610ca6..ee7520fe 100644 --- a/internal/framework/llm/scheduled_client.go +++ b/internal/framework/llm/scheduled_client.go @@ -38,7 +38,7 @@ func (c *scheduledClient) CompleteStructured(ctx context.Context, req contracts. return callErr }) if err != nil { - return contracts.StructuredCompletionResponse{}, err + return response, err } return response, nil }