The house_imv_backfill service (services/house_imv_backfill.backfill_house_imv)
populates house_imv_evaluations on demand but was never on a schedule, so the
table stayed ~empty on prod. Register it as a standalone scrape_schedules source:
- trigger_house_imv_backfill_run mirrors trigger_avito_detail_backfill_run /
trigger_yandex_address_backfill_run (_claim_run -> asyncio.create_task -> fresh
SessionLocal -> add_done_callback). Since the service has no tasks/*-wrapper
owning the run lifecycle, the trigger finalises scrape_runs itself
(mark_done/mark_failed) like trigger_refresh_search_matview_run, and passes a
heartbeat callback so reap_zombies does not kill a long live IMV run (#1363).
- dispatch branch in scheduler_loop routes source=="house_imv_backfill".
- migration 132 seeds an idempotent scrape_schedules row (window 15:00-17:00 UTC,
after the Avito sweep/full-load + geocode/cadastral enrichment blocks).
Refs #854