prop/lib
Graham McIntire 803130ee64
perf(weather): drop GridCache valid-time cap from 24 → 8
Found while auditing pod memory: :weather_grid_cache is by far the
largest ETS table (~32 MiB compressed per entry, vs ~2 MiB/entry for
ScoreCache) because each cell is a 22-field weather row instead of a
scalar score. Cap of 24 meant the cache could hoard up to ~768 MiB on
a single pod, and hot pods sit at 3-5 GiB against a 6 GiB limit — most
of that headroom belongs to GridCache.

The cap was sized for 'analysis + 18 forecasts + stragglers' but the
real access pattern is current-hour + a short forward scrub. Beyond
that, fall back to ScalarFile.read_bounds (sub-100 ms per file) instead
of permanently parking ~500 MiB on data nobody looks at.

Worst-case GridCache spend drops 768 MiB → 256 MiB. Steady-state win
is smaller (most pods don't fill all 24 slots), but bounds the tail.
2026-05-03 16:25:00 -05:00
..
microwaveprop perf(weather): drop GridCache valid-time cap from 24 → 8 2026-05-03 16:25:00 -05:00
microwaveprop_web ux(rover-planning): table rows are real <a href> links 2026-05-03 16:20:45 -05:00
mix/tasks polish(aprs): consolidate callsign regex, document raise, note negative-sample v1 limit 2026-05-01 13:10:57 -05:00
microwaveprop.ex initial 2026-03-28 11:28:47 -05:00
microwaveprop_web.ex chore(deps): drop gettext 2026-04-24 12:31:21 -05:00