Generation States
Users cannot distinguish between a model that is actively generating and one that has frozen. No product in the audit communicates these as distinct states.
Problem
AI generation is not a download. No product in the audit differentiates thinking, streaming, complete, and hung as distinct states. A user watching a pulsing indicator has no information about whether to wait or intervene.
Prescription
Four states minimum, each with a distinct visual treatment: Thinking (processing before first token), Streaming (output actively writing), Complete (explicit signal, not inferred), Hung (escalated after watchdog threshold with recovery affordance).
Design decisions
Watchdog timeout threshold must be calibrated to product latency profile. Thinking-state copy specificity depends on backend state visibility. Completion signal must be explicit without being disruptive.
Tradeoffs
Hung-state escalation risks false positives on slow but functional responses. Specific thinking-state copy requires backend integration that generic indicators do not. Explicit completion signals add visual events to a reading experience.
Pattern definition
Problem
AI generation is not a download. No product in the audit differentiates thinking, streaming, complete, and hung as distinct states. A user watching a pulsing indicator has no information about whether to wait or intervene.
Prescription
Four states minimum, each with a distinct visual treatment: Thinking (processing before first token), Streaming (output actively writing), Complete (explicit signal, not inferred), Hung (escalated after watchdog threshold with recovery affordance).
Design decisions
Watchdog timeout threshold must be calibrated to product latency profile. Thinking-state copy specificity depends on backend state visibility. Completion signal must be explicit without being disruptive.
Tradeoffs
Hung-state escalation risks false positives on slow but functional responses. Specific thinking-state copy requires backend integration that generic indicators do not. Explicit completion signals add visual events to a reading experience.
Interactive demo
Audit finding
Observed across Claude, ChatGPT, Gemini, and Perplexity. In every product, the visual state during active generation is identical to the visual state during a hung or stalled generation. No product communicates completion as an explicit state — users infer it from the appearance of feedback UI. GitHub Copilot is the only product that marks an interrupted response as incomplete.
All states
Thinking
Model has received the request. Processing before first token arrives.
Generating
Output is actively streaming to the interface. Cursor visible.
Complete
Generation finished. Explicit signal — not inferred from other UI elements.
Response stalled
Watchdog threshold exceeded. No new tokens for 5–8s. Recovery affordance shown.
Error
Network failure, context limit, or policy refusal. Distinct from hung.