Mirror of the WA2 fix β same bug, same change, synced to stay in lockstep
until init_sources is extracted to a shared package.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add GFS init source as alternative to ERA5T (Phase 2 wiring)β
Mirrors the same plumbing shipped in Weather AI 2. CRE's GraphCast
currently inits from ARCO ERA5T at today-5, which means its "5-day
forecast" actually covers today-5 through today-1 β the past week,
not the next week. Trigger decisions confirm past heat events instead
of warning before, which misaligns with the alert-SMS product intent.
GFS has ~3h lag instead of 5 days, enabling forward-looking forecasts
over today β today+5.
Behind a config toggle:
* NWP_INIT_SOURCE=gfs β GFS instead of ERA5T
* NWP_TARGET_DATE_OVERRIDE=YYYY-MM-DD β pin init date for
validation runs against the LMB insurance benchmark panel
Defaults leave existing ERA5T behavior unchanged. Only
src/init_sources/ + tests/test_init_sources/ + two one-line call-site
swaps in graphcast_inference/pipeline touch production code.
56 new unit tests, all pass. Opt-in live GFS test skipped unless
GFS_LIVE_TEST=1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>