feat(nimbus): active convective warnings + watches at point (Nimbus PR 2)#4
Merged
Conversation
Pivots PR 2 scope from "NEXRAD reflectivity / dBZ-at-point" to active storm-based warnings + watches at point, sourced from api.weather.gov/alerts/active. Briefer-cadence text formatter is the load-bearing acceptance target — output is intended to read like the convective section of a 1-800-WX-BRIEF preflight brief, consumable by an LLM as-is. dBZ-at-point and image URLs are deferred to post-Nimbus investigations; the rationale is captured in-spec. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Outside-in TDD: Task 1 writes the briefer-perspective integration spec as the failing aspirational target; Tasks 2-12 build the pieces; Task 13 verifies the integration spec lights up without further changes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e threat) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wraps [ConvectiveAlert] with warnings/watches partitioning, active?, max_severity (SEVERITY_RANK-ordered), and to_h/to_json serialization. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…pty result) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Plan claimed "65kt wind gust" for a 65 MPH fixture and "52kt" for 52 MPH. The implementation correctly converts via MPH_TO_KT (0.868976) and rounds: 65*0.868976 = 56.48 → 56kt, 52*0.868976 = 45.19 → 45kt. Updates the acceptance spec only — the fixture wind values stay at 65 MPH / 52 MPH because that's the realistic NWS data shape. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… shown A briefer reading a Tornado or Severe Thunderstorm Warning aloud mentions specific hail/wind values, not the generic "considerable damage threat" tag — the measurements are the damage info. Damage threat is now only surfaced when no hail/wind measurements were parsed (typical for Flash Flood Warnings, which carry only flashFloodDamageThreat). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds the three nimbus subcommands to the CLI usage block. Outlook and storms shipped in PR 1 but were not documented; convection ships in this PR. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
Second slice of
Skywatch::Nimbus— active radar-driven warnings (TOR/SVR/FFW) and watches (TOR/SVR) at a point, designed for an LLM consumer producing the convective section of a 1-800-WX-BRIEF preflight brief.skywatch nimbus convection LAT LON [--events ...] [--format json|text]Skywatch.convection(at: [lat, lon])→Models::Convectionaggregate (partitionedwarnings/watches, briefer-relevant tag fields including hail size, wind gust mph+kt, tornado detection, damage threats)Pivots scope from "NEXRAD reflectivity / dBZ-at-point" to active warnings (rationale in design spec). dBZ-at-point and image URLs deferred to post-Nimbus investigations.
Test plan
bundle exec rspec— 371 examples, 0 failuresbundle exec rubocop— 97 files, 0 offensesspec/nimbus/briefer_perspective_spec.rb— load-bearing acceptance test (snapshot of full briefer-cadence output)exe/skywatch nimbus convection 40.688 -74.174(returned cleanly empty against api.weather.gov)🤖 Generated with Claude Code