blocklists becomes ip_lists in the answer. The package is now internal/iplist and the state directory iplists. Nothing keeps the old names working.
Every IP lookup result has flags with is_tor and is_bogon, whether or not the address has a route.
The largest list file accepted is 200 MiB.
What the diff does not show:
The JSON answer's keys come out sorted, so flags reads is_bogon then is_tor, unlike the order in the issue's example.
An IPv4 address written as IPv6 (::ffff:1.1.1.1) is judged as the IPv4 address. Otherwise all of them would be bogons, since ::ffff:0:0/96 is reserved.
Disclosures:
Deviation: the "over the size limit" row left the download table test, because it would now hold 220 MiB in memory. A new test sends the same case from a generated reader. It and the 199 MiB test each write about 200 MiB to the test's temp directory.
Judgement call: the 2026-10-27 TODO.md entry keeps the old word, as a dated record of what was built then. The DShield header in a parser test fixture ("Block List") is that publisher's own text.
Rule suppressed: tagliatelle on the two result structs, for snake_case keys, as elsewhere in the repo.
Judgement call: TODO.md no longer says a question about the answer's fields waits for sneak. He answered it on #203 (comment).
Model: opus-5-5
Implements https://git.eeqj.de/sneak/routewatch/issues/233.
- `blocklists` becomes `ip_lists` in the answer. The package is now `internal/iplist` and the state directory `iplists`. Nothing keeps the old names working.
- Every IP lookup result has `flags` with `is_tor` and `is_bogon`, whether or not the address has a route.
- The largest list file accepted is 200 MiB.
What the diff does not show:
- The JSON answer's keys come out sorted, so `flags` reads `is_bogon` then `is_tor`, unlike the order in the issue's example.
- An IPv4 address written as IPv6 (`::ffff:1.1.1.1`) is judged as the IPv4 address. Otherwise all of them would be bogons, since `::ffff:0:0/96` is reserved.
Disclosures:
- Deviation: the "over the size limit" row left the download table test, because it would now hold 220 MiB in memory. A new test sends the same case from a generated reader. It and the 199 MiB test each write about 200 MiB to the test's temp directory.
- Judgement call: the 2026-10-27 `TODO.md` entry keeps the old word, as a dated record of what was built then. The DShield header in a parser test fixture ("Block List") is that publisher's own text.
- Rule suppressed: `tagliatelle` on the two result structs, for snake_case keys, as elsewhere in the repo.
- Judgement call: `TODO.md` no longer says a question about the answer's fields waits for sneak. He answered it on https://git.eeqj.de/sneak/routewatch/issues/203#issuecomment-165190.
Model: opus-5-5
clawbot
self-assigned this 2026-11-10 10:27:29 +01:00
The answer field is now ip_lists, the package internal/iplist and the
state directory iplists. No compatibility is kept for the old names.
Every IP lookup result gains a flags object with is_tor and is_bogon.
The largest list file accepted is now 200 MiB.
Model: opus-5-5
PASS: the rename to IP lists, the flags object and the 200 MiB limit meet #233 and the repo's policies.
Model: opus-5-5
PASS: the rename to IP lists, the `flags` object and the 200 MiB limit meet https://git.eeqj.de/sneak/routewatch/issues/233 and the repo's policies.
Model: opus-5-5
clawbot
merged commit cf50d195ad into next2026-11-10 10:48:23 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements #233.
blocklistsbecomesip_listsin the answer. The package is nowinternal/iplistand the state directoryiplists. Nothing keeps the old names working.flagswithis_torandis_bogon, whether or not the address has a route.What the diff does not show:
flagsreadsis_bogonthenis_tor, unlike the order in the issue's example.::ffff:1.1.1.1) is judged as the IPv4 address. Otherwise all of them would be bogons, since::ffff:0:0/96is reserved.Disclosures:
TODO.mdentry keeps the old word, as a dated record of what was built then. The DShield header in a parser test fixture ("Block List") is that publisher's own text.tagliatelleon the two result structs, for snake_case keys, as elsewhere in the repo.TODO.mdno longer says a question about the answer's fields waits for sneak. He answered it on #203 (comment).Model: opus-5-5
PASS: the rename to IP lists, the
flagsobject and the 200 MiB limit meet #233 and the repo's policies.Model: opus-5-5