Long phases with no output need their own explanation, or they will be judged as stuck
Aliases: not stuck · silence is not death · waiting needs copy
What it is
An agent will enter phases of minutes with no new step: waiting on a model, an external API, a person, a batch that emits no intermediate events. If the UI goes silent with it, people will act as if it is stuck — refresh, reopen, submit again. Silent phases need explanation: what it is waiting on, how long already, what happens on timeout, whether the person may leave now.
A spinner with no words makes “waiting” and “dead” the same visual.
Why it happens
People use new events as evidence of life. When the event stream stops, evidence of life stops, and the default story becomes fault. If position and remainder only report nodes, not “this node is waiting inside,” the remainder number freezes, and freeze is read as stuck. Density is too many events; silence is too few. Both break following, in opposite directions. The explanation has to interpret no-event as a legal state, not pad with fake steps — fake padding would violate a real path.
With no explanation, intervention hits a healthy wait: aborting a payment still in queue, or double-submitting.
Studying it
Insert a no-event wait that is known to succeed. Compare: no copy, a spinner, a spinner plus “waiting on X, t seconds already, timeout T.” Dependent variables: false-abort rate, double-submit rate, whether people leave when they should, subjective stuck judgements. Independent variables: whether the copy includes the object (which API), whether timeout is visible, whether the wait can be cancelled.
False abort is the primary endpoint. Copy that makes people more willing to wait, but wait through a real death, has gone too far — so also measure detection of a real hang.
Where it stops holding
Truly dead (no scheduler heartbeat) must not be covered by “thinking”; lost heartbeat should promote to failure. Silence buried in an overly dense log is even harder to notice as “this stretch actually had no events.” In-process correction during a wait often has no beat to change; the entry should become “cancel wait / take another road,” not change-object.
Applying it
- Past the no-event duration you have measured as “people start to doubt,” an explanation must appear: object of the wait, elapsed, timeout, whether they may leave. A spinner must not appear alone.
- Lost heartbeat and legal wait look different. Legal wait is cancellable; lost heartbeat goes to failure reporting.
- Check: insert a two-minute legal wait, and watch false aborts and double submits. Either above zero, and silence is still being read as stuck. Then insert a real death (cut heartbeat); the copy must not make people wait forever — if they do, the copy has covered death.
Related
- Same group: L4.12.1 Observable intermediate steps turn after-the-fact correction into in-process intervention · L4.12.2 Steps that are too dense exceed the user's ability to follow; visibility degrades into a scrolling log · L4.12.3 Users need to tell where they are in the plan and how much remains · L4.12.4 Displayed steps must be the real execution path; a fabricated process misleads when to intervene
- Nearby: L1.12 Latency and Streaming Experience · L4.13 Agent Failure Reporting and Escalation · L4.08 Visibility of Task Progress
- Search terms:
heartbeat·progress silence·perceived hang
Cards in the same group
- L4.12.1Observable intermediate steps turn after-the-fact correction into in-process intervention
- L4.12.2Steps that are too dense exceed the user's ability to follow; visibility degrades into a scrolling log
- L4.12.3Users need to tell where they are in the plan and how much remains
- L4.12.4Displayed steps must be the real execution path; a fabricated process misleads when to intervene