CoinGecko never sets the price
Two providers can answer the same question. Deciding in advance which one is authoritative is what keeps a merged record coherent.
Norien reads from six external providers, and several of them overlap. Both the market data provider and CoinGecko can tell you what a token costs. Both are, in some sense, correct.
The rule is that CoinGecko never supplies a price. It supplies the logo, the description, the categories, and the supply figures — metadata that changes slowly and that nothing else provides as well. Price, market cap, liquidity, volume, and holder counts come from the market provider, always.
Why fix it in advance
The alternative is a fallback chain: try one, use the other if it fails. That sounds resilient and is actually corrosive. Two providers price the same asset from different venues at different refresh rates, so a fallback silently changes what a number means depending on which service happened to answer. A chart assembled that way has discontinuities nobody can explain.
Fixing ownership per field means a missing provider produces a missing field, which the response reports honestly, rather than a substituted one that looks fine and is not comparable.
{
"data": { "symbol": "USDG", "price": 1.0002, "logo": "https://…" },
"sources": [
{ "provider": "codex", "status": "ok" },
{ "provider": "coingecko", "status": "skipped",
"reason": "no platform mapping for chain 4663" }
],
"degraded": false
}That response is not degraded. CoinGecko was skipped because it has no mapping for this chain, the fields it owns are absent, and the price is exactly as authoritative as it would have been otherwise.