Appearance
ASCEND Conversation Live Feedback
This document refines section 9.3 of the accepted Agent-first PRD. ASCEND must remain visibly responsive for the whole durable Agent turn, including queueing, model work, Tool execution, response generation, recovery, and cancellation. A researcher must not have to infer progress from a disabled composer, a static placeholder, repeated manual refresh, or raw Agent logs.
Product contract
- The active turn uses one stable live-status surface adjacent to the composer. It shows a motion indicator, observable domain-language activity, elapsed time, and the governed action for stopping only the current reply. While that action is available, the composer's Send control becomes an always-visible Stop control. It does not cause transcript layout churn or imply that stopping a reply stops an experiment or device.
- Queue time is labeled as waiting, not working. Provider-request retry and whole-turn recovery are explicit typed states with the current/maximum attempt and next retry time. The UI shows only a bounded reason category such as timeout, connection interruption, rate limiting, or temporary service unavailability; it never exposes the provider's raw error.
- Activity comes from a typed, versioned backend projection of durable turn state, runtime phase, bounded Tool activity, and recovery state. The browser does not parse model prose, hidden reasoning, raw errors, or Tool names to invent lifecycle meaning.
- Sanitized answer content streams when the Agent provider supports it. Deltas are ordered, bounded, correlated to the durable turn, and reconciled with one final committed answer. Refresh or reconnect restores the latest durable partial answer and progress without submitting the user message again.
- Partial text, animation, optimistic UI, and activity summaries are not scientific evidence and cannot create or strengthen an Operation, result, or evidence claim. Canceled or failed partial replies remain explicitly incomplete.
- Completed Tool activity is summarized by default. Raw Tool identifiers, bounded input/output, trace references, and failures remain progressively disclosed and redacted under the existing Agent trace policy.
- Motion respects the platform animation setting and browser reduced-motion preference. The reduced-motion fallback remains visibly active without shimmer, rotation, blinking, or continuously announced elapsed-time changes.
- Normal event delivery is push-based and scoped to the authenticated conversation. Reconnect is replay-safe and polling remains a bounded fallback; neither path may repeat a Tool or device side effect.
Durable state
The backend owns the active phase, safe Tool summaries, monotonic progress revision, latest partial answer, terminal answer, and available actions. A final answer becomes transcript history only after the terminal durable write. The UI may animate or progressively render this projection, but it cannot manufacture phase transitions or action eligibility.
The durable chat worker treats queue contention and other claim faults as recoverable infrastructure conditions: it reports a bounded error category, backs off, and continues polling instead of terminating. Before executing a claimed job it reconciles the owning turn, settling jobs for terminal or removed turns without replaying the Agent request. ASCEND health reports whether the worker is alive, its recovery state, active queue counts, and the oldest waiting age without exposing messages, raw errors, or provider credentials.
Verification
Contract and migration tests cover progress durability, terminal action removal, browser-transport disconnect while the background worker continues, safe activity and retry projection, and SSE final metadata. Playwright covers desktop and mobile animation, truthful queue/elapsed wording, retry backoff, partial-to-final rendering across a page reload, reply-only stop, and the reduced-motion fallback.