-- Remove dead column district_economics.sat_factor (#1509).
--
-- sat_factor = 1 + ((sold_pct - 50) / 100) * 0.30 was computed in 09_macro_and_trend.py
-- and written here, but was never read by any scoring logic (10_score_v2.py, server.py).
-- The live market sub-score uses sat_score = min(100, sold_pct * 100 / 70) directly,
-- so sat_factor double-counts absorption without being applied anywhere.
-- All code references removed in the same commit as this migration.
--
-- NB: ALTER TABLE *IF EXISTS* — district_economics is created by the site-finder
-- pipeline (09_macro_and_trend.py / server.py), NOT by data/sql migrations, so it may
-- be absent on the main Postgres. Without IF EXISTS the deploy fails with
-- "relation district_economics does not exist" (DROP COLUMN IF EXISTS only guards the
-- column, not the table). Idempotent + safe when the table is absent.
BEGIN;

ALTER TABLE IF EXISTS district_economics DROP COLUMN IF EXISTS sat_factor;

COMMIT;
