Cancellation / interruptibility
A real way to stop an upload, export, generation, or other long task before it finishes, with a clear account of what already happened.
See it
What it is
Cancellation means a person can stop work that is still in progress; interruptibility means the system reaches a safe stopping point quickly enough for that control to be honest. A Cancel button on an upload, export, import, search, or AI generation gives control back before the operation consumes more time, data, or money. The Stop button under a streaming ChatGPT answer is the version everybody now recognizes, and it is honest precisely because tokens stop arriving the moment you press it.
Reach for it when work lasts long enough for intent or circumstances to change. Cancel locally with AbortController for browser requests, and give server-side jobs an explicit cancellation path plus a visible stopping state. If work cannot stop immediately, say 'Stopping...' and finish the current safe unit instead of pretending it vanished.
The gotcha is confusing dismissal with cancellation. Closing a dialog while the job keeps running is not Cancel, and killing a request does not automatically roll back side effects the server already committed. Define what survives cancellation, clean up partial artifacts, and report the final state without claiming that completed work was undone.
Ask AI for it
Add cancellation to this long-running action. Create an AbortController for the browser fetch and pass its signal to fetch; while work is active, show a visible Cancel button beside the progress indicator. On Cancel, call abort(), change the label to 'Stopping...', and keep the result area stable until the operation confirms it stopped. For server-side work, create a job ID and a DELETE /jobs/:id endpoint that marks the job cancel_requested, checks that flag between safe units of work, and returns the final completed, cancelled, or failed state. Delete partial temporary artifacts but preserve any unit already committed. Treat AbortError as an expected cancelled state, not as a failure toast, and announce the final status through aria-live='polite'.