How a turn streams from backend to browser — Orb's SSE contract

A companion to docs/architecture/sse-stream.md. One POST opens a long-lived Server-Sent Events stream; handle_turn on the backend pushes a sequence of named events across it, and the frontend's dispatcher turns each one into a UI change. This walkthrough follows that wire.

Concept
Frontend (browser)
processSSEStreamhandleSSEEvent
idle
Director
Writer
Editor
assistant bubblenot yet created
·idle
Backend (handle_turn)
POST /conversations/{cid}/send
0persist user message
1Director pass
2Writer pass (streams prose)
3Editor / feedback pass
4persist reply + log
Black box: what each pass does internally is out of scope here — see the KV-cache doc. This panel only shows which pass is emitting.
control / framing (FE→BE or lifecycle) meta event (phase, inspector, feedback) prose token (writer output)