{
  "blocks": [
    {
      "cautions": [
        "Sustained wind is borderline."
      ],
      "launch_time": "2026-04-25T07:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 54.0,
            "at": "2026-04-25T07:00:00-04:00",
            "gust_mph": 23.3,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 9,
            "short_forecast": "Partly Sunny",
            "storm_risk": "none",
            "sustained_wind_mph": 12,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 9656,
            "weather_code": 0
          },
          {
            "air_temp_f": 56.0,
            "at": "2026-04-25T08:00:00-04:00",
            "gust_mph": 21.9,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 3,
            "short_forecast": "Partly Sunny",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 15965,
            "weather_code": 0
          }
        ],
        "minimum_forecast_air_temp_f": 54.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 0
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 0
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T06:30:00-04:00",
            "flood_category": null,
            "level_ft": 2.492,
            "source": "NOAA CO-OPS Washington observed water level",
            "stale": false
          },
          {
            "at": "2026-04-25T07:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.75,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.289,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 122.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T08:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline."
      ],
      "launch_time": "2026-04-25T07:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 54.0,
            "at": "2026-04-25T07:00:00-04:00",
            "gust_mph": 23.3,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 9,
            "short_forecast": "Partly Sunny",
            "storm_risk": "none",
            "sustained_wind_mph": 12,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 9656,
            "weather_code": 0
          },
          {
            "air_temp_f": 56.0,
            "at": "2026-04-25T08:00:00-04:00",
            "gust_mph": 21.9,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 3,
            "short_forecast": "Partly Sunny",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 15965,
            "weather_code": 0
          }
        ],
        "minimum_forecast_air_temp_f": 54.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 0
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 0
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T07:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.75,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.289,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 122.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T09:00:00-04:00"
    },
    {
      "cautions": [],
      "launch_time": "2026-04-25T08:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 56.0,
            "at": "2026-04-25T08:00:00-04:00",
            "gust_mph": 21.9,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 3,
            "short_forecast": "Partly Sunny",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 15965,
            "weather_code": 0
          },
          {
            "air_temp_f": 57.0,
            "at": "2026-04-25T09:00:00-04:00",
            "gust_mph": 19.5,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 16013,
            "weather_code": 1
          }
        ],
        "minimum_forecast_air_temp_f": 56.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 0
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 1
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T08:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.289,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.893,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 124.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T09:30:00-04:00"
    },
    {
      "cautions": [],
      "launch_time": "2026-04-25T08:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 56.0,
            "at": "2026-04-25T08:00:00-04:00",
            "gust_mph": 21.9,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 3,
            "short_forecast": "Partly Sunny",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 15965,
            "weather_code": 0
          },
          {
            "air_temp_f": 57.0,
            "at": "2026-04-25T09:00:00-04:00",
            "gust_mph": 19.5,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 16013,
            "weather_code": 1
          }
        ],
        "minimum_forecast_air_temp_f": 56.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T08:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 0
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 1
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T08:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.289,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.893,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 124.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T10:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline."
      ],
      "launch_time": "2026-04-25T09:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 57.0,
            "at": "2026-04-25T09:00:00-04:00",
            "gust_mph": 19.5,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 16013,
            "weather_code": 1
          },
          {
            "air_temp_f": 60.0,
            "at": "2026-04-25T10:00:00-04:00",
            "gust_mph": 22,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 14,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 9656,
            "weather_code": 2
          }
        ],
        "minimum_forecast_air_temp_f": 57.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 1
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 2
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T09:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.893,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.61,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 125.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T10:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline."
      ],
      "launch_time": "2026-04-25T09:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 57.0,
            "at": "2026-04-25T09:00:00-04:00",
            "gust_mph": 19.5,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 16013,
            "weather_code": 1
          },
          {
            "air_temp_f": 60.0,
            "at": "2026-04-25T10:00:00-04:00",
            "gust_mph": 22,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 14,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 9656,
            "weather_code": 2
          }
        ],
        "minimum_forecast_air_temp_f": 57.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T09:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 1
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 2
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T09:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.893,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.61,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 125.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T11:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T10:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 60.0,
            "at": "2026-04-25T10:00:00-04:00",
            "gust_mph": 22,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 14,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 9656,
            "weather_code": 2
          },
          {
            "air_temp_f": 61.0,
            "at": "2026-04-25T11:00:00-04:00",
            "gust_mph": 16,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 4,
            "short_forecast": "Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 10.6,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 60.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 2
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T10:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.61,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.614,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 128.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T11:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T10:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 60.0,
            "at": "2026-04-25T10:00:00-04:00",
            "gust_mph": 22,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": false,
            "precipitation_probability": 4,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 14,
            "thunder_probability_percent": 0.0,
            "thunderstorm": false,
            "thunderstorm_or_lightning": false,
            "visibility_m": 9656,
            "weather_code": 2
          },
          {
            "air_temp_f": 61.0,
            "at": "2026-04-25T11:00:00-04:00",
            "gust_mph": 16,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 4,
            "short_forecast": "Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 10.6,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 60.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 0.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T10:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 2
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T10:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.61,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.614,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 128.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T12:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Wind gusts are borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T11:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 61.0,
            "at": "2026-04-25T11:00:00-04:00",
            "gust_mph": 16,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 4,
            "short_forecast": "Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 10.6,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          },
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T12:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 5,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16093,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 61.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T11:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.614,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.05,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 129.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are borderline. (2 occurrences)"
        }
      ],
      "verdict": "CAUTION",
      "window_end": "2026-04-25T12:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Wind gusts are borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T11:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 61.0,
            "at": "2026-04-25T11:00:00-04:00",
            "gust_mph": 16,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 4,
            "short_forecast": "Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 10.6,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          },
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T12:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 5,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16093,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 61.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T11:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T11:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.614,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.05,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 129.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are borderline. (2 occurrences)"
        }
      ],
      "verdict": "CAUTION",
      "window_end": "2026-04-25T13:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Wind gusts are borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T12:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T12:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 5,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16093,
            "weather_code": 3
          },
          {
            "air_temp_f": 64.0,
            "at": "2026-04-25T13:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 8,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 63.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T12:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.05,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.737,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 131.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are borderline. (2 occurrences)"
        }
      ],
      "verdict": "CAUTION",
      "window_end": "2026-04-25T13:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Wind gusts are borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T12:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T12:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 5,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16093,
            "weather_code": 3
          },
          {
            "air_temp_f": 64.0,
            "at": "2026-04-25T13:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 8,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 63.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T12:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T12:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.05,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.737,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 131.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are borderline. (2 occurrences)"
        }
      ],
      "verdict": "CAUTION",
      "window_end": "2026-04-25T14:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Wind gusts are borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T13:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 64.0,
            "at": "2026-04-25T13:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 8,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          },
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T14:00:00-04:00",
            "gust_mph": 18,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 7,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.8,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 15144,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 64.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T13:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.737,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.343,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 132.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are borderline. (2 occurrences)"
        }
      ],
      "verdict": "CAUTION",
      "window_end": "2026-04-25T14:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Wind gusts are borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T13:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 64.0,
            "at": "2026-04-25T13:00:00-04:00",
            "gust_mph": 17,
            "hourly_precipitation_in": 0.0,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 8,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.2,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 16077,
            "weather_code": 3
          },
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T14:00:00-04:00",
            "gust_mph": 18,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 7,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.8,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 15144,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 64.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T13:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T13:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.737,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.343,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 132.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are borderline. (2 occurrences)"
        }
      ],
      "verdict": "CAUTION",
      "window_end": "2026-04-25T15:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T14:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T14:00:00-04:00",
            "gust_mph": 18,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 7,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.8,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 15144,
            "weather_code": 3
          },
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T15:00:00-04:00",
            "gust_mph": 20,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 13,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 14001,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 65.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T14:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.343,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.725,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 133.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T15:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T14:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T14:00:00-04:00",
            "gust_mph": 18,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 7,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 11.8,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 15144,
            "weather_code": 3
          },
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T15:00:00-04:00",
            "gust_mph": 20,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 13,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 14001,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 65.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T14:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T14:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.343,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.725,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 133.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T16:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T15:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T15:00:00-04:00",
            "gust_mph": 20,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 13,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 14001,
            "weather_code": 3
          },
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T16:00:00-04:00",
            "gust_mph": 22.4,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 19,
            "short_forecast": "Slight Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 14.5,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13100,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 63.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T15:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.725,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.851,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 131.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T16:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T15:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 65.0,
            "at": "2026-04-25T15:00:00-04:00",
            "gust_mph": 20,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 13,
            "short_forecast": "Mostly Cloudy",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 14001,
            "weather_code": 3
          },
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T16:00:00-04:00",
            "gust_mph": 22.4,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 19,
            "short_forecast": "Slight Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 14.5,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13100,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 63.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T15:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T15:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.725,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.851,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 131.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T17:00:00-04:00"
    },
    {
      "cautions": [],
      "launch_time": "2026-04-25T16:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T16:00:00-04:00",
            "gust_mph": 22.4,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 19,
            "short_forecast": "Slight Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 14.5,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13100,
            "weather_code": 3
          },
          {
            "air_temp_f": 62.0,
            "at": "2026-04-25T17:00:00-04:00",
            "gust_mph": 26,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 47,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 16,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 62.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T16:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.851,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.704,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 130.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)",
        "Sustained wind is too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is too high for rowing."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T17:30:00-04:00"
    },
    {
      "cautions": [],
      "launch_time": "2026-04-25T16:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 63.0,
            "at": "2026-04-25T16:00:00-04:00",
            "gust_mph": 22.4,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 19,
            "short_forecast": "Slight Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 14.5,
            "thunder_probability_percent": 6.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13100,
            "weather_code": 3
          },
          {
            "air_temp_f": 62.0,
            "at": "2026-04-25T17:00:00-04:00",
            "gust_mph": 26,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 47,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 16,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 62.0,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 6.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T16:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T16:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.851,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.704,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 130.0,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)",
        "Sustained wind is too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is too high for rowing."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T18:00:00-04:00"
    },
    {
      "cautions": [
        "Rain is likely enough to be uncomfortable."
      ],
      "launch_time": "2026-04-25T17:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 62.0,
            "at": "2026-04-25T17:00:00-04:00",
            "gust_mph": 26,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 47,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 16,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 3
          },
          {
            "air_temp_f": 58.7,
            "at": "2026-04-25T18:00:00-04:00",
            "gust_mph": 22.8,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 72,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 13.3,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8401,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 58.7,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T17:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.704,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.364,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 126.7,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Sustained wind is too high for rowing.",
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T18:30:00-04:00"
    },
    {
      "cautions": [
        "Rain is likely enough to be uncomfortable."
      ],
      "launch_time": "2026-04-25T17:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 62.0,
            "at": "2026-04-25T17:00:00-04:00",
            "gust_mph": 26,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 47,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 16,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 3
          },
          {
            "air_temp_f": 58.7,
            "at": "2026-04-25T18:00:00-04:00",
            "gust_mph": 22.8,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 72,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 13.3,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8401,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 58.7,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T17:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T17:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.704,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.364,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 126.7,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Sustained wind is too high for rowing.",
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T19:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T18:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 58.7,
            "at": "2026-04-25T18:00:00-04:00",
            "gust_mph": 22.8,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 72,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 13.3,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8401,
            "weather_code": 53
          },
          {
            "air_temp_f": 55.8,
            "at": "2026-04-25T19:00:00-04:00",
            "gust_mph": 23.3,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 79.0,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 11.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8626,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 55.8,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T18:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.364,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.944,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 123.8,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T19:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T18:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 58.7,
            "at": "2026-04-25T18:00:00-04:00",
            "gust_mph": 22.8,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 72,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 13.3,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8401,
            "weather_code": 53
          },
          {
            "air_temp_f": 55.8,
            "at": "2026-04-25T19:00:00-04:00",
            "gust_mph": 23.3,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 79.0,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 11.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8626,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 55.8,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T18:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T18:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.364,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.944,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 123.8,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T20:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T19:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 55.8,
            "at": "2026-04-25T19:00:00-04:00",
            "gust_mph": 23.3,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 79.0,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 11.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8626,
            "weather_code": 53
          },
          {
            "air_temp_f": 54.6,
            "at": "2026-04-25T20:00:00-04:00",
            "gust_mph": 22.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 93,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8336,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 54.6,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T19:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.944,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.511,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 122.6,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T20:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T19:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 55.8,
            "at": "2026-04-25T19:00:00-04:00",
            "gust_mph": 23.3,
            "hourly_precipitation_in": 0.038,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 79.0,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 11.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8626,
            "weather_code": 53
          },
          {
            "air_temp_f": 54.6,
            "at": "2026-04-25T20:00:00-04:00",
            "gust_mph": 22.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 93,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8336,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 54.6,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T19:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T19:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.944,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.511,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 122.6,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T21:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T20:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 54.6,
            "at": "2026-04-25T20:00:00-04:00",
            "gust_mph": 22.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 93,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8336,
            "weather_code": 53
          },
          {
            "air_temp_f": 54.2,
            "at": "2026-04-25T21:00:00-04:00",
            "gust_mph": 20.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 80,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8449,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 54.2,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T20:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.511,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.091,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 122.2,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T21:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T20:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 54.6,
            "at": "2026-04-25T20:00:00-04:00",
            "gust_mph": 22.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 93,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8336,
            "weather_code": 53
          },
          {
            "air_temp_f": 54.2,
            "at": "2026-04-25T21:00:00-04:00",
            "gust_mph": 20.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 80,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8449,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 54.2,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T20:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T20:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.511,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.091,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 122.2,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T22:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T21:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 54.2,
            "at": "2026-04-25T21:00:00-04:00",
            "gust_mph": 20.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 80,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8449,
            "weather_code": 53
          },
          {
            "air_temp_f": 53.5,
            "at": "2026-04-25T22:00:00-04:00",
            "gust_mph": 21,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 68,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 12,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 53.5,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T21:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.091,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.697,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 121.5,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T22:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T21:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 54.2,
            "at": "2026-04-25T21:00:00-04:00",
            "gust_mph": 20.6,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 80,
            "short_forecast": "Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 10.0,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 8449,
            "weather_code": 53
          },
          {
            "air_temp_f": 53.5,
            "at": "2026-04-25T22:00:00-04:00",
            "gust_mph": 21,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 68,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 12,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 53
          }
        ],
        "minimum_forecast_air_temp_f": 53.5,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T21:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T21:00:00-04:00",
            "flood_category": null,
            "level_ft": 1.091,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.697,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 121.5,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T23:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline.",
        "Rain is likely enough to be uncomfortable. (2 occurrences)"
      ],
      "launch_time": "2026-04-25T22:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 53.5,
            "at": "2026-04-25T22:00:00-04:00",
            "gust_mph": 21,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 68,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 12,
            "thunder_probability_percent": 11.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 6437,
            "weather_code": 53
          },
          {
            "air_temp_f": 53.1,
            "at": "2026-04-25T23:00:00-04:00",
            "gust_mph": 16,
            "hourly_precipitation_in": 0.035,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 72,
            "short_forecast": "Rain Showers Likely",
            "storm_risk": "none",
            "sustained_wind_mph": 9.0,
            "thunder_probability_percent": 7.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 7693,
            "weather_code": 51
          }
        ],
        "minimum_forecast_air_temp_f": 53.1,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-25T22:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 11.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T23:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 7.0,
            "weather_code": null
          },
          {
            "at": "2026-04-25T22:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 53
          },
          {
            "at": "2026-04-25T23:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 51
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-25T22:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.697,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-25T23:00:00-04:00",
            "flood_category": null,
            "level_ft": 0.458,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 121.1,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing."
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline."
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Rain is likely enough to be uncomfortable. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-25T23:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Water level is at action stage.",
        "Water level is elevated."
      ],
      "launch_time": "2026-04-26T04:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 47.7,
            "at": "2026-04-26T04:00:00-04:00",
            "gust_mph": 27.1,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 38,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.7,
            "thunder_probability_percent": 4.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 11619,
            "weather_code": 51
          },
          {
            "air_temp_f": 46.4,
            "at": "2026-04-26T05:00:00-04:00",
            "gust_mph": 25.7,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 29,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.0,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13197,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 46.4,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-26T04:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 4.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T04:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 51
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-26T04:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.893,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.972,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T04:00:00-04:00",
            "flood_category": "action",
            "level_ft": 4.3,
            "source": "NWPS Washington Channel at SW Waterfront (IN MLLW) forecast",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 114.4,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Water level is at action stage."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-26T05:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)",
        "Water level is at action stage.",
        "Water level is elevated."
      ],
      "launch_time": "2026-04-26T04:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 47.7,
            "at": "2026-04-26T04:00:00-04:00",
            "gust_mph": 27.1,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 38,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.7,
            "thunder_probability_percent": 4.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 11619,
            "weather_code": 51
          },
          {
            "air_temp_f": 46.4,
            "at": "2026-04-26T05:00:00-04:00",
            "gust_mph": 25.7,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 29,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.0,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13197,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 46.4,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-26T04:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 4.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T04:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 51
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-26T04:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.893,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.972,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T04:00:00-04:00",
            "flood_category": "action",
            "level_ft": 4.3,
            "source": "NWPS Washington Channel at SW Waterfront (IN MLLW) forecast",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 114.4,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Water level is at action stage."
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-26T06:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-26T05:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 46.4,
            "at": "2026-04-26T05:00:00-04:00",
            "gust_mph": 25.7,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 29,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.0,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13197,
            "weather_code": 3
          },
          {
            "air_temp_f": 45.4,
            "at": "2026-04-26T06:00:00-04:00",
            "gust_mph": 27.5,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 26,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 12666,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 45.4,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-26T05:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.972,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.738,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 113.4,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-26T06:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-26T05:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 46.4,
            "at": "2026-04-26T05:00:00-04:00",
            "gust_mph": 25.7,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 29,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.0,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 13197,
            "weather_code": 3
          },
          {
            "air_temp_f": 45.4,
            "at": "2026-04-26T06:00:00-04:00",
            "gust_mph": 27.5,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 26,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 12666,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 45.4,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T05:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-26T05:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.972,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.738,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 113.4,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-26T07:00:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-26T06:00:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 45.4,
            "at": "2026-04-26T06:00:00-04:00",
            "gust_mph": 27.5,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 26,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 12666,
            "weather_code": 3
          },
          {
            "air_temp_f": 45.3,
            "at": "2026-04-26T07:00:00-04:00",
            "gust_mph": 24,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 25,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 14,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 9656,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 45.3,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-26T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-26T06:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.738,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T07:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.315,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 113.3,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-26T07:30:00-04:00"
    },
    {
      "cautions": [
        "Sustained wind is borderline. (2 occurrences)"
      ],
      "launch_time": "2026-04-26T06:30:00-04:00",
      "observations": {
        "alerts": [],
        "aqi": {
          "caution_at": 101,
          "no_row_at": 151,
          "value": 65
        },
        "forecast_points": [
          {
            "air_temp_f": 45.4,
            "at": "2026-04-26T06:00:00-04:00",
            "gust_mph": 27.5,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 26,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 13.1,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 12666,
            "weather_code": 3
          },
          {
            "air_temp_f": 45.3,
            "at": "2026-04-26T07:00:00-04:00",
            "gust_mph": 24,
            "hourly_precipitation_in": 0.027,
            "lightning_potential_index": null,
            "lightning_risk": true,
            "precipitation_probability": 25,
            "short_forecast": "Chance Rain Showers",
            "storm_risk": "none",
            "sustained_wind_mph": 14,
            "thunder_probability_percent": 1.0,
            "thunderstorm": true,
            "thunderstorm_or_lightning": true,
            "visibility_m": 9656,
            "weather_code": 3
          }
        ],
        "minimum_forecast_air_temp_f": 45.3,
        "source_issues": [],
        "storm_sources": [
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "NWS ACBA thunder probability",
            "source": "NWS ACBA thunder probability",
            "storm_risk": "none",
            "thunder_probability_percent": 1.0,
            "weather_code": null
          },
          {
            "at": "2026-04-26T06:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          },
          {
            "at": "2026-04-26T07:00:00-04:00",
            "lightning_potential_index": null,
            "link_label": "Open-Meteo ACBA forecast",
            "source": "Open-Meteo ACBA forecast",
            "storm_risk": "none",
            "thunder_probability_percent": null,
            "weather_code": 3
          }
        ],
        "thresholds": {
          "air_temperature_f": {
            "water_temperature_required_below": 60
          },
          "air_water_combined_f": {
            "caution_at_or_below": 110,
            "no_row_below": 100
          },
          "aqi": {
            "caution": 101,
            "no_row": 151
          },
          "gust_mph": {
            "caution": 15,
            "no_row": 20
          },
          "hourly_precipitation_in": {
            "no_row": 0.25
          },
          "rain_probability": {
            "caution": 60
          },
          "storm": {
            "thunder_probability_caution": 15,
            "thunder_probability_no_row": 50
          },
          "sustained_wind_mph": {
            "caution": 10,
            "no_row": 15
          },
          "visibility_m": {
            "caution_below": 1000,
            "no_row_below": 500
          },
          "water_level_ft": {
            "caution": 4.2,
            "no_row": 5.3
          },
          "water_temperature_f": {
            "no_row_below": 50
          }
        },
        "water_levels": [
          {
            "at": "2026-04-26T06:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.738,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          },
          {
            "at": "2026-04-26T07:00:00-04:00",
            "flood_category": null,
            "level_ft": 2.315,
            "source": "NOAA CO-OPS tide prediction",
            "stale": false
          }
        ],
        "water_temperature": {
          "air_water_combined_f": 113.3,
          "at": "2026-04-25T06:05:00-04:00",
          "source": "Anacostia River nr Buzzard Point at Washington, DC",
          "stale": false,
          "temp_f": 68.0
        }
      },
      "reasons": [
        "Wind gusts are too high for rowing. (2 occurrences)"
      ],
      "top_factors": [
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Wind gusts are too high for rowing. (2 occurrences)"
        },
        {
          "label": "Decision factor",
          "limit": null,
          "value": "Sustained wind is borderline. (2 occurrences)"
        }
      ],
      "verdict": "NO ROW",
      "window_end": "2026-04-26T08:00:00-04:00"
    }
  ],
  "delayed_after": "2026-04-25T07:44:00.027874-04:00",
  "freshness": "current",
  "generated_at": "2026-04-25T06:44:00.027874-04:00",
  "location": {
    "address": "1900 M St SE, Washington, DC 20003",
    "latitude": 38.8778,
    "longitude": -76.9795,
    "name": "Anacostia Community Boathouse Association",
    "short_name": "ACBA",
    "time_zone": "America/New_York"
  },
  "schema_version": "1.0",
  "source_links": [
    {
      "href": "https://forecast.weather.gov/MapClick.php?lat=38.8778&lon=-76.9795",
      "label": "NWS ACBA forecast and alerts"
    },
    {
      "href": "https://api.weather.gov/points/38.8778,-76.9795",
      "label": "NWS ACBA thunder probability"
    },
    {
      "href": "https://open-meteo.com/en/docs?latitude=38.8778&longitude=-76.9795&hourly=temperature_2m%2Cprecipitation%2Cprecipitation_probability%2Cweather_code%2Cwind_speed_10m%2Cwind_gusts_10m%2Cvisibility&minutely_15=lightning_potential&temperature_unit=fahrenheit&wind_speed_unit=mph&precipitation_unit=inch&timezone=America%2FNew_York&forecast_days=3",
      "label": "Open-Meteo ACBA forecast"
    },
    {
      "href": "https://open-meteo.com/en/docs/air-quality-api?latitude=38.8778&longitude=-76.9795&hourly=us_aqi&timezone=America%2FNew_York&forecast_days=3",
      "label": "Open-Meteo ACBA AQI"
    },
    {
      "href": "https://aviationweather.gov/data/metar/?id=KDCA&hours=6&include_taf=yes",
      "label": "AviationWeather KDCA"
    },
    {
      "href": "https://tidesandcurrents.noaa.gov/stationhome.html?id=8594900",
      "label": "NOAA CO-OPS Washington station"
    },
    {
      "href": "https://water.noaa.gov/gauges/WASD2",
      "label": "NWPS WASD2 river level"
    },
    {
      "href": "https://waterdata.usgs.gov/monitoring-location/USGS-01651827/?parameterCode=00010&period=P7D&showMedian=false",
      "label": "USGS Buzzard Point water temperature"
    },
    {
      "href": "https://www.airnow.gov/?city=Washington&state=DC&country=USA",
      "label": "AirNow Washington AQI"
    }
  ],
  "source_statuses": [],
  "stale_after": "2026-04-25T08:44:00.027874-04:00",
  "summary": {
    "caution": 6,
    "no_row": 31,
    "row": 0,
    "text": "No rowing window: Wind gusts are too high for rowing. (2 occurrences)",
    "verdict": "NO ROW"
  },
  "valid_until": "2026-04-25T07:44:00.027874-04:00"
}
