Make backfill jobs self-recover via lease + checkpoint
Replaces the never-cleared lock_token mutex with an expiring lease and
persists (cursor, fetched_posts) on every page so a re-dispatched job
resumes instead of restarting. A crashed worker no longer leaves a row
stuck forever — the next dispatch reclaims an expired lease, and
backfill:unstick drops its fetched_posts reset since checkpointing
handles resume. Also refreshes three stale loading-page assertions
left over from the meta-refresh removal.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>