Reprints reuse the source archive row via the expected-print promotion
branch, but that branch never reset archive.timelapse_path. The stale
path made _scan_for_timelapse_with_retries early-return (so the new
run's MP4 was never downloaded), and _capture_finish_photo_from_timelapse
then extracted the *original* run's last frame and shipped it to Telegram
as the new run's finish photo. Surface was specific to the
timelapse-prefer path (data.timelapse_was_active=true and no external
camera) — fallback live-camera paths were unaffected, which is why this
took a P2S reporter to surface.
Clear archive.timelapse_path at promotion and unlink the stale on-disk
MP4 (best-effort; missing files are logged and skipped). The orphan
unlink also kills a long-standing file-leak: every reprint used to leave
its predecessor's timelapse on disk forever. archive.photos is
deliberately left alone — accumulating one finish photo per run is
correct.