diff --git a/docs/roadmap/conversation-continuation.md b/docs/roadmap/conversation-continuation.md index aa21012..de9fa7d 100644 --- a/docs/roadmap/conversation-continuation.md +++ b/docs/roadmap/conversation-continuation.md @@ -175,9 +175,9 @@ interpret the purpose of that work. questions without demonstrated shared answers across consumers. Applications can build those workflows from the selected branch-level capabilities. -**Details to settle:** exact request/stop and outcome types, and turn-budget -consumption belong to Decision 4. That decision records accepted response -delivery, zero-turn budgets, cancellation, and minimal error/result semantics. +**Implementation planning:** select exact request/stop and outcome types under +Decision 4's accepted response delivery, turn-budget consumption, zero-turn +behavior, cancellation, and minimal error/result semantics. Execution association and usage accounting belong to Decision 5. The sketches below illustrate the selected responsibility split; they do not settle the remaining public contracts. @@ -274,8 +274,7 @@ bookkeeping. Callback model-call association remains part of Decision 5. ### 4. How Are Application Next Actions And Execution Outcomes Represented? -**Status: response delivery, exhaustion, zero-turn budgets, cancellation, and -minimal error/result semantics accepted; turn-budget consumption remains open.** +**Status: accepted; exact public types remain for implementation planning.** The coordinator uses content-neutral next actions and distinguishes application-directed completion from exhaustion. @@ -315,6 +314,25 @@ The alternative of treating zero as an immediate no-op with no callback is not selected: it would introduce special behavior and would not distinguish an already-complete interaction from one requesting more work. +**Accepted turn-budget consumption:** at most N additional continuation +executions may be started. The first operational error ends coordination. +Starting a continuation consumes one turn even if preparation or generation +subsequently fails. Callback invocations do not consume turns, and internal +transport retries and structural repairs remain within the same turn. The +starting exchange is outside the additional-turn budget. Requesting a turn +when none remain produces exhaustion without starting an execution. + +For example, with a three-turn budget, a preparation failure in the second +continuation returns that error and ends coordination. It does not start a +third continuation or report exhaustion. The budget does not measure provider +calls, work performed inside application callbacks, or cost. + +Counting only completed continuations was considered and not selected. Because +operational errors already stop coordination, that alternative would primarily +change bookkeeping. Use the straightforward executions-started interpretation +without introducing public counters, budget refunds, or recovery machinery for +this purpose. + **Accepted cancellation behavior:** check the caller's context immediately before callback invocation, including the initial callback. If cancellation is already observed, do not invoke the callback; return the context error with its @@ -382,12 +400,11 @@ use ordinary Go errors. A broader structured termination report was also considered and not selected: its additional metadata is unnecessary for the demonstrated minimal contract. -**Details to settle:** what consumes an additional-turn budget when preparation -or generation fails. Keep that budget distinct from structural repair and -transport retry. Exact next-action, outcome, and optional-result types remain -implementation planning details. Whether a completed run with failed structural -validation produces a reusable exchange remains a Decision 1 question; the -operational-error decision does not reclassify that validation result. +**Implementation planning:** select exact types for next actions, outcomes, and +the optional result under these accepted behaviors. Whether a completed run with +failed structural validation produces a reusable exchange remains a Decision 1 +question; the operational-error decision does not reclassify that validation +result. ### 5. How Are Related Executions And Usage Accounted For?