Connector: CSV / TSV files (csv)
Purpose: open-data time series and registers published as delimited files — FRED fredgraph.csv?id=… (no API
key), ECB Data Portal format=csvdata, NOAA Mauna Loa CO₂, NASA GISTEMP, Cboe VIX history, statistics offices,
sanctions/registers exported as CSV. A new observation, a revised value or a removed row is a list event.
Sensor types: FILE. Config: keyColumn (name or list of names; "@row" = hash of the row), compareColumns
(default: all non-key columns), titleColumn, dateColumn, delimiter (auto: , \t ; |), skipRows
(leading title lines, e.g. GISTEMP), commentPrefix (# lines, e.g. NOAA), maxRows (2000), tail: true (keep the
last rows of a growing series — always set it on time series), encoding, headers.
Normalization: RFC 4180 parser (quotes, escaped quotes, CRLF, BOM) → keyed rows; compareFields = the compared
columns; publishedAt = newest dateColumn value. extra: rows, columns, header, truncated.
Failure handling: HTML instead of CSV → html_not_csv; unknown key/compare column → bad_config with the header
shown; < 2 rows → bad_shape. Limits 64 MB / 60 s.
Known quirks: FRED returns application/csv; values may be . (missing) — kept as text so a revision from .
to a number is a change; Bank of Canada Valet CSV has a metadata preamble → use its JSON endpoint with jsonlist.
Tests: connectors2.test.ts. Verified: 2026-09-08 (16 FRED series, ECB EXR/FM/ICP, NOAA, GISTEMP, VIX).