Полный PDF-отчёт не-открытого участка выходил без §4-§6: форсайт-ран
(schema "1.0") строится лениво GET /forecast-поллингом и на холодном
участке отсутствует (стресс-свип: 66:41:0001001:30). build_full_report
теперь при отсутствии рана считает форсайт синхронно прямым вызовом
build_site_finder_report (мы уже в worker'е, ~20-30с) с теми же
дефолтами, что Celery-таск (horizons=[6,12,18,24] = _horizons_for(12),
district-fallback, persist schema "1.0" — контракт сверен построчно,
потребители по params.source не фильтруют), и перечитывает ран.
Best-effort: сбой → warning (не exception — GlitchTip), отчёт без
§4-§6 как раньше. Отчёт самодостаточен (как §7-концепция).
Таймлимит 600с не тронут — worst-case ~250с < 540с soft.
Refs #2259