448 of 88,374 tagged adults at the Bonneville ladder came back for a second complete run — down the river as a spent kelt, back to the ocean, and up all those dams again. Median time between runs: 381 days. 132 tags span long enough to be third-year candidates.
Salmon die after spawning. Steelhead don't have to — and these 448 fish are individually documented proof: each is one PIT tag with two dated crossings of the same ladder.
build_field_notes.py.
More on what tags can tell us: the Bonneville tracers.Rank the rivers by the fish they grow and the order is stable and steep: Clearwater fish run a median of 760 mm, while Imnaha fish run 504 mm. The big two-ocean "B-run" fish concentrate almost entirely in the Snake — and within the Clearwater, size maps to which tributary: 3% of Lapwai Creek fish clear 78 cm against 74% in the upper Lochsa.
A tagged fish crossing Bonneville reaches Lower Granite in a median of 36 days, so the site can say which region the run favours while the season is still on. But the antennas that name a specific river mostly sit at spawning tributaries, and the median wait for that answer is 199 days. The destination of a fall run resolves the following spring — not for lack of tags, but because the fish haven't arrived yet.
bon_tag_resolution.py; the full
story is on the tracers page.The single most humbling measurement on this site: the split of the run between rivers is so stable year to year that copying last year's published composition predicts it to about 2 points — better than our own tag-based model. Columbia steelhead are creatures of habit at the population level, even while individual years boom and bust in size.
That finding now shapes the model itself: where a published answer exists we anchor on it, and our tags supply the change since then.
On a late-August day, a mean of 55% of the fish counted at Lower Granite this calendar year (up to 92% in some years) crossed before June — the tail of the previous season's run, still moving through the system after overwintering. The river is full of holdovers when the new run starts, which is why early-season "how does this year compare" reads at upstream dams deceive, and why this site keys everything to the June-1 migration year.
granite_wedge_test.py, which
exists because Paul argued the residuals were contaminating the forecast —
he was right.