Per-collector designs
Each collector gets its own design doc here, following the daemon architecture in ../collectors-daemon-design.md (Config trait + State trait + a never-ending jera daemon job, on/off in Settings, green/off in the infra matrix).
osm-cut is the reference implementor (done). WAVE 1 (osm-admin · dcat · pxweb) is adopted — the first three warehouse-sink (Iceberg) daemons, proving the pattern is generic over both sink kinds (S3 bucket AND Iceberg table). The rest are the mechanical follow-on (build order §11).
Status
| collector | family | sink | design |
| osm-cut | geo/OSM | the packed region cut on disk (a–g) | ✅ osm-cut.md |
| osm-admin | geo/OSM | Iceberg | ✅ osm-admin.md — WAVE 1 (admin boundaries) |
| dcat | statistics | Iceberg | ✅ dcat.md — WAVE 1 (DCAT-AP-SE crawl) |
| pxweb | statistics | Iceberg | ✅ pxweb.md — WAVE 1 (PxWeb / JSON-stat2) |
| polisen-events | public-sector | Iceberg | ✅ polisen-events.md — WAVE 2 b6 |
| smhi-weather | environment | Iceberg | ✅ smhi-weather.md — WAVE 2 b6 |
| trafikverket-trainpos | transport | Iceberg | ✅ trafikverket-trainpos.md — WAVE 2 b6 (POST XML) |
| sdmx · usgs · nordpool | statistics/energy | Iceberg | ✅ WAVE 2 b1 (iceberg_daemons.rs) |
| openaq · erddap · wfs | environment/geo | Iceberg | ✅ WAVE 2 b2 |
| energy-charts · rss · entsoe{,-day-ahead,-generation} | energy | Iceberg | ✅ WAVE 2 b3 |
| gtfs-rt-vehicles · gtfs-stops | transport | Iceberg | ✅ WAVE 2 b4 |
| worldbank · gbif · eea-wise-water | statistics/env | Iceberg | ✅ WAVE 2 b5 |
| gribnc · rest · mainframe presets | generic | Iceberg | ⬜ TODO |
The rule
No collector ships without: (a) a Config trait impl (Settings toggle + custom config), (b) a State trait impl (state machine + a Facet for the matrix expand), (c) a design doc here, (d) tests, and — where it does heavy parallel work — (e) an all-cores gatling bencher. "empty is RED" (ragnarok): a collector that produces nothing while enabled is a loud failure, not a silent green.