fix(leads): replace ::interval cast with make_interval (psycopg v3 trap) (#1383 follow-up)
docs(estimator): DKP corridor described as P10/P90 not min/max in schema+TS (#1520 follow-up)
fix(admin-scrape): ge=1 on /failures limit + enforce LLM finish_reason
fix(llm): word-boundary INN match, tighten edge cases (#1640 follow-up)
fix(exporters): annotate scenario deficit horizon in excel too (#1590 follow-up)
fix(weather): wind_d returns None when no valid samples, not fabricated 0.0°
fix(scrapers): narrow domrf Level-1 status badge-class regex (#1609 follow-up)
test(site-finder): cover is_residential_zone raw_props/subcategory branch (#1353 follow-up)