From c34b4d2df498e8f74827bb4d4fefabec43899823 Mon Sep 17 00:00:00 2001 From: "glm-5.2" Date: Thu, 2 Jul 2026 09:59:00 +0000 Subject: [PATCH] =?UTF-8?q?docs(call):=20mark=20call/protocol/dispatch-str?= =?UTF-8?q?eaming-branch=20completed=20=E2=80=94=20server-side=20streaming?= =?UTF-8?q?=20dispatch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/call/protocol/dispatch-streaming-branch.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/call/protocol/dispatch-streaming-branch.md b/tasks/call/protocol/dispatch-streaming-branch.md index d6a37de..5d1e738 100644 --- a/tasks/call/protocol/dispatch-streaming-branch.md +++ b/tasks/call/protocol/dispatch-streaming-branch.md @@ -1,7 +1,7 @@ --- id: call/protocol/dispatch-streaming-branch name: Wire Dispatcher::handle_stream streaming branch (Subscription → invoke_streaming → write each → call.completed) -status: pending +status: completed depends_on: [call/registry/invoke-streaming] scope: narrow risk: medium @@ -171,4 +171,4 @@ task; aborting the connection cancels it). ## Summary -> To be filled on completion \ No newline at end of file +> Added DispatchResult enum (Once(ResponseEnvelope) | Stream(ResponseStream)) and Dispatcher::dispatch() branching on op_type (looked up via registry.registration). handle_stream matches on DispatchResult — the branch is visible there (spec framing). Streaming pump writes each ResponseEnvelope → EventEnvelope frame; call.completed on natural end only when !last_was_error (Err is terminal, no call.completed after). deadline: None for streaming branch. Abort via Drop (no new code). Existing Query/Mutation path unchanged. Added 7 unit tests (dispatch branch, deadline clearing, pump frames, error terminal, query unchanged, unknown op, abort drops stream). 306 tests pass. \ No newline at end of file