Add noaa-hrrr-forecast-18-hour-virtual and noaa-hrrr-forecast-48-hour-virtual-fast#740
Draft
mrshll wants to merge 5 commits into
Draft
Add noaa-hrrr-forecast-18-hour-virtual and noaa-hrrr-forecast-48-hour-virtual-fast#740mrshll wants to merge 5 commits into
mrshll wants to merge 5 commits into
Conversation
…paths
Byte-for-byte copies of forecast_48_hour_virtual/{template_config,region_job}.py
at their new shared locations, with no edits, so the following commit's diff
shows exactly what the extraction changes relative to the shipped code.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSMv3HgaxKHdUaLk56bXxt
…alRegionJob Edit the verbatim copies from the previous commit into the shared form: forecast_virtual_template_config.py keeps the full variable catalog, coordinate builders, and encoding factories unchanged and turns the class head into NoaaHrrrForecastVirtualTemplateConfig with per-variant hooks (forecast_length, dataset-identity attributes via _dataset_attributes, expected-forecast-length values/statistics, _catalog_data_vars, and dims-driven vertical coordinates); forecast_virtual_region_job.py renames the coord and job classes to the shared NoaaHrrrForecastVirtual* names and adds the hrrr_virtual_chunk_containers factory. The 48-hour dataset becomes thin subclasses with unchanged public class names and module paths, and its checked-in template regenerates byte-identically. The single-polling-job operational_update_jobs, previously duplicated line-for-line by this dataset and GEFS 10-day spatial, moves to common VirtualRegionJob parameterized by an operational_update_window classvar; GEFS sets its 24h window and example_virtual's stub becomes a classvar teaching note. A construction-time guard rejects a virtual dataset whose region job uses the default update factory without declaring the window. Cache the HRRR latitude/longitude grid computation, which every HRRR dataset shares and each template build requests once per zarr group. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSMv3HgaxKHdUaLk56bXxt
The feasibility assessment and implementation plan the stacked dataset additions follow, including the manifest-split math, hourly operational design, and the materialized-mirror (virtual-fast) variant. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSMv3HgaxKHdUaLk56bXxt
Every hourly HRRR cycle (all 24/day) to f18 as a virtual icechunk dataset on the shared HRRR virtual base: append_dim_frequency=1h, 19 leads, constant 18h expected forecast length (every hourly cycle reaches f18 across v3+), manifest splits sized per group from the measured ~16.4 bytes/ref, hourly operational updates racing the in-flight init with a 55m deadline, and hourly validation with completeness thresholds tolerating the two still-publishing newest positions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSMv3HgaxKHdUaLk56bXxt
The 48-hour virtual dataset trimmed to the materialized noaa-hrrr-forecast-48-hour variable set, for measuring the operational-lag difference between a reduced-variable and full-variable virtual product. The subset derives from the materialized config with asserts on the deaccumulated-variable mapping, every variable is single-level so only wrfsfc files are polled, and all operational configuration is inherited by subclassing the full dataset. Document the -virtual-fast naming convention in AGENTS.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSMv3HgaxKHdUaLk56bXxt
mrshll
force-pushed
the
claude/hrrr-18h-feasibility-assessment-a8s89q
branch
from
July 13, 2026 13:55
d7af96c to
c99086a
Compare
mrshll
changed the base branch from
main
to
claude/hrrr-virtual-shared-base-a8s89q
July 13, 2026 13:56
This was referenced Jul 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on #743 (the shared HRRR virtual base extraction — review that first). This PR adds the two new datasets as thin consumers of that base, plus the plan doc they implement:
noaa-hrrr-forecast-18-hour-virtual— every hourly HRRR cycle (all 24/day) to f18.noaa-hrrr-forecast-48-hour-virtual-fast— the 48-hour virtual trimmed to the materializednoaa-hrrr-forecast-48-hourvariable set, to measure the operational-lag difference between a reduced-variable and full-variable virtual product.The 18-hour dataset
All 24 hourly init cycles (
append_dim_frequency=1h), leads f00–f18, archive start HRRR v3 (2018-07-13T12Z).expected_forecast_lengthis a constant 18h — every hourly cycle reaches f18 across v3+, verified against the live bucket. Manifest splits{pressure_level: 450, model_level: 400, None: 6000}from the measured ~16.4 B/ref scaled 49→19 leads. Hourly updates at:50with a 55m deadline (race-the-init for seconds-latency; the lagged-window fallback is one classvar), hourly validation at:48(30m deadline) with completeness thresholds(0.0, 0.0, 1.0)tolerating the two still-publishing newest positions.The 48-hour-fast dataset
Variable subset derived from the materialized config at template-build time, with asserts pinning the substitute mapping to exactly the
deaccumulate_to_ratevariables (precipitation_surface→total_precipitation_surface+precipitation_rate_surface;snowfall_surface→total_snowfall_run_total_surface) — drift in either direction fails loudly. 27 vars, all single-level → onlywrfsfcis polled (pinned by test). It subclasses the full 48-hour dataset, so identical operational timing holds by construction; only the variable set (and thus files polled and manifest count) differs. The-virtual-fastnaming convention is documented in AGENTS.md.Verification
Remaining before launch (ops, not code)
Backfills (18-hour: ~70k inits, ~2.3× the 48-hour wall-clock at ≤10 workers; fast: sfc-only, ~1/3 of the full 48-hour), then deploy crons and watch first fires — runbook in the plan doc §6/§8/§9.
🤖 Generated with Claude Code