| 1 | # Platform GeoIP: measured facts (plan 1, task 1) |
| 2 | |
| 3 | Measured 2026-10-06 on DOCS-T1 against `dbip-city-lite-2026-10.mmdb`, |
| 4 | downloaded from `https://download.db-ip.com/free/dbip-city-lite-2026-10.mmdb.gz` |
| 5 | with `maxminddb-golang` v1.13.1. |
| 6 | |
| 7 | | Fact | Value | |
| 8 | |---|---| |
| 9 | | `database_type` | `DBIP-City-Lite` | |
| 10 | | `build_epoch` | 2026-10-01 01:41:21 UTC | |
| 11 | | File size (uncompressed) | 126,998,165 bytes (121 MiB) | |
| 12 | | `node_count` / record size / IP version | 14,297,794 / 28 / 6 | |
| 13 | | `Verify()` | 5.4 s; peak anonymous RSS 47 MiB, file-backed RSS 124 MiB; 3.4 GiB allocated in total (GC churn, not resident) | |
| 14 | | Lookup (decode country, subdivisions, location) | ~1.4 µs each, single goroutine (1M random IPv4 lookups in 1.44 s) | |
| 15 | | Subdivision ISO codes | **absent**. `subdivisions[0]` carries names only (e.g. `"California"`, `"Leinster"`) | |
| 16 | | `location.accuracy_radius` | absent | |
| 17 | |
| 18 | Country probe (spec §4.1 step 4): |
| 19 | |
| 20 | | Address | Country | Subdivision name | Location | |
| 21 | |---|---|---|---| |
| 22 | | 8.8.8.8 | US | California | 37.42, -122.08 | |
| 23 | | 1.1.1.1 | AU | New South Wales | -33.87, 151.21 | |
| 24 | | 9.9.9.9 | US | California | 37.88, -122.27 | |
| 25 | | 208.67.222.222 | US | California | 37.41, -121.95 | |
| 26 | | 2001:4860:4860::8888 | CA | Quebec | 45.50, -73.57 | |
| 27 | |
| 28 | All five resolve, so the "at least three of five" rule passes with margin. |
| 29 | |
| 30 | GeoLite2 City was not measured: it needs a MaxMind account. The repo's |
| 31 | MaxMind test fixtures (`internal/geo/testdata/GeoIP2-City-Test.mmdb`) carry |
| 32 | subdivision ISO codes, which is the shape GeoLite2 City shares. |
| 33 | |
| 34 | ## The repo's test fixtures (`internal/geo/testdata`) |
| 35 | |
| 36 | None of them contain the five production probe addresses, so publish-path |
| 37 | tests must override the probe list (a package variable). Addresses that do |
| 38 | resolve: |
| 39 | |
| 40 | | Address | City-Test country / subdivision ISO / location | Country-Test | ipv4-24 | |
| 41 | |---|---|---|---| |
| 42 | | 81.2.69.142 | GB / ENG / 51.51, -0.09 | GB | no country | |
| 43 | | 216.160.83.56 | US / WA / 47.25, -122.31 | US | no country | |
| 44 | | 2.125.160.216 | GB / ENG / 51.75, -1.25 | GB | no country | |
| 45 | | 89.160.20.112 | SE / E / 58.42, 15.62 | SE | no country | |
| 46 | | 2001:218::1 | JP / (none) / 35.69, 139.75 | JP | IPv6 lookup error | |
| 47 | | 67.43.156.1 | BT / (none) / 27.50, 90.50 | BT | no country | |
| 48 | |
| 49 | Types: `GeoIP2-City` (1,547 nodes), `GeoIP2-Country` (1,704 nodes), `Test` |
| 50 | (163 nodes, IPv4 only, no country data: the "refuse a database with no |
| 51 | country data" case). All three build_epoch 2026-02-04. |
| 52 | |
| 53 | ## Outstanding |
| 54 | |
| 55 | - **GeoLite2 City has not been measured** (spec §17, Astra plan R1-22). |
| 56 | - Downloading it needs a MaxMind account and licence key, which this |
| 57 | session does not have. |
| 58 | - Before the first GeoLite2 publish (or plan 2's feed), measure its size, |
| 59 | `Verify` memory, subdivision ISO codes, and the five probe addresses. |
| 60 | Record them here. |
| 61 | |