test: coverage round 2 (82.05% → 83.96%) + 23 new property tests
77 unit tests + 23 property tests across four parallel agents.
- ContactLive.Show (72.01% → ~75%): every factor-note branch
(humidity/time/td/refractivity/pressure/season/pwat), all
propagation_mechanism classifications, apply_admin_edit/owner_edit/
submit_user_edit error paths, internal_network? IP shapes, expanded
sounding skew-T, composite-score [0,100] property.
- PathLive + BeaconLive.Show + Weather: coordinate-pair resolver,
invalid grid, empty-DB edge cases for iemre_for_*, narr_for_*,
nearest_native_duct_*, find_nearest_rtma, recent_surface_obs;
properties for round_to_hrrr_grid/round_to_iemre_grid/band
round-trip/beacon-id URL round-trip.
- Viewshed + Duct + SoundingParams: find_reach_km edge cases,
destination_point, effective_reach_km fractions, detect_ducts
trailing-duct + guard branches; 13 properties including flat-
terrain-fully-visible, thicker-duct-lower-freq, M-profile
monotonicity, feature-vector deterministic length.
- Workers + Mix tasks: GefsFetchWorker 500/429/403 + malformed
ISO8601, HrrrNativeGridWorker snap-to-3-decimals + empty DB,
IonosphereFetchWorker 404 + non-tabular body, RadarBackfill
--dry-run + --year + --limit, NexradBackfill --limit 0, Backtest
--feature + --all; year-filter property covering 2015..2026.
170 → 205 properties, 2666 → 2743 tests, 0 failures.