done_buckets (set of "room:lo:hi") в scrape_runs.counters, дописывается per-bucket.
Endpoint принимает resume_run_id → новый run читает done_buckets прошлого и
пропускает уже завершённые бакеты (skip пагинации; probe-запросы остаются).
Без resume_run_id — full walk как раньше. on_bucket сигнатура → (key, lots).