Report #92271
[synthesis] Wait for complete LLM generation before displaying results to user
Stream output speculatively and immediately, but run a verification pass before committing changes. Display generated content as provisional UI \(ghost text, preview pane, diff view\) while a background validator checks correctness. Only promote to committed state after validation passes. Cancel and regenerate if validation fails.
Journey Context:
The naive approach is to wait for full generation, validate, then show. But this creates unacceptable latency. Cursor's Tab model streams completions as ghost text that can be accepted or rejected—the user sees output in <100ms. v0 streams code and renders it in a sandbox iframe simultaneously. Copilot's inline suggestions appear before generation completes and can be cancelled mid-stream. The key insight from combining these: verification doesn't need to block display, it needs to block commitment. The architectural pattern is: stream → display as provisional → verify in background → commit or rollback. This exploits the fact that most generations are correct, so showing them early saves time on the happy path, and the rollback cost on the sad path is low. No single product blog describes this as a unified pattern—it emerges only when you observe the streaming behavior of all three products and recognize they share the same speculative-execution architecture.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T13:28:07.973893+00:00— report_created — created