{"generatedAt":"2026-05-24T20:38:04.157Z","summary":{"totalSources":13,"healthy":12,"aging":1,"stale":0,"partial":0,"running":0,"failed":0,"missing":0,"unknown":0},"sources":[{"source":{"id":"fx-country-funding-enrichment","label":"FX country funding enrichment","channel":"funding","tier":"computed","provider":"MarketImpact / UN OCHA Financial Tracking Service","sourceUrl":"https://data.marketimpact.org/fx","cadence":"Weekly","expectedFreshnessHours":192,"syncTypes":["weekly-funding"],"pipelineNames":[],"description":"Weekly enrichment of active FX countries with humanitarian funding, people-in-need, and funding-per-person values."},"status":"aging","statusReason":"Last successful run is older than 192 hours","latestRun":{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":32,"errorMessage":null,"startedAt":"2026-05-11T06:01:22Z","completedAt":"2026-05-11T06:01:22Z","observedAt":"2026-05-11T06:01:22Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":32,"errorMessage":null,"startedAt":"2026-05-11T06:01:22Z","completedAt":"2026-05-11T06:01:22Z","observedAt":"2026-05-11T06:01:22Z"},"recentRuns":[{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":32,"errorMessage":null,"startedAt":"2026-05-11T06:01:22Z","completedAt":"2026-05-11T06:01:22Z","observedAt":"2026-05-11T06:01:22Z"},{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":31,"errorMessage":null,"startedAt":"2026-05-04T06:01:23Z","completedAt":"2026-05-04T06:01:23Z","observedAt":"2026-05-04T06:01:23Z"},{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":28,"errorMessage":null,"startedAt":"2026-04-27T06:01:20Z","completedAt":"2026-04-27T06:01:20Z","observedAt":"2026-04-27T06:01:20Z"},{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":31,"errorMessage":null,"startedAt":"2026-04-20T06:01:28Z","completedAt":"2026-04-20T06:01:28Z","observedAt":"2026-04-20T06:01:28Z"},{"sourceKind":"sync_log","name":"weekly-funding","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":25,"errorMessage":null,"startedAt":"2026-04-13T06:01:40Z","completedAt":"2026-04-13T06:01:40Z","observedAt":"2026-04-13T06:01:40Z"}],"ageHours":326.6},{"source":{"id":"fts-funding-flows","label":"FTS funding flows","channel":"funding","tier":"core","provider":"UN OCHA Financial Tracking Service","sourceUrl":"https://fts.unocha.org","cadence":"Daily","expectedFreshnessHours":36,"syncTypes":["daily","daily-cron","flows"],"pipelineNames":[],"description":"Current-year humanitarian funding flows, donor totals, recipient countries, sectors, and plan allocations."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":12324,"errorMessage":null,"startedAt":"2026-05-24T06:01:18Z","completedAt":"2026-05-24T06:01:18Z","observedAt":"2026-05-24T06:01:18Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":12324,"errorMessage":null,"startedAt":"2026-05-24T06:01:18Z","completedAt":"2026-05-24T06:01:18Z","observedAt":"2026-05-24T06:01:18Z"},"recentRuns":[{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":12324,"errorMessage":null,"startedAt":"2026-05-24T06:01:18Z","completedAt":"2026-05-24T06:01:18Z","observedAt":"2026-05-24T06:01:18Z"},{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":12324,"errorMessage":null,"startedAt":"2026-05-23T06:01:21Z","completedAt":"2026-05-23T06:01:21Z","observedAt":"2026-05-23T06:01:21Z"},{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":12249,"errorMessage":null,"startedAt":"2026-05-22T06:02:16Z","completedAt":"2026-05-22T06:02:16Z","observedAt":"2026-05-22T06:02:16Z"},{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":11987,"errorMessage":null,"startedAt":"2026-05-21T06:01:13Z","completedAt":"2026-05-21T06:01:13Z","observedAt":"2026-05-21T06:01:13Z"},{"sourceKind":"sync_log","name":"daily-cron","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":11941,"errorMessage":null,"startedAt":"2026-05-20T06:01:18Z","completedAt":"2026-05-20T06:01:18Z","observedAt":"2026-05-20T06:01:18Z"}],"ageHours":14.6},{"source":{"id":"fts-reference-data","label":"FTS reference data","channel":"reference","tier":"supporting","provider":"UN OCHA Financial Tracking Service","sourceUrl":"https://api.hpc.tools/v2/public","cadence":"Manual / release-based","expectedFreshnessHours":1080,"syncTypes":["countries","sectors","organizations","plans"],"pipelineNames":[],"description":"Country, organization, sector, and humanitarian plan reference tables used to interpret FTS flows."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"plans","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":916,"errorMessage":null,"startedAt":"2026-05-24T05:30:46Z","completedAt":"2026-05-24T05:30:46Z","observedAt":"2026-05-24T05:30:46Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"plans","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":916,"errorMessage":null,"startedAt":"2026-05-24T05:30:46Z","completedAt":"2026-05-24T05:30:46Z","observedAt":"2026-05-24T05:30:46Z"},"recentRuns":[{"sourceKind":"sync_log","name":"plans","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":916,"errorMessage":null,"startedAt":"2026-05-24T05:30:46Z","completedAt":"2026-05-24T05:30:46Z","observedAt":"2026-05-24T05:30:46Z"},{"sourceKind":"sync_log","name":"organizations","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":14461,"errorMessage":null,"startedAt":"2026-05-24T05:30:41Z","completedAt":"2026-05-24T05:30:41Z","observedAt":"2026-05-24T05:30:41Z"},{"sourceKind":"sync_log","name":"sectors","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":26,"errorMessage":null,"startedAt":"2026-05-24T05:30:31Z","completedAt":"2026-05-24T05:30:31Z","observedAt":"2026-05-24T05:30:31Z"},{"sourceKind":"sync_log","name":"countries","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":251,"errorMessage":null,"startedAt":"2026-05-24T05:30:31Z","completedAt":"2026-05-24T05:30:31Z","observedAt":"2026-05-24T05:30:31Z"},{"sourceKind":"sync_log","name":"plans","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":916,"errorMessage":null,"startedAt":"2026-05-17T05:30:31Z","completedAt":"2026-05-17T05:30:31Z","observedAt":"2026-05-17T05:30:31Z"}],"ageHours":15.1},{"source":{"id":"fx-spreads","label":"FX spread calculations","channel":"fx","tier":"computed","provider":"MarketImpact","sourceUrl":"https://data.marketimpact.org/fx/methodology","cadence":"Twice daily","expectedFreshnessHours":18,"syncTypes":[],"pipelineNames":["spreads"],"description":"Computed purchasing-power gaps, reliability flags, and per-million-dollar loss estimates derived from FX source inputs."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"fx_pipeline","name":"spreads","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:12:29Z","observedAt":"2026-05-24T18:12:29Z"},"lastSuccessfulRun":{"sourceKind":"fx_pipeline","name":"spreads","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:12:29Z","observedAt":"2026-05-24T18:12:29Z"},"recentRuns":[{"sourceKind":"fx_pipeline","name":"spreads","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:12:29Z","observedAt":"2026-05-24T18:12:29Z"}],"ageHours":2.4},{"source":{"id":"hapi-humanitarian-needs","label":"Humanitarian needs","channel":"needs","tier":"core","provider":"HDX HAPI","sourceUrl":"https://hapi.humdata.org","cadence":"Weekly","expectedFreshnessHours":336,"syncTypes":["humanitarian_needs"],"pipelineNames":[],"description":"People in need, people targeted, and related humanitarian planning figures from HDX HAPI."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":554,"errorMessage":null,"startedAt":"2026-05-24T05:30:48Z","completedAt":"2026-05-24T05:30:48Z","observedAt":"2026-05-24T05:30:48Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":554,"errorMessage":null,"startedAt":"2026-05-24T05:30:48Z","completedAt":"2026-05-24T05:30:48Z","observedAt":"2026-05-24T05:30:48Z"},"recentRuns":[{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":554,"errorMessage":null,"startedAt":"2026-05-24T05:30:48Z","completedAt":"2026-05-24T05:30:48Z","observedAt":"2026-05-24T05:30:48Z"},{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":554,"errorMessage":null,"startedAt":"2026-05-17T05:30:32Z","completedAt":"2026-05-17T05:30:32Z","observedAt":"2026-05-17T05:30:32Z"},{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":554,"errorMessage":null,"startedAt":"2026-05-10T05:30:26Z","completedAt":"2026-05-10T05:30:26Z","observedAt":"2026-05-10T05:30:26Z"},{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":554,"errorMessage":null,"startedAt":"2026-05-06T11:05:02Z","completedAt":"2026-05-06T11:05:02Z","observedAt":"2026-05-06T11:05:02Z"},{"sourceKind":"sync_log","name":"humanitarian_needs","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":439,"errorMessage":null,"startedAt":"2025-12-25T14:09:30Z","completedAt":"2025-12-25T14:09:30Z","observedAt":"2025-12-25T14:09:30Z"}],"ageHours":15.1},{"source":{"id":"ipc-food-insecurity","label":"IPC food insecurity","channel":"needs","tier":"supporting","provider":"IPC / HDX","sourceUrl":"https://data.humdata.org/dataset/ipc-country-data","cadence":"Monthly","expectedFreshnessHours":1080,"syncTypes":["ipc_food_insecurity"],"pipelineNames":[],"description":"Acute food insecurity phase counts, including IPC Phase 3+ population estimates where available."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":130,"errorMessage":null,"startedAt":"2026-05-24T04:30:22Z","completedAt":"2026-05-24T04:30:22Z","observedAt":"2026-05-24T04:30:22Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":130,"errorMessage":null,"startedAt":"2026-05-24T04:30:22Z","completedAt":"2026-05-24T04:30:22Z","observedAt":"2026-05-24T04:30:22Z"},"recentRuns":[{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":130,"errorMessage":null,"startedAt":"2026-05-24T04:30:22Z","completedAt":"2026-05-24T04:30:22Z","observedAt":"2026-05-24T04:30:22Z"},{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":130,"errorMessage":null,"startedAt":"2026-05-17T04:30:14Z","completedAt":"2026-05-17T04:30:14Z","observedAt":"2026-05-17T04:30:14Z"},{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":130,"errorMessage":null,"startedAt":"2026-05-10T04:30:31Z","completedAt":"2026-05-10T04:30:31Z","observedAt":"2026-05-10T04:30:31Z"},{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":130,"errorMessage":null,"startedAt":"2026-05-09T10:21:49Z","completedAt":"2026-05-09T10:21:49Z","observedAt":"2026-05-09T10:21:49Z"},{"sourceKind":"sync_log","name":"ipc_food_insecurity","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":130,"errorMessage":null,"startedAt":"2025-12-31T13:18:59Z","completedAt":"2025-12-31T13:18:59Z","observedAt":"2025-12-31T13:18:59Z"}],"ageHours":16.1},{"source":{"id":"jiaf-severity","label":"JIAF severity","channel":"needs","tier":"supporting","provider":"JIAF / humanitarian needs analysis","sourceUrl":"https://www.jiaf.info","cadence":"Monthly","expectedFreshnessHours":1440,"syncTypes":["jiaf_severity"],"pipelineNames":[],"description":"Humanitarian severity classifications used to rank and compare country-level need."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":335,"errorMessage":null,"startedAt":"2026-05-24T04:30:26Z","completedAt":"2026-05-24T04:30:26Z","observedAt":"2026-05-24T04:30:26Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":335,"errorMessage":null,"startedAt":"2026-05-24T04:30:26Z","completedAt":"2026-05-24T04:30:26Z","observedAt":"2026-05-24T04:30:26Z"},"recentRuns":[{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":335,"errorMessage":null,"startedAt":"2026-05-24T04:30:26Z","completedAt":"2026-05-24T04:30:26Z","observedAt":"2026-05-24T04:30:26Z"},{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":335,"errorMessage":null,"startedAt":"2026-05-17T04:30:18Z","completedAt":"2026-05-17T04:30:18Z","observedAt":"2026-05-17T04:30:18Z"},{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":335,"errorMessage":null,"startedAt":"2026-05-10T04:30:34Z","completedAt":"2026-05-10T04:30:34Z","observedAt":"2026-05-10T04:30:34Z"},{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":335,"errorMessage":null,"startedAt":"2026-05-09T10:21:53Z","completedAt":"2026-05-09T10:21:53Z","observedAt":"2026-05-09T10:21:53Z"},{"sourceKind":"sync_log","name":"jiaf_severity","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":930,"errorMessage":null,"startedAt":"2025-12-31T13:40:16Z","completedAt":"2025-12-31T13:40:16Z","observedAt":"2025-12-31T13:40:16Z"}],"ageHours":16.1},{"source":{"id":"fx-spot","label":"Spot FX rates","channel":"fx","tier":"core","provider":"ExchangeRate-API and market spot providers","sourceUrl":"https://www.exchangerate-api.com","cadence":"Twice daily","expectedFreshnessHours":18,"syncTypes":[],"pipelineNames":["spot_fx"],"description":"Market spot rates used when stablecoin market depth is unavailable or unreliable for a country."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"fx_pipeline","name":"spot_fx","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:02:13Z","observedAt":"2026-05-24T18:02:13Z"},"lastSuccessfulRun":{"sourceKind":"fx_pipeline","name":"spot_fx","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:02:13Z","observedAt":"2026-05-24T18:02:13Z"},"recentRuns":[{"sourceKind":"fx_pipeline","name":"spot_fx","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:02:13Z","observedAt":"2026-05-24T18:02:13Z"}],"ageHours":2.6},{"source":{"id":"fx-stablecoin-p2p","label":"Stablecoin P2P rates","channel":"fx","tier":"core","provider":"Binance and Bybit P2P market data","sourceUrl":"https://p2p.binance.com","cadence":"Twice daily","expectedFreshnessHours":18,"syncTypes":[],"pipelineNames":["usdt_p2p"],"description":"USDT/USDC peer-to-peer quotes used as a proxy for parallel-market purchasing power where market depth is sufficient."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"fx_pipeline","name":"usdt_p2p","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":64,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:07:52Z","observedAt":"2026-05-24T18:07:52Z"},"lastSuccessfulRun":{"sourceKind":"fx_pipeline","name":"usdt_p2p","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":64,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:07:52Z","observedAt":"2026-05-24T18:07:52Z"},"recentRuns":[{"sourceKind":"fx_pipeline","name":"usdt_p2p","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":64,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:07:52Z","observedAt":"2026-05-24T18:07:52Z"}],"ageHours":2.5},{"source":{"id":"unhcr-refugee-population","label":"UNHCR refugee population","channel":"needs","tier":"supporting","provider":"UNHCR Refugee Data Finder","sourceUrl":"https://www.unhcr.org/refugee-statistics","cadence":"Monthly","expectedFreshnessHours":1080,"syncTypes":["unhcr_refugee_population"],"pipelineNames":[],"description":"Refugee and asylum-seeker population data used as supplementary context for country severity."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":354,"errorMessage":null,"startedAt":"2026-05-24T04:30:13Z","completedAt":"2026-05-24T04:30:13Z","observedAt":"2026-05-24T04:30:13Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":354,"errorMessage":null,"startedAt":"2026-05-24T04:30:13Z","completedAt":"2026-05-24T04:30:13Z","observedAt":"2026-05-24T04:30:13Z"},"recentRuns":[{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":354,"errorMessage":null,"startedAt":"2026-05-24T04:30:13Z","completedAt":"2026-05-24T04:30:13Z","observedAt":"2026-05-24T04:30:13Z"},{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":354,"errorMessage":null,"startedAt":"2026-05-17T04:30:05Z","completedAt":"2026-05-17T04:30:05Z","observedAt":"2026-05-17T04:30:05Z"},{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":354,"errorMessage":null,"startedAt":"2026-05-10T04:30:21Z","completedAt":"2026-05-10T04:30:21Z","observedAt":"2026-05-10T04:30:21Z"},{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":354,"errorMessage":null,"startedAt":"2026-05-09T10:21:39Z","completedAt":"2026-05-09T10:21:39Z","observedAt":"2026-05-09T10:21:39Z"},{"sourceKind":"sync_log","name":"unhcr_refugee_population","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":354,"errorMessage":null,"startedAt":"2025-12-30T15:04:11Z","completedAt":"2025-12-30T15:04:11Z","observedAt":"2025-12-30T15:04:11Z"}],"ageHours":16.1},{"source":{"id":"unicef-child-welfare","label":"UNICEF child welfare","channel":"needs","tier":"supporting","provider":"UNICEF Data Warehouse","sourceUrl":"https://data.unicef.org","cadence":"Monthly","expectedFreshnessHours":1440,"syncTypes":["unicef_child_welfare"],"pipelineNames":[],"description":"Child welfare indicators used as contextual severity signals in humanitarian country views."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":216,"errorMessage":null,"startedAt":"2026-05-24T04:30:16Z","completedAt":"2026-05-24T04:30:16Z","observedAt":"2026-05-24T04:30:16Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":216,"errorMessage":null,"startedAt":"2026-05-24T04:30:16Z","completedAt":"2026-05-24T04:30:16Z","observedAt":"2026-05-24T04:30:16Z"},"recentRuns":[{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":216,"errorMessage":null,"startedAt":"2026-05-24T04:30:16Z","completedAt":"2026-05-24T04:30:16Z","observedAt":"2026-05-24T04:30:16Z"},{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":216,"errorMessage":null,"startedAt":"2026-05-17T04:30:08Z","completedAt":"2026-05-17T04:30:08Z","observedAt":"2026-05-17T04:30:08Z"},{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":216,"errorMessage":null,"startedAt":"2026-05-10T04:30:24Z","completedAt":"2026-05-10T04:30:24Z","observedAt":"2026-05-10T04:30:24Z"},{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":2026,"recordsProcessed":216,"errorMessage":null,"startedAt":"2026-05-09T10:21:42Z","completedAt":"2026-05-09T10:21:42Z","observedAt":"2026-05-09T10:21:42Z"},{"sourceKind":"sync_log","name":"unicef_child_welfare","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":718,"errorMessage":null,"startedAt":"2025-12-31T13:23:39Z","completedAt":"2025-12-31T13:23:39Z","observedAt":"2025-12-31T13:23:39Z"}],"ageHours":16.1},{"source":{"id":"fx-unore","label":"UNORE exchange rates","channel":"fx","tier":"core","provider":"United Nations Treasury","sourceUrl":"https://treasury.un.org/operationalrates/OperationalRates.php","cadence":"Twice daily","expectedFreshnessHours":18,"syncTypes":[],"pipelineNames":["unore"],"description":"Official UN operational rates of exchange used as the baseline for humanitarian FX comparisons."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"fx_pipeline","name":"unore","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:00:21Z","observedAt":"2026-05-24T18:00:21Z"},"lastSuccessfulRun":{"sourceKind":"fx_pipeline","name":"unore","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:00:21Z","observedAt":"2026-05-24T18:00:21Z"},"recentRuns":[{"sourceKind":"fx_pipeline","name":"unore","status":"success","normalizedStatus":"success","year":null,"recordsProcessed":32,"errorMessage":null,"startedAt":null,"completedAt":"2026-05-24T18:00:21Z","observedAt":"2026-05-24T18:00:21Z"}],"ageHours":2.6},{"source":{"id":"world-bank-development","label":"World Bank development indicators","channel":"reference","tier":"supporting","provider":"World Bank API","sourceUrl":"https://datahelpdesk.worldbank.org/knowledgebase/articles/898599-api-indicator-queries","cadence":"Annual","expectedFreshnessHours":9600,"syncTypes":["wb_indicators","worldbank_countries"],"pipelineNames":[],"description":"Population, GDP, ODA, income level, and regional metadata used to normalize funding comparisons."},"status":"healthy","statusReason":"Latest ingestion run completed within the expected freshness window","latestRun":{"sourceKind":"sync_log","name":"wb_indicators","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":3225,"errorMessage":null,"startedAt":"2026-01-03T12:55:50Z","completedAt":"2026-01-03T12:55:50Z","observedAt":"2026-01-03T12:55:50Z"},"lastSuccessfulRun":{"sourceKind":"sync_log","name":"wb_indicators","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":3225,"errorMessage":null,"startedAt":"2026-01-03T12:55:50Z","completedAt":"2026-01-03T12:55:50Z","observedAt":"2026-01-03T12:55:50Z"},"recentRuns":[{"sourceKind":"sync_log","name":"wb_indicators","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":3225,"errorMessage":null,"startedAt":"2026-01-03T12:55:50Z","completedAt":"2026-01-03T12:55:50Z","observedAt":"2026-01-03T12:55:50Z"},{"sourceKind":"sync_log","name":"wb_indicators","status":"running","normalizedStatus":"running","year":null,"recordsProcessed":null,"errorMessage":null,"startedAt":"2026-01-03T12:51:57Z","completedAt":null,"observedAt":"2026-01-03T12:51:57Z"},{"sourceKind":"sync_log","name":"worldbank_countries","status":"completed","normalizedStatus":"success","year":null,"recordsProcessed":351,"errorMessage":null,"startedAt":"2026-01-02T13:35:10Z","completedAt":"2026-01-02T13:35:10Z","observedAt":"2026-01-02T13:35:10Z"},{"sourceKind":"sync_log","name":"worldbank_countries","status":"running","normalizedStatus":"running","year":null,"recordsProcessed":null,"errorMessage":null,"startedAt":"2026-01-02T13:34:45Z","completedAt":null,"observedAt":"2026-01-02T13:34:45Z"}],"ageHours":3391.7}],"warnings":[]}