diff --git a/TODO.md b/TODO.md index eb426ee..e56922f 100644 --- a/TODO.md +++ b/TODO.md @@ -22,37 +22,49 @@ formatting of the Go code and the markdown. Then it builds the image. The image sets memory ceilings for a 5 GiB container (README "Memory"). README "Running under upaas" says how to run it. -A five-day run of `1c65656` on the live feed, from 2026-10-27 to 2026-11-01, -found three problems: +Five runs of `next` on the live feed have ended since 2026-10-27, from three +hours to five days long. The runs found the handlers dropping updates for five +causes, and the WHOIS fetcher asking a registry that had refused it. Each is +fixed on `next`, and its Completed Steps entry below names its issue. A 21-hour +run of `742e759`, which has every fix but one, dropped no update except after +the feed stalled. That cause, https://git.eeqj.de/sneak/routewatch/issues/229, +is fixed on `next`. -- The prefix handler dropped updates while a peer's session went down - (https://git.eeqj.de/sneak/routewatch/issues/216). -- The AS handler dropped updates when the feed burst - (https://git.eeqj.de/sneak/routewatch/issues/217). -- The WHOIS fetcher kept asking a registry that had refused it - (https://git.eeqj.de/sneak/routewatch/issues/218). - -All three are fixed on `next`. So is -https://git.eeqj.de/sneak/routewatch/issues/222, which the third fix brought up. -A run of `26d939a` on the live feed showed the prefix handler still dropping -updates while the home page's cards were worked out. -https://git.eeqj.de/sneak/routewatch/issues/226 fixed that on `next`. -https://git.eeqj.de/sneak/routewatch/issues/225, also on `next`, takes the peers -whose sessions go down together out of the table in one walk. A 24-hour run of -`9bd0e91` on the live feed is checking whether any handler still drops updates. +A run of `e58c663` on the live feed began at 09:19 UTC on 2026-11-10 +(https://git.eeqj.de/sneak/routewatch/issues/232). It is to confirm that fix. +Next Step lists what its outcome reports. The seven IP lookup additions of +https://git.eeqj.de/sneak/routewatch/issues/203 landed after it began, so it +does not exercise them. The order of the project's remaining work is kept on https://git.eeqj.de/sneak/routewatch/issues/86. # Next Step -Post the outcome of the 24-hour run of `9bd0e91` on -https://git.eeqj.de/sneak/routewatch/issues/226: whether any handler still drops -updates, and the process's peak memory against 5 GiB. File an issue for each -problem the run finds. +Post the outcome of the run of `e58c663` on +https://git.eeqj.de/sneak/routewatch/issues/232. The run lasts at least 24 +hours. If the feed has not stalled or reconnected by then, the run goes on until +it does, up to 72 hours in all. The outcome says: + +- whether the feed stalled or reconnected +- whether any handler dropped an update, and the most messages the prefix + handler's queue held at once +- the most messages the prefix handler held back at once +- the size of the `origin_changes` table on disk +- the process's peak memory against 5 GiB + +File an issue for each problem the run finds. # Completed Steps +- 2026-11-10: `README.md` and this file are read whole against the rules of + https://git.eeqj.de/sneak/routewatch/issues/157, and every statement except + measured figures is checked against the code on `next`. Four README sentences + failed the prose rules, on origin changes, PTR lookups and geolocation, and + five disagreed with the code, on units, geolocation, a failed database write + and `script/test`. Each is rewritten. Status and Next Step describe the + live-feed run in progress (closes + https://git.eeqj.de/sneak/routewatch/issues/251). - 2026-11-10: the image creates the `routewatch` user as a regular user with UID 1000, so the build no longer warns about the system UID range (closes https://git.eeqj.de/sneak/routewatch/issues/248). @@ -63,16 +75,18 @@ problem the run finds. - 2026-11-10: the IP lookup checks the `icloud_private_relay` list of Apple's iCloud Private Relay networks, downloaded once a day. Each result has `flags.is_relay` (closes https://git.eeqj.de/sneak/routewatch/issues/237). -- 2026-11-10: the IP lookup checks the `protonvpn` list of ProtonVPN's /24 - networks and the `protonvpn_entry` list of its servers' IPv4 and IPv6 - addresses, from a public mirror of Proton's server list (closes - https://git.eeqj.de/sneak/routewatch/issues/236). +- 2026-11-10: the IP lookup checks two ProtonVPN lists from a public mirror of + Proton's server list. `protonvpn` holds the /24 networks of ProtonVPN's + servers, and `protonvpn_entry` holds the servers' IPv4 and IPv6 addresses + (closes https://git.eeqj.de/sneak/routewatch/issues/236). - 2026-11-10: the IP lookup finds PTR names over DNS-over-HTTPS and caches them - for the record's TTL, in memory and in `cache.db` (closes + in memory and in `cache.db` for the record's TTL. A TTL is the time for which + a DNS record may be kept (closes https://git.eeqj.de/sneak/routewatch/issues/238). - 2026-11-10: the tests no longer fail when a busy host stalls for several - seconds. Most such waits are now 15 seconds. The test of the stream's idle - timeout runs on a fake clock (closes #240) + seconds. Most waits for something that should happen are now 15 seconds. Tests + that depend on a short idle timeout or a request limit run on a fake clock + (closes https://git.eeqj.de/sneak/routewatch/issues/240) - 2026-11-10: the IP lookup checks the public VPN server lists of Mullvad, NordVPN, Private Internet Access and IVPN, and X4BNet's community list. Each result has `flags.is_vpn` and `vpn_providers` (closes