Discovery river sweep reports a bot-gated Reddit listing as `no-results`
What happened
A global trending discovery run (--discover --nominate-only, 2026-08-03) reported the Reddit river leg as:
"reddit": {"source": "reddit", "state": "no-results", "items_returned": 0, "attempted": true}
But r/all is never actually empty. Probing the same surface directly from that machine:
$ curl -sS -A "last30days/1.0 (research tool)" "https://www.reddit.com/r/all/hot.json?limit=5" -w "HTTP %{http_code}, %{size_download} bytes\n" -o /dev/null
HTTP 403, 189908 bytes
Reddit returned a 403 with a ~190 KB HTML block page — the listing fetch was bot-gated, and the empty parse surfaced as no-results.
Why it matters
For a hot-list/river surface, no-results and "blocked client" are opposite facts downstream: no-results reads as "nothing trending on Reddit" and (in discovery) quietly biases nominations toward whichever rivers still work — in my run, every nomination arrived single-source HN. A blocked leg should suppress itself, not vote "quiet."
Suggestion
For river listing fetches (r/all, HN front page, Digg feed), treat transport success + zero parseable items as a degraded/gated state rather than no-results — these surfaces cannot be legitimately empty in a global sweep. At minimum, propagate the HTTP status into source_status.detail so consumers can tell the two apart. (Keyword-scoped sweeps are different: zero items after a domain gate is a legitimate outcome.)
Source: mvanhorn/last30days-skill