277 @spec/@type annotations added to 58 files covering all public APIs: contexts (propagation, radio, weather, terrain, beacons, commercial), GRIB2 decoders, terrain analysis, duct detection, rain scatter, CSV/ADIF import, weather clients, and all Ecto schemas. Dialyzer passes with 0 errors.
Define 0.125-degree CONUS grid (25-50N, 125-66W) for propagation scoring and create propagation_scores table with composite unique index on lat/lon/valid_time/band_mhz for upsert support.