Skip to content

feat(engine): velocity and station wind observations - #74

Open
scottjones wants to merge 3 commits into
wesleygrimes:mainfrom
scottjones:engine/wind-layers
Open

scottjones wants to merge 3 commits into
wesleygrimes:mainfrom
scottjones:engine/wind-layers

Conversation

@scottjones

@scottjones scottjones commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Engine-only — UI in a follow-up.

The engine can now serve two extra live layers on the existing v1 wire. Old clients ignore the new keys; the pin stays until you cut a binary.

Velocity (set_product VEL). Same Level II volume as reflectivity. Super-res splits Doppler onto the next cut; we walk to that cut. Catalog keeps REF and VEL as separate rings. Units m/s, inbound/outbound palette.

Stations (wind_needed). NDBC buoys/C-MAN (lighthouses) plus METARs within 400 km of the centre. Observation time and network on each row. Speeds in m/s. Dots, not a filled field, not mixed into the sweep.

Radar stays polar. Observations are a separate windObs key with their own clock. No forecasts.

Not in this PR: UI, pin bump, model/HRRR overlay (dropped per review).

@wesleygrimes

Copy link
Copy Markdown
Owner

Exciting times!

Gonna have the robots take a look.

Add the engine half of wind: Level II radial velocity as set_product VEL,
NDBC/METAR observations on wind_needed, and an HRRR 10 m speed field with
set_wind_forecast. Radar stays polar; observations and the model overlay
are separate state keys. Old UIs ignore the new keys. No pin bump.
The HRRR .idx byte offset is field 2, not field 1. CONUS 10 m U/V is
Lambert template 30 with GRIB2 sign-magnitude scales. METAR wdir "VRB"
used to fail the whole JSON list. Live NDBC, METAR, and HRRR now answer
wind_needed.

@wesleygrimes wesleygrimes left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this — and the branch is rebased onto current main now.

Product call: live observations yes, forecast no.

Keep windObs / wind_needed / NDBC + METAR. Those are real anemometer reports. Dots, stamped, not mixed into the sweep.

Drop the HRRR path. hrrr.rs, windField, set_wind_forecast, the HRRR fixture, and the DESIGN/CONTRIBUTING exception that allows a forecast. "No forecasts" stays the rule; I don't want a model overlay on the wire, even labeled.

VEL is a separate thing (live radar, not a forecast) — leave that as-is for this cut.

Sorry for the extra pass after you already built the overlay. The obs half is the part I want.

@wesleygrimes

Copy link
Copy Markdown
Owner

@scottjones above was AI posting on my behalf, but appreciate this! I do wanna discuss forecast stuff later on but for now would love to keep things focused on observations.

Keep live observations (NDBC/METAR via wind_needed) and Level II velocity.
Remove hrrr.rs, windField, set_wind_forecast, and the DESIGN.md exception.
No forecasts on the wire.
@scottjones scottjones changed the title feat(engine): velocity, station wind, and HRRR overlay feat(engine): velocity and station wind observations Sep 15, 2026
@scottjones

Copy link
Copy Markdown
Contributor Author

Dropped the forecast path as requested.

Gone: hrrr.rs, windField, set_wind_forecast, the HRRR fixture, and the DESIGN/CONTRIBUTING exception. "No forecasts" is the rule again.

Still here: windObs / wind_needed / NDBC + METAR, and VEL as a live radar product.

Engine tests pass on this cut. Happy to do forecast as its own conversation later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants