Microsoft Advertising tracking pixel

Genius Level

Every input, formula, threshold, and applied calculation in SHA's river/weather/forecast/run intelligence stack. Explore the charts and live diagnostics in one place. Designed to be diagnostic-first, educational-second.

Storm Watch 🌧️ Rain Wednesday · 63% See /storms →
Steelhead Almanac · Forecast review

The river is our mirror.

We predicted. The gauge measured.
Exact matchShaded: within ±10%Dashed: selected gap

These are the selected forecasts saved before each outcome. Historical NWS and Almanac groups cover different rivers; their averages do not establish which source is better for the same river and target. New paired comparisons are being collected separately. Rainfall is context, not proof of what caused an error. Repeated forecasts and neighboring rivers are correlated.

Latest 1,000 scored forecasts within 90 days · refreshes on page reload (up to 5 minutes cached). Percentage error uses measured flow; zero-flow outcomes have no percentage. Zero values appear in river close-ups, but cannot appear on the all-river logarithmic scale. Artwork is decorative history, not measured conditions. History artwork · study 11

1 · Live snapshot — Cuyahoga River @ Independence

The single most recent river_conditions row for this river. Fed every 15 min by the rivers:update command which combines USGS instantaneous values (flow, gauge height, water temp, parameter 00045 for rain bucket) with OpenWeather current conditions (air temp, weather, wind, humidity, barometric pressure).

Flow rate
252 cfs
Gauge height
2.6 ft
Water temp
61.3°F
Clarity
Clear
Air temp
64.7°F
Sky
Clear
Wind
9.2 mph SSE
Precip 1h
0"
Humidity
72%
Barometric
1017 hPa
Lat / lon
41.3953, -81.6298
Primary USGS gauge
04208000
Captured Nov 3 10:45pm EST

2 · Recommendation breakdown

The fishing rating shown on each river page comes from FishingRecommendationService::getRecommendation(). Four independently scored components plus a barometric-pressure modifier produce a 0–11 raw score, which is clamped and cut into Excellent / Good / Fair / Poor. Below is the live decomposition for this river.

fair score = 4.05 / 11

"Low flow at 252 CFS. Estimated clarity is clear. Water temperature 61.3°F. Water assessment: fair."

Per-component contribution

Component Points Why
flow 1
temp 1
clarity 2
weather 0.05
pressure 0
flow_value 252
temp_value 61.3
clarity_value Clear

Barometric pressure analyzer

Trend
stable
Δ hPa/hr
—
Score modifier
+0
Sample size
32 pts

Scoring rules

flow
In optimal zone = 4 · within 30% = 3 · within 60% = 2 · outside = 1 · above p95×1.5 = 0 (blown).
temp
38–55°F = 3 (prime: covers winter holdover + spring run) · 33–58°F = 2 · 30–62°F = 1 · outside = 0.
clarity
Stained = 3 (steelhead green) · Clear = 2 · Muddy = 0.
weather
Cloudy/Overcast = 1 · else = 0.
pressure
Rapidly falling = +2 · falling = +1 · stable = 0 · rising = -1 · rapidly rising = -1.
rating_cuts
Excellent ≥ 9 · Good ≥ 6 · Fair ≥ 3 · Poor < 3 (max 11 after clamp).

3 · Statistics engine

Cached in river_flow_stats, regenerated nightly at 03:00 ET by flow:compute-stats. The pipeline pulls a 3-year window of hourly- downsampled USGS flow, removes Tukey outliers at 3× IQR on log-flow, then computes percentiles, a 20-bin log-space histogram, Q-Q quantiles vs. a fitted normal, and (if ≥ 20 historical "Good" reports exist) promotes the optimal zone from a heuristic p15–p30 to the empirical p10–p90 of those reports.

Window
3 yr
Sample size
2,213
Mean / median
431 / 391 cfs
Min / max
238 / 2,308

Percentile distribution

Pcfs
pp5260
pp10269
pp25304
pp50391
pp75558
pp90782
pp951,090
Optimal zone (manual)
0 – 0 cfs

Flow distribution histogram (log-space, 3 yr)

238 2,308 cfs

Green bars overlap the optimal zone. Bars are equal-width in log-flow space.

Today's flow placement

p0 (low) p50 p99 (high) p5

Current flow 252 cfs sits at the p5 of the 3-year record. Green band = optimal zone.

Stats computed Nov 3 3:00am

4 · Weather integration

Three independent feeds power the per-river weather story. NWS gridpoint forecasts (refreshed every 3 hours) supply 7-day periods + 48 hours of hourly data. AHPS stage forecasts give 5-day predicted flow / gauge height. SPC convective outlooks tier the river's lat/lon by tornado / wind / hail risk for days 1–3. Active alerts are de-duplicated against expired headlines.

AHPS predicted flow (limited gauge coverage)
+24h 356 cfs · 2.9 ft · Nov 5 1am
+48h 319 cfs · 2.8 ft · Nov 6 1am
+72h 319 cfs · 2.8 ft · Nov 7 1am
gauge INDO1 · issued Nov 3 9:58am
SPC convective tier
Day 1: — · Day 2: — · Day 3: —
— = no convective risk over this point today (data fetched ✓)
Active NWS alerts
none active

NWS 7-day forecast

Period Temp Wind Forecast
Tonight 62°F 7 to 12 mph SE Partly Cloudy
Wednesday 72°F 12 to 17 mph S Light Rain
Wednesday Night 55°F 6 to 17 mph S Light Rain Likely
Thursday 67°F 6 to 13 mph SW Mostly Sunny
Thursday Night 48°F 2 to 7 mph SW Mostly Cloudy
Friday 61°F 2 to 7 mph W Mostly Cloudy then Chance Light Rain
Friday Night 43°F 5 to 8 mph NW Chance Light Rain
Fetched Nov 3 10:01pm

5 · Run indicator (alley-wide)

Lake-surface temp from NDBC buoys + C-MAN stations, every station counting once (the mean of the station means), compared against 7-day delta and 55°F threshold crossing detection. State changes drive copy on every river page.

Lake Erie

pre_run_fall
surface temp 60°F · 7d Δ -0.7°F · day 33 in state
snapshot 2026-11-03
Latest buoy reads (24h)
NDBC-45142 59.4°F Nov 3 10:00pm
NDBC-MRHO1 59.9°F Nov 3 9:48pm
NDBC-FAIO1 60.8°F Nov 3 9:48pm
NDBC-CNDO1 61.5°F Nov 3 9:48pm
NDBC-MRHO1 59.9°F Nov 3 9:42pm
NDBC-FAIO1 60.8°F Nov 3 9:42pm

Lake Ontario

run_active_fall
surface temp 55.2°F · 7d Δ +0.1°F · day 0 in state
snapshot 2026-11-03
Latest buoy reads (24h)
NDBC-45139 55.8°F Nov 3 10:00pm
NDBC-45012 55.2°F Nov 3 10:00pm
NDBC-45012 55.2°F Nov 3 9:50pm
NDBC-45012 55.2°F Nov 3 9:40pm
NDBC-45012 55.2°F Nov 3 9:30pm
NDBC-45012 55.2°F Nov 3 9:20pm

Station health

Dark: no water temperature stored for 24 hours while the station is still on the air. Stuck: one identical value for 48 hours. Off air: a seasonal buoy out of the water. A station is reported here and in the error log, never dropped from the average.

erie NDBC-CNDO1 Cleveland Harbor (central Erie south shore) ok 61.5°F Nov 3 9:48pm
erie NDBC-FAIO1 Fairport Harbor (central Erie south) ok 60.8°F Nov 3 9:48pm
erie NDBC-MRHO1 Marblehead (western Erie) ok 59.9°F Nov 3 9:48pm
erie NDBC-45005 Lake Erie (western mid-lake) dark 74.7°F Sep 18 12:00am
erie NDBC-45142 Lake Erie (eastern offshore, Port Colborne) ok 59.4°F Nov 3 10:00pm
ontario NDBC-45012 Lake Ontario (mid-lake) ok 55.2°F Nov 3 10:00pm
ontario NDBC-45139 Lake Ontario (west end, off Grimsby) ok 55.8°F Nov 3 10:00pm

Seven-state classifier

pre_run_fall
Lake Above Fall Temperature Band. River temperatures may already be favorable; fish may already be in tributaries.
run_starting_fall
First fish entering tribs (fall pulse).
run_active_fall
Active fall run.
holdover
Fish wintering in tribs between fall + spring.
run_starting_spring
Spring run starting (post-holdover surge).
run_active_spring
Active spring run.
run_ending
Drop-back; spawned fish leaving for the lake.
off_season
Lake-bound; tribs warm; warmwater season.

6 · Storm detection (alley-wide)

ActiveStormDetector fires four parallel triggers against river_precip_observations, NWS active alerts, and 6-hour flow deltas. Any single trigger flips the storm card to active; severity is then classified by the most aggressive signal across all 31 rivers. Precip readings flow from a 4-source priority chain — fresher, more accurate sources override stale ones.

QUIET
active
0
recovering
0
watching
9
quiet
22

Selected river lifecycle

Cuyahoga River @ Independence
watching 67% confidence
Open river page

"0.5" rain expected by 1 pm. Gauges still calm."

Signals fired
forecast_precip_0_3
Expected at
Nov 4 1:00pm EST
Last pulse ended
-

Storm lifecycle state transitions

QUIET -> WATCHING
Forecast precip estimate >= 0.30" in 24h, NWS watch/warning, SPC MRGL+, or AHPS predicted flow >= 2x current flow.
WATCHING -> ACTIVE
Any active storm bucket fires: heavy rate >= 0.5 in/hr in 30 min, broad rain >= 3 rivers over 0.10"/hr, NWS alert, or flow rise >= 1.5x vs 6h ago with rain in the region in the last 24h.
ACTIVE -> RECOVERING
A storm pulse ended within the last 72h and the river has not returned to baseline.
RECOVERING -> QUIET
Pulse returned to baseline and current flow is <= optimal high x 1.15.

Storm Lifecycle State Matrix

River State Severity Signals Confidence Headline
Ashtabula River watching - forecast_precip_0_3 67% 0.4" rain expected by 4 pm. Gauges still calm.
Black River watching - forecast_precip_0_3 67% 0.4" rain expected by 12 pm. Gauges still calm.
Black River (Watertown) quiet - - 90% -
Brandy Run near Girard quiet - - 90% -
Buffalo Creek quiet - - 90% -
Canadaway Creek quiet - - 90% -
Cattaraugus Creek quiet - - 90% -
Cazenovia Creek quiet - - 90% -
Chagrin River @ Willoughby watching - forecast_precip_0_3 67% 0.4" rain expected by 2 pm. Gauges still calm.
Chautauqua Creek quiet - - 90% -
Conneaut Creek quiet - - 90% -
Crooked Creek quiet - - 90% -
Cuyahoga River @ Independence watching - forecast_precip_0_3 67% 0.5" rain expected by 1 pm. Gauges still calm.
Eighteen Mile Creek quiet - - 90% -
Eighteenmile Creek (Niagara) quiet - - 90% -
Elk Creek quiet - - 90% -
Euclid Creek watching - forecast_precip_0_3 67% 0.4" rain expected by 1 pm. Gauges still calm.
Genesee River quiet - - 90% -
Grand River near Painesville watching - forecast_precip_0_3 67% 0.4" rain expected by 3 pm. Gauges still calm.
Huron River watching - forecast_precip_0_3 67% 0.5" rain expected by 10 am. Gauges still calm.
Irondequoit Creek quiet - - 90% -
Johnson Creek quiet - - 90% -
Oak Orchard Creek quiet - - 90% -
Rocky River near Berea watching - forecast_precip_0_3 67% 0.4" rain expected by 1 pm. Gauges still calm.
Salmon River quiet - - 90% -
Sandy Creek (Adams) quiet - - 90% -
Sandy Creek (Hamlin) quiet - - 90% -
Silver Creek quiet - - 90% -
Twenty Mile Creek quiet - - 90% -
Vermilion River @ Vermilion watching - forecast_precip_0_3 67% 0.5" rain expected by 11 am. Gauges still calm.
Walnut Creek quiet - - 90% -

Precipitation rate — last 24 hours (NWS publishes in 6h intervals; USGS hourly where available)

Alley average Wettest single river Broad-rain trigger Heavy-MRMS trigger
in/hr 0.00 0.10 0.12 11:00pm 10:00pm

Y axis is in/hr precipitation, auto-scaled but always includes the broad-rain trigger so quiet days still have context. The cyan line is the alley-wide average; gray ticks above each cyan dot show how high the single wettest river was running at that observation. When cyan crosses amber → broad-front rain. When a gray tick crosses red → one river is in a heavy cell. Sparse points are real — NWS gridpoint QPE only updates every 6 hours per river; the hourly USGS rows fill in for the handful of rivers whose gauges publish precipitation.

Triggers

Trigger 1A — Heavy MRMS rate
≥ 1 river over 0.5 in/hr in last 30 min.
Trigger 1B — Broad rain
≥ 3 rivers with precipitation_1h > 0.10".
Trigger 2 — NWS alert
≥ 1 active alert covering any river.
Trigger 3 — Flow rise
≥ 1 river with current flow ≥ 1.5× flow 6 hours ago, where its region has had rain in the last 24 hours (0.10" in an hour, 0.25" in a day, or an NWS alert). Dam-controlled rivers (Oak Orchard) never count.

Severity classifier

severe
NWS Extreme/Severe alert · MRMS ≥ 1.0 in/hr · ≥ 5 rivers rising · ≥ 8 raining · ≥ 3 heavy MRMS rivers
moderate
Any active alert · MRMS ≥ 0.5 in/hr · ≥ 1 rising · ≥ 5 raining
light
Default when active but none of the above

Precipitation source priority

  1. mrms — Open-Meteo Lite (15-min observations) — 10 min staleness window
  2. usgs — USGS parameter 00045 from gauges with rain buckets — 30 min
  3. nws_obs — NWS gridpoint quantitativePrecipitation past intervals — 90 min
  4. nws_fcst — NWS gridpoint forecast (final fallback) — 240 min

7 · Alley Index (alley-wide)

Percentile rank of today's underlying conditions composite (mean of per-river fishing scores 0–100) against the historical record on this calendar window (±15 days, all years). Below 10 comparable days in the window the Index falls back to the raw underlying score so the page always shows a meaningful number.

Today
40
Underlying
34
Rivers active / total
31 / 31
Date
2026-11-03 00:00:00

Band cuts

BandCutMeaning
Excellent ≥ 90 Top 10% of comparable days ever recorded.
Good ≥ 70 Top 30%.
Average ≥ 30 Middle 40%.
Poor ≥ 10 Bottom 30%.
Blown ≥ 0 Bottom 10%.

Last 30 days

Older → newer left to right. Color follows band cuts.

8 · Forecast verification (alley-wide)

Most-recent NWS prediction for each (river, date) in the last 14 days, sorted past→future. The verifier joins each prediction to MAX/MIN(air_temp_f) + MAX(precipitation_1h) from river_conditions on that date. Δ column compares observed vs predicted. Known upstream gap: predicted precipitation inches are unreliable (NWS forecast text rarely includes a clean inches value, so the snapshotter falls back to 0). Use precip probability as the better forecast signal.

Date River Predicted (hi/lo · precip) Observed (hi/lo · max 1h) Δ vs predicted
2026-11-09 Ashtabula River 55°/— · 46% POP · 18 mph W (future — not yet verifiable)
2026-11-09 Black River 55°/— · 28% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Black River (Watertown) 51°/— · 37% POP · 7 mph W (future — not yet verifiable)
2026-11-09 Brandy Run near Girard 54°/— · 48% POP · 12 mph W (future — not yet verifiable)
2026-11-09 Buffalo Creek 54°/— · 35% POP · 8 mph W (future — not yet verifiable)
2026-11-09 Canadaway Creek 53°/— · 46% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Cattaraugus Creek 53°/— · 46% POP · 8 mph W (future — not yet verifiable)
2026-11-09 Cazenovia Creek 54°/— · 36% POP · 8 mph W (future — not yet verifiable)
2026-11-09 Chagrin River @ Willoughby 56°/— · 40% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Chautauqua Creek 53°/— · 46% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Conneaut Creek 55°/— · 46% POP · 14 mph W (future — not yet verifiable)
2026-11-09 Crooked Creek 54°/— · 47% POP · 12 mph W (future — not yet verifiable)
2026-11-09 Cuyahoga River @ Independence 56°/— · 35% POP · 12 mph W (future — not yet verifiable)
2026-11-09 Eighteen Mile Creek 53°/— · 40% POP · 7 mph W (future — not yet verifiable)
2026-11-09 Eighteenmile Creek (Niagara) 54°/— · 31% POP · 10 mph W (future — not yet verifiable)
2026-11-09 Elk Creek 54°/— · 48% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Euclid Creek 55°/— · 38% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Genesee River 54°/— · 35% POP · 10 mph W (future — not yet verifiable)
2026-11-09 Grand River near Painesville 55°/— · 43% POP · 14 mph W (future — not yet verifiable)
2026-11-09 Huron River 56°/— · 22% POP · 10 mph W (future — not yet verifiable)
2026-11-09 Irondequoit Creek 54°/— · 35% POP · 10 mph W (future — not yet verifiable)
2026-11-09 Johnson Creek 53°/— · 34% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Oak Orchard Creek 54°/— · 34% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Rocky River near Berea 55°/— · 32% POP · 14 mph W (future — not yet verifiable)
2026-11-09 Salmon River 51°/— · 45% POP · 7 mph W (future — not yet verifiable)
2026-11-09 Sandy Creek (Adams) 51°/— · 40% POP · 7 mph W (future — not yet verifiable)
2026-11-09 Sandy Creek (Hamlin) 54°/— · 35% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Silver Creek 52°/— · 44% POP · 12 mph W (future — not yet verifiable)
2026-11-09 Tuscarawas River 54°/— · 25% POP · 12 mph W (future — not yet verifiable)
2026-11-09 Twenty Mile Creek 53°/— · 46% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Vermilion River @ Vermilion 55°/— · 27% POP · 13 mph W (future — not yet verifiable)
2026-11-09 Walnut Creek 53°/— · 48% POP · 17 mph W (future — not yet verifiable)
2026-11-08 Ashtabula River 55°/42° · 46% POP · 15 mph W (future — not yet verifiable)
2026-11-08 Black River 56°/38° · 23% POP · 10 mph W (future — not yet verifiable)
2026-11-08 Black River (Watertown) 53°/36° · 37% POP · 8 mph SW (future — not yet verifiable)
2026-11-08 Brandy Run near Girard 53°/38° · 45% POP · 8 mph SW (future — not yet verifiable)
2026-11-08 Buffalo Creek 55°/38° · 34% POP · 7 mph SW (future — not yet verifiable)
2026-11-08 Canadaway Creek 53°/38° · 46% POP · 10 mph W (future — not yet verifiable)
2026-11-08 Cattaraugus Creek 54°/37° · 42% POP · 6 mph SW (future — not yet verifiable)
2026-11-08 Cazenovia Creek 55°/38° · 35% POP · 7 mph SW (future — not yet verifiable)
2026-11-08 Chagrin River @ Willoughby 57°/39° · 40% POP · 9 mph W (future — not yet verifiable)
2026-11-08 Chautauqua Creek 52°/42° · 46% POP · 10 mph SW (future — not yet verifiable)
2026-11-08 Conneaut Creek 55°/41° · 44% POP · 12 mph W (future — not yet verifiable)
2026-11-08 Crooked Creek 54°/38° · 45% POP · 9 mph SW (future — not yet verifiable)
2026-11-08 Cuyahoga River @ Independence 57°/39° · 29% POP · 9 mph SW (future — not yet verifiable)
2026-11-08 Eighteen Mile Creek 54°/38° · 39% POP · 6 mph SW (future — not yet verifiable)
2026-11-08 Eighteenmile Creek (Niagara) 56°/38° · 26% POP · 9 mph SW (future — not yet verifiable)
2026-11-08 Elk Creek 54°/40° · 45% POP · 9 mph SW (future — not yet verifiable)
2026-11-08 Euclid Creek 56°/42° · 37% POP · 10 mph W (future — not yet verifiable)
2026-11-08 Genesee River 56°/40° · 25% POP · 8 mph W (future — not yet verifiable)
2026-11-08 Grand River near Painesville 56°/38° · 43% POP · 10 mph W (future — not yet verifiable)
2026-11-08 Huron River 56°/37° · 16% POP · 9 mph W (future — not yet verifiable)
2026-11-08 Irondequoit Creek 56°/38° · 25% POP · 8 mph W (future — not yet verifiable)
2026-11-08 Johnson Creek 54°/42° · 29% POP · 10 mph W (future — not yet verifiable)
2026-11-08 Oak Orchard Creek 54°/40° · 29% POP · 10 mph SW (future — not yet verifiable)
2026-11-08 Rocky River near Berea 56°/38° · 26% POP · 12 mph W (future — not yet verifiable)
2026-11-08 Salmon River 54°/36° · 39% POP · 7 mph W (future — not yet verifiable)
2026-11-08 Sandy Creek (Adams) 53°/38° · 40% POP · 8 mph SW (future — not yet verifiable)
2026-11-08 Sandy Creek (Hamlin) 54°/39° · 29% POP · 9 mph W (future — not yet verifiable)
2026-11-08 Silver Creek 53°/39° · 44% POP · 9 mph W (future — not yet verifiable)
2026-11-08 Tuscarawas River 56°/36° · 20% POP · 8 mph W (future — not yet verifiable)
2026-11-08 Twenty Mile Creek 53°/44° · 46% POP · 9 mph SW (future — not yet verifiable)
2026-11-08 Vermilion River @ Vermilion 56°/36° · 22% POP · 10 mph W (future — not yet verifiable)
2026-11-08 Walnut Creek 53°/43° · 48% POP · 12 mph SW (future — not yet verifiable)
2026-11-07 Ashtabula River 55°/42° · 49% POP · 15 mph NW (future — not yet verifiable)
2026-11-07 Black River 56°/40° · 38% POP · 10 mph W (future — not yet verifiable)
2026-11-07 Black River (Watertown) 56°/38° · 37% POP · 7 mph NW (future — not yet verifiable)
2026-11-07 Brandy Run near Girard 54°/39° · 48% POP · 9 mph NW (future — not yet verifiable)
2026-11-07 Buffalo Creek 56°/39° · 48% POP · 6 mph W (future — not yet verifiable)
2026-11-07 Canadaway Creek 54°/39° · 48% POP · 10 mph NW (future — not yet verifiable)
2026-11-07 Cattaraugus Creek 56°/39° · 53% POP · 6 mph W (future — not yet verifiable)
2026-11-07 Cazenovia Creek 56°/40° · 48% POP · 6 mph W (future — not yet verifiable)
2026-11-07 Chagrin River @ Willoughby 57°/41° · 52% POP · 10 mph NW (future — not yet verifiable)
2026-11-07 Chautauqua Creek 53°/43° · 50% POP · 10 mph NW (future — not yet verifiable)
2026-11-07 Conneaut Creek 55°/42° · 49% POP · 12 mph NW (future — not yet verifiable)
2026-11-07 Crooked Creek 55°/39° · 47% POP · 9 mph NW (future — not yet verifiable)
2026-11-07 Cuyahoga River @ Independence 57°/41° · 45% POP · 10 mph W (future — not yet verifiable)
2026-11-07 Eighteen Mile Creek 55°/40° · 51% POP · 6 mph W (future — not yet verifiable)
2026-11-07 Eighteenmile Creek (Niagara) 56°/39° · 41% POP · 9 mph NW (future — not yet verifiable)
2026-11-07 Elk Creek 55°/41° · 48% POP · 10 mph NW (future — not yet verifiable)
Total snapshots in archive: 40466 · 80 shown (last 14 days, most-recent prediction per (river, date))

9 · Conditions archive (alley-wide)

Tiered retention so the database doesn't grow unbounded but the long-history aggregates that power the Alley Index, forecast verifier, and storm-pulse detector remain intact. Raw river_conditions prune weekly via rivers:clean; hourly + daily rollups are forever.

Retention policy

raw river_conditions
90 days (pruned weekly via rivers:clean)
gauge_readings
90 days
lake_temp_snapshots
forever (small volume)
precip_observations
raw 90 days; hourly + daily rollups forever
ahps_forecasts
forever
alley_index_snapshots
forever
spc_outlooks
forever
nws_alerts
forever (with ended_at marker)

Row counts (live)

river_conditions 500,315
gauge_readings 1,018,180
lake_temp_snapshots 93,611
precip_observations 32,227
ahps_forecasts 6,288
alley_index_snapshots 281
spc_outlooks 41
nws_alerts 1,048

10 · Data sources & cadence (operational)

Every external feed feeding SHA's intelligence stack, with the artisan command that drives it, last-fetch timestamp, and total row count. If a "last_at" is hours behind cadence, that source is stalled.

Source Cadence Driver Last at Rows
USGS instantaneous values 15 min rivers:update Nov 3 10:45pm 1,018,180
OpenWeather current 15 min rivers:update Nov 3 10:45pm 500,315
NWS 7-day + hourly forecast 3 hours forecasts:fetch Nov 3 10:01pm 32
NWS AHPS predicted flow 6 hours ahps:fetch Nov 3 11:16am 6,288
NWS active alerts 15 min alerts:fetch-nws Oct 16 6:15pm 1,048
SPC convective outlooks 3 hours spc:fetch-outlook Nov 3 10:15pm 41
NDBC + C-MAN lake temps 1 hour noaa:fetch-buoys Nov 3 10:00pm 93,611
River precip (USGS / NWS / MRMS-Lite) 5–60 min rivers:update + precip:fetch-nws + local Open-Meteo worker Nov 3 10:00pm 32,227
Alley Index snapshot hourly + daily 04:50 ET index:compute Nov 3 10:00pm 281
Run state classifier daily 06:30 ET run-state:compute Nov 2 338

11 · Constants reference (every threshold in one place)

Every magic number that drives a SHA decision, with the file it lives in. Edit the source to change a threshold — this page reflects the live code path. Grouped by subsystem.

Group Constant Value Where
Flow scoring In optimal zone 4 points IndexCalculatorService::scoreCondition
Flow scoring Within 30% of optimal 3 points IndexCalculatorService::scoreCondition
Flow scoring Within 60% of optimal 2 points IndexCalculatorService::scoreCondition
Flow scoring Above p95 × 1.5 Blown (0) IndexCalculatorService::scoreCondition
Temp scoring Prime band (winter + spring) 38–55°F = 3 FishingRecommendationService::analyzeTemperature
Temp scoring Good band 33–58°F = 2 FishingRecommendationService::analyzeTemperature
Temp scoring Marginal band 30–62°F = 1 FishingRecommendationService::analyzeTemperature
Clarity Clear / Stained ratio < 1.4× p50 RiverMonitorService::determineClarity
Clarity Stained / Muddy ratio < 2.8× p50 RiverMonitorService::determineClarity
Pressure Rapidly falling ≤ -1.0 hPa/hr PressureService
Pressure Falling ≤ -0.3 hPa/hr PressureService
Pressure Score modifier (rapidly falling) +2 points PressureService
Storm card Heavy-MRMS threshold 0.5 in/hr ActiveStormDetector::HEAVY_RATE_INCHES_PER_HOUR
Storm card Heavy-MRMS lookback 30 min ActiveStormDetector::HEAVY_RATE_LOOKBACK_MINUTES
Storm card Broad-rain threshold 0.10"/hr ActiveStormDetector::RAIN_THRESHOLD_INCHES
Storm card Broad-rain river count ≥ 3 ActiveStormDetector::MIN_RAIN_RIVERS
Storm card Flow-rise factor 1.5× vs 6h ago ActiveStormDetector::FLOW_RISE_FACTOR
Storm card Rain needed behind a flow rise 0.10" in an hour or 0.25" in a day, in the region, last 24h StormRainEvidence
Storm lifecycle Watching forecast precip ≥ 0.30" in 24h StormLifecycleService::forecastPrecipSignal
Storm lifecycle Watching AHPS rise ≥ 2× current flow StormLifecycleService::watchingSignals
Storm lifecycle Recovery lookback 72 hours StormLifecycleService::recoveringSignal
Storm lifecycle Recovery normalized flow ≤ optimal high × 1.15 StormLifecycleService::flowIsNormalized
Run indicator Lake threshold 55°F RunStateClassifier
Run indicator Lake temperature mean of station means LakeTemperature::stationMean
Run indicator Lake above fall temperature band, Sep–Nov > 56°F RunStateClassifier::classify
Run indicator Station dark 24 hours, no water temp LakeStationHealth::DARK_HOURS
Run indicator Station stuck 48 hours, one value LakeStationHealth::STUCK_HOURS
Alley Index Calendar window ±15 days, all years IndexPercentileService::WINDOW_DAYS
Alley Index Min pool for percentile 10 days IndexPercentileService::MIN_POOL
Alley Index Excellent band ≥ 90 IndexPercentileService::descriptorFor
Alley Index Good band 70–89 IndexPercentileService::descriptorFor
Alley Index Average band 30–69 IndexPercentileService::descriptorFor
Alley Index Poor band 10–29 IndexPercentileService::descriptorFor
Alley Index Blown band 0–9 IndexPercentileService::descriptorFor
Forecast verify Snapshot time Daily 05:15 ET routes/console.php
Optimal zone Empirical promotion threshold ≥ 20 Good reports RiverFlowStatistics
Stats engine Window 3 years RiverFlowStatistics
Stats engine Outlier removal 3× IQR on log-flow RiverFlowStatistics
Stats engine Histogram bins 20 (log-space) RiverFlowStatistics
Genius Level — reload for current diagnostics. Forecast accuracy uses scored records, cached for up to five minutes.

Scan to visit

Steelhead Almanac QR Code

Steelhead Almanac

steelheadalmanac.com

Privacy policy