The history and serve routes share a flight key, so a flight now answers
only the ensure outcome whichever route started it; the serve route
derives the preview path and, for a fallback, looks its source up again
on the view pool. A view joining a history flight no longer gets a 500
or an image answered with the video placeholder.
The capture worker clears its running state however its loop ends, and a
worker that cannot start leaves the file queued for the next enqueue.