Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/korp-collectors

CLAUDE.md

RULE: Never add Co-Authored-By or any AI attribution to commits. Ever.

korp-collectors

The standalone LEAF of korp's open-data collector layer — one object-safe Collector trait + per-access-METHOD collectors (DCAT-AP-SE, PxWeb/JSON-stat2, ENTSO-E, generic REST/JSON, Trafikverket, OSM) parsing pure-Rust → Arrow, an Iceberg BatchSink (via skade), and the RegionSource fetch seam.

Why it is a leaf

It depends on neither korp nor facett, so BOTH korp and facett-demo can depend on it. That breaks the facett ⇄ korp dependency cycle: facett never depends on korp; both consume this leaf, which depends on neither.

Keep it a leaf. Allowed deps: arrow-array/arrow-schema 58, parquet 58, anyhow, async-trait, reqwest (rustls), serde/serde_json, governor, bytes, tokio; feature-gated: osm-katana (osm), skade (skade-sink), nornir-testmatrix (testmatrix). No facett-*, no korp dep — ever.

Features

parsers (default) · osm (osm-katana + RegionSource) · skade-sink (Iceberg runner) · testmatrix (nornir functional-status rows; off by default).

Laws

Direction taxonomy

Every Collector is Direction::Source; the BatchSink is Direction::Sink. This axis is orthogonal to SourceKind (the transport/format family).