-- 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. BEGIN; ALTER TABLE district_economics DROP COLUMN IF EXISTS sat_factor; COMMIT;