Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Dcx59boh4pasuNwAVU7un
2.8 KiB
2.8 KiB
To do
Errors in the log
From the production log and the feeds' stored errors on 2026-09-13. The Docker log only reached back
to 12:32 UTC, so the list comes from feeds.last_error: 57 of 1,059 feeds. None of it is ipx's
User-Agent; a browser gets the same answers.
- Stop scanning an OPML's feeds once nobody subscribes to it. 55 of the 57 are feeds from
davewiner(lists.opml.org/davefeeds.xml). The list leftconfig.tomlabout 14 hours before this was written, but its 922 feeds are still in the database and still scanned every hour, with auto-download on:subscriptions()adds every derived feed, and with no parent to copy from,auto_downloadfalls back totrue(src/main.rs:937).docs/users.mdsays a feed stops being scanned when its last subscriber leaves. Skip a derived feed whose parent is not in config, and when the last subscriber leaves an OPML, treat its feeds the waysync_grouptreats ones the list dropped: remove those with nothing downloaded, mark the rest orphaned.remove_feedandipx rmboth leave them behind today. (src/main.rs,src/web.rs) - Read feeds with a bare
&. kcpw has<link>https://kcpw.org/?post_type=post&p=125715</link>, and both feedland feeds have the same fault. Strict XML refuses them; browsers and other readers do not. Whenfeed::parsefails, try once more with every&that does not start an entity written as&. Nobody subscribes to these three now, but the next feed like them will fail the same way. (src/feed.rs) - Say what came back when it is not a feed. Thirteen errors read "not RSS (the input did not
begin with an rss tag) and not Atom (...)". Each one checked was a web page: the feed moved and its
old URL redirects to the site, or the domain lapsed. Say "got a web page, not a feed", and when the
page links a feed (
<link rel="alternate" type="application/rss+xml">), name it. That link found the new feed for om.co, ms.now, Letters of Note, the Daily Dot, Hell Gate, The Frame Lab and Daily Kos. A202with an empty body (British Antarctic Survey) should read as "nothing yet", not as a parse failure. (src/feed.rs) - Westenberg. The only failing feed anyone subscribes to. The Hacker News stars list still
gives
joanwestenberg.com/rss, which is a 404; the feed is nowjoanwestenberg.com/feed. Nothing for ipx to fix; subscribe to the new URL directly.
The rest are the publishers' doing: 404 (24 feeds), 403 from sites that refuse anything but a browser (5), no longer resolving or connecting (7), and one each of 400 (an invite-only Substack), 401 (a site gone private) and 402 (an expired rss.app trial). Once the first item lands, all of them but Westenberg stop being scanned.
After these: cargo test, node tests/page-smoke.js, npx playwright test.