ADR 003 — Source list revisions after live verification¶
Status: Accepted · Date: 2026-08-08 · Deviates from: spec §5.1, §13
Evidence: docs/00-feasibility.md
Context¶
Spec §5.1 and the research reports name endpoints, licences and access methods for sixteen sources. Several were carried forward from documentation rather than tested, and all three research reports warn that IMF, ADB and World Bank Data360 were mid-migration at the time of writing. The S0 spike tested every one of them live on 2026-08-08.
Decisions¶
1. Drop ADB KIDB from Phase 1. Spec §5.1 row 9 specifies
kidb.adb.org/api/v3/sdmx/data/... under CC BY 3.0 IGO. Every path under /api/ returns 404 with
an identical 30,877-byte SPA shell; eight variants were tried. sdmx.adb.org does not resolve. The
ADB Data Library CKAN endpoint sits behind a Cloudflare bot wall (403). The landing page is a
JavaScript application with no server-rendered script references to mine for the real endpoint.
There is no reachable ADB data API. Removing it is not a scope cut — the capability no longer exists.
2. Promote UNESCO UIS from "Phase 1.5" to Phase 1. Spec §5.1 row 11 says "verify endpoints at
build time" and defers it. api.uis.unesco.org/api/public/data/indicators is live and returns
20,034 Nepal records against a 5,063-indicator catalogue. Given ADR 002 removes WHO, UIS is
the strongest available replacement for education and social indicators, and it is the single
richest Nepal source measured after DHS.
3. FAOSTAT is bulk-first, not API-first. Spec §5.1 row 4 offers "bulk ZIP + FENIX API".
FENIX (fenixservices.fao.org/faostat/api/v1/...) returns HTTP 521 consistently — the origin is
down, not rate-limiting us. The bulk catalogue at bulks-faostat.fao.org is healthy and lists 69
datasets. Build the connector against bulk only; treat FENIX as an optional accelerator if it
returns. Note the connector must map Nepal to FAOSTAT's numeric code 149, not an ISO code.
4. Ingest at global scope from day one. This reverses a decision made before measurement. The
concern was disk: restrict ingestion to the comparator set, budget the database at ≤4 GB. Measured,
the full WB WDI pull (411 Nepal-covered series × 14 geos × 1960–2025, 198,969 observations) is
1.2 MB parquet / 2.6 MB DuckDB. Global scope for WB is ~40 MB; all Phase-1 sources together
~200 MB. The restriction was protecting a budget that does not exist, while costing the ability to
answer "compare Nepal with any country" without a re-ingest. Go global wherever a source supports
it. The spec's [FLEX] MotherDuck 10 GB threshold (§15) is off by two orders of magnitude and
should be restated when that section is next revised.
5. Keep the ≥1,500-series Phase-1 target, change where it comes from. Spec §13 implies World Bank is the backbone. Only 411 of 1,498 WDI series carry a Nepal value (27.4%). The target remains reachable via UN SDG (523 Nepal series), DHS (3,555 indicators across six surveys, 1996–2022), ILOSTAT (1,956-indicator catalogue) and UIS. Sequence those earlier than §17 implies.
Revised Phase-1 connector list¶
worldbank, owid, unsdg, faostat (bulk), ilostat, imf, dhs, hdx, uis
— removing adb (ADR 003) and who (ADR 002), adding uis.
Also confirmed live¶
IMF SDMX 3.0 works and the legacy dataservices.imf.org is genuinely dead, as the research warned.
HDX HAPI requires a base64 app_identifier and works once supplied. NRB forex behaves exactly as
documented, including the mandatory per_page. WB Data360 responds despite its beta status — keep
it as the §15 flex point rather than promoting it.
Known risk carried forward¶
Nepal's own portals are in worse shape than §5.1 rows 13–15 assume. data.nsonepal.gov.np refuses
connections on 443, serves only over plain HTTP, and is not CKAN (/api/3/action/* → 404).
censusnepal.cbs.gov.np presents a certificate chain that does not verify. Phase-3 extraction will
need explicit trust handling and plain-HTTP fetching behind the SSRF allowlist (§12) — budget more
time than the spec implies.