Skip to main content
Pharos
PHAROSlive stablecoin signals

Pricing Pipeline Changelog

Full version history of Pricing Pipeline methodology decisions, from v1.0 to v5.01.

Latest Version

v5.01Apr 29, 2026

MYR and KRW peg-currency support

Added MYR (Malaysian Ringgit) and KRW (Korean Won) to the supported peg-currency set so MYRC and KRWQ can be tracked through the existing Frankfurter / fawazahmed0 / ExchangeRate-API FX lane and the CoinGecko native-peg corroboration lane.

Impact Snapshot

  • FX cron requests MYR and KRW from Frankfurter and validates them against per-peg bounds
  • Native-peg implied-price lane corroborates MYR / KRW depegs via direct CoinGecko myr / krw quotes
  • Stablecoin charts reconciliation, price-validation classifyPegClass, and FX cadence metadata cover the new pegs
v5.01Apr 29, 2026

MYR and KRW peg-currency support

Added MYR (Malaysian Ringgit) and KRW (Korean Won) to the supported peg-currency set so MYRC and KRWQ can be tracked through the existing Frankfurter / fawazahmed0 / ExchangeRate-API FX lane and the CoinGecko native-peg corroboration lane.

  • FX cron requests MYR and KRW from Frankfurter and validates them against per-peg bounds
  • Native-peg implied-price lane corroborates MYR / KRW depegs via direct CoinGecko myr / krw quotes
  • Stablecoin charts reconciliation, price-validation classifyPegClass, and FX cadence metadata cover the new pegs
Details

Impact Notes

  • FX cron requests MYR and KRW from Frankfurter and validates them against per-peg bounds
  • Native-peg implied-price lane corroborates MYR / KRW depegs via direct CoinGecko myr / krw quotes
  • Stablecoin charts reconciliation, price-validation classifyPegClass, and FX cadence metadata cover the new pegs
0 commits
    v5.0Apr 17, 2026

    Pricing pipeline comprehensive hardening

    Closed consistency gaps in pool-challenge replacement, tightened breaker discipline across all pricing fetchers, promoted Bitstamp/Coinbase/Curve to upstream-timestamped freshness, and exposed provider diagnostics on the operator status surface.

    • Pool challenge replacement now updates allPrices so severe-downside corroboration carry-through uses the replacement source
    • curve-oracle now enforces a 5-minute on-chain staleness guard using block timestamp and has its own circuit breaker
    • curve-onchain and Bitstamp / Coinbase now publish upstream-observed freshness instead of local-fetch
    • NAV tokens are no longer subject to pool-challenge downgrade / replacement
    Details

    Impact Notes

    • Pool challenge replacement now updates allPrices so severe-downside corroboration carry-through uses the replacement source
    • curve-oracle now enforces a 5-minute on-chain staleness guard using block timestamp and has its own circuit breaker
    • curve-onchain and Bitstamp / Coinbase now publish upstream-observed freshness instead of local-fetch
    • NAV tokens are no longer subject to pool-challenge downgrade / replacement
    • Cluster tiebreak now prefers hard-tier clusters over equal-weight soft-tier clusters before spread / peg proximity
    • Two-source clusters composed only of list-style aggregators (coingecko, defillama, defillama-list) are now downgraded to single-source regardless of which two combine, closing the CG+defillama-detail tautology
    • Replay cache enforces per-source max trusted age in addition to the composite 6-hour cap
    • DefiLlama /coins contract-price fallback and DexScreener dex-liquidity / dex-discovery fallbacks now gate on and record against their own circuit breakers
    • A lone promoted DEX protocol is admitted only when no non-DEX source exists, or when a hard market/oracle/protocol source agrees within threshold; two or more promoted DEX protocols are admitted as candidate sources before consensus determines agreement
    • Binance short-circuits to the secondary host on HTTP 5xx / 429 instead of retrying the first host
    • RedStone solo-retry is bounded to 5 requests per run and spaced to respect Worker connection budget
    • GT-probe evidence rejection downgrades the pre-GT primary to low-confidence when divergence was significant
    • Provider diagnostics and GT-probe statistics are now surfaced on /api/status for operator visibility
    0 commits
      v4.38Apr 15, 2026

      Corroborated severe-depeg pool challenge protection

      Pool challenge and temporal-jump validation can still downgrade or scrutinize a selected severe-depeg primary price, but they no longer replace or reject that price when multiple live candidate sources corroborate severe downside and at least one is depeg-authoritative.

      • Near-peg or stale DEX liquidity can no longer overwrite a severe depeg already corroborated by independent live candidates such as CoinGecko, DefiLlama-list, and Pyth
      • The same severe-downside candidate evidence satisfies the temporal-jump guard when the previous trusted price was near peg
      • The pool challenge remains active for weak or uncorroborated soft-source prices, and still replaces prices when independent DEX protocol medians are the only corroborating disagreement
      • USR now preserves the market price near the live CoinGecko/DefiLlama/Pyth severe-depeg level while marking the result low-confidence when DEX pools disagree
      Details

      Impact Notes

      • Near-peg or stale DEX liquidity can no longer overwrite a severe depeg already corroborated by independent live candidates such as CoinGecko, DefiLlama-list, and Pyth
      • The same severe-downside candidate evidence satisfies the temporal-jump guard when the previous trusted price was near peg
      • The pool challenge remains active for weak or uncorroborated soft-source prices, and still replaces prices when independent DEX protocol medians are the only corroborating disagreement
      • USR now preserves the market price near the live CoinGecko/DefiLlama/Pyth severe-depeg level while marking the result low-confidence when DEX pools disagree
      0 commits
        v4.37Apr 15, 2026

        Severe-depeg corroboration continuity through validation

        Primary severe-downside corroboration evidence is now preserved through the later prevalidation and post-enrichment validation passes when the selected primary price remains unchanged.

        • Low-confidence severe depeg prices can stay published when multiple live candidate sources independently confirm the downside even if they do not form a tight high-confidence cluster
        • The severe-downside guardrail is unchanged for genuinely single-source prices because candidate evidence is reused only when the current asset price, source, and confidence still match the primary result
        • Assets such as USR no longer flap to `N/A` after primary pricing accepted a corroborated severe depeg and a later generic validation pass lost the candidate-price evidence
        Details

        Impact Notes

        • Low-confidence severe depeg prices can stay published when multiple live candidate sources independently confirm the downside even if they do not form a tight high-confidence cluster
        • The severe-downside guardrail is unchanged for genuinely single-source prices because candidate evidence is reused only when the current asset price, source, and confidence still match the primary result
        • Assets such as USR no longer flap to `N/A` after primary pricing accepted a corroborated severe depeg and a later generic validation pass lost the candidate-price evidence
        0 commits
          v4.36Apr 15, 2026

          Blocked Binance host accounting

          Binance all-host 403/451 blocks from Worker egress are now treated as no-contribution provider blocks rather than source outages, while diagnostics keep the blocked endpoints visible.

          • When every attempted Binance host returns 403 or 451, the run records diagnostics but closes the source-wide breaker instead of escalating a persistent false outage
          • Binance contributes zero prices in that state, so consensus continues through Kraken, Bitstamp, Coinbase, Pyth, RedStone, Curve, DEX, CoinGecko, and DefiLlama inputs
          • Transport errors, server errors, malformed responses, or successful responses with zero tracked matches still follow the normal failure diagnostics path
          Details

          Impact Notes

          • When every attempted Binance host returns 403 or 451, the run records diagnostics but closes the source-wide breaker instead of escalating a persistent false outage
          • Binance contributes zero prices in that state, so consensus continues through Kraken, Bitstamp, Coinbase, Pyth, RedStone, Curve, DEX, CoinGecko, and DefiLlama inputs
          • Transport errors, server errors, malformed responses, or successful responses with zero tracked matches still follow the normal failure diagnostics path
          0 commits
            v4.35Apr 15, 2026

            No-candidate Jupiter breaker recovery

            Jupiter no-candidate runs now close stale-open breaker state without making an external health probe, reflecting that no eligible Solana fallback work remains after authoritative gating.

            • If authoritative pricing removes all Jupiter fallback candidates, the stale `jupiter-prices` breaker can recover without spending a provider request
            • The change prevents irrelevant provider-edge blocks from keeping the public circuit list open when Jupiter is not part of the current pricing path
            • Future eligible Jupiter fallback candidates still go through the normal circuit breaker and provider diagnostics path
            Details

            Impact Notes

            • If authoritative pricing removes all Jupiter fallback candidates, the stale `jupiter-prices` breaker can recover without spending a provider request
            • The change prevents irrelevant provider-edge blocks from keeping the public circuit list open when Jupiter is not part of the current pricing path
            • Future eligible Jupiter fallback candidates still go through the normal circuit breaker and provider diagnostics path
            0 commits
              v4.34Apr 15, 2026

              Binance host failover for Worker egress

              Added a Binance ticker host failover after production Worker diagnostics showed the market-data mirror returning HTTP 403 while local audits still saw healthy Binance USD pairs.

              • Binance pricing now tries `data-api.binance.vision` first and falls back to `api.binance.com` before recording the source as failed
              • Provider diagnostics preserve each attempted Binance endpoint so operators can see which host succeeded or failed
              • The change keeps the same tracked `USDTUSD` and `USDCUSD` market mappings and does not alter consensus weighting
              Details

              Impact Notes

              • Binance pricing now tries `data-api.binance.vision` first and falls back to `api.binance.com` before recording the source as failed
              • Provider diagnostics preserve each attempted Binance endpoint so operators can see which host succeeded or failed
              • The change keeps the same tracked `USDTUSD` and `USDCUSD` market mappings and does not alter consensus weighting
              0 commits
                v4.33Apr 15, 2026

                Jupiter official gateway fallback

                Moved Jupiter fallback probes from the Lite gateway to the official Price API V3 gateway after Worker egress repeatedly received Cloudflare 403 block pages from the Lite host.

                • Jupiter fallback and health probes now use `https://api.jup.ag/price/v3` instead of the Lite gateway
                • The source-level circuit can recover through the same official V3 response shape already used by the fallback parser
                • The fallback remains best-effort, liquidity-gated, and downstream of authoritative protocol-backed prices
                Details

                Impact Notes

                • Jupiter fallback and health probes now use `https://api.jup.ag/price/v3` instead of the Lite gateway
                • The source-level circuit can recover through the same official V3 response shape already used by the fallback parser
                • The fallback remains best-effort, liquidity-gated, and downstream of authoritative protocol-backed prices
                0 commits
                  v4.32Apr 14, 2026

                  Provider diagnostics and authoritative fallback gating

                  Pricing provider attempts now emit durable diagnostics, and authoritative live overrides are applied before fallback enrichment so known redeemable wrappers do not poison fallback-source circuit breakers.

                  • `sync-stablecoins` cron metadata now records Binance and Jupiter attempt status, endpoint, candidate counts, response counts, matched counts, and sanitized snippets for non-OK responses
                  • Protocol-backed live overrides are pre-applied before fallback enrichment and re-applied after GeckoTerminal probing, preserving final authoritative price semantics while keeping inherited-price assets out of unnecessary fallback probes
                  • The Jupiter breaker can run a bounded health probe when no fallback candidates remain, allowing a previously open breaker to recover once the provider is reachable instead of staying stale-open indefinitely
                  Details

                  Impact Notes

                  • `sync-stablecoins` cron metadata now records Binance and Jupiter attempt status, endpoint, candidate counts, response counts, matched counts, and sanitized snippets for non-OK responses
                  • Protocol-backed live overrides are pre-applied before fallback enrichment and re-applied after GeckoTerminal probing, preserving final authoritative price semantics while keeping inherited-price assets out of unnecessary fallback probes
                  • The Jupiter breaker can run a bounded health probe when no fallback candidates remain, allowing a previously open breaker to recover once the provider is reachable instead of staying stale-open indefinitely
                  0 commits
                    v4.31Apr 13, 2026

                    Curated-contract price fallback and USDnr M0 inheritance

                    DefiLlama contract-price fallback now starts from curated tracked deployments when an upstream stablecoin row is addressless, and USDnr joins the M0 tracked-parent price inheritance path.

                    • Addressless DefiLlama stablecoin rows can now recover prices through exact curated `contracts` metadata instead of requiring the upstream row to carry its own `address` field
                    • `ctusd-citrea` can publish the fresh DefiLlama `citrea:<contract>` quote surfaced by the coins API without relying on symbol search or stale CoinGecko rows
                    • `usdnr-nerona` now inherits tracked `wm-m0` live pricing and historical replay through the existing authoritative `protocol-redeem` lane used by other M0 extension assets
                    Details

                    Impact Notes

                    • Addressless DefiLlama stablecoin rows can now recover prices through exact curated `contracts` metadata instead of requiring the upstream row to carry its own `address` field
                    • `ctusd-citrea` can publish the fresh DefiLlama `citrea:<contract>` quote surfaced by the coins API without relying on symbol search or stale CoinGecko rows
                    • `usdnr-nerona` now inherits tracked `wm-m0` live pricing and historical replay through the existing authoritative `protocol-redeem` lane used by other M0 extension assets
                    0 commits
                      v4.3Apr 11, 2026

                      CoinGecko simple-price upstream freshness gate

                      CoinGecko simple-price inputs now use the provider's upstream observation timestamp when available and drop stale rows instead of stamping them as fresh local fetches.

                      • Primary pricing requests `last_updated_at` from CoinGecko `/simple/price` and records it as upstream freshness when present
                      • CoinGecko simple-price rows older than the source trust window are excluded from primary consensus rather than being treated as current
                      • Downstream consumers such as PegScore and DEWS now see missing, lower-confidence, or non-CoinGecko corroborated inputs instead of replaying stale CoinGecko marks as fresh
                      Details

                      Impact Notes

                      • Primary pricing requests `last_updated_at` from CoinGecko `/simple/price` and records it as upstream freshness when present
                      • CoinGecko simple-price rows older than the source trust window are excluded from primary consensus rather than being treated as current
                      • Downstream consumers such as PegScore and DEWS now see missing, lower-confidence, or non-CoinGecko corroborated inputs instead of replaying stale CoinGecko marks as fresh
                      0 commits
                        v4.2Apr 10, 2026

                        Inherited wM pricing for M0 extension assets

                        Added authoritative tracked-base inheritance for M0 extension assets whose exact child-token market coverage is absent or too thin, so price publication follows the executable parent rail instead of staying missing or trusting weak child-market prints.

                        • Live pricing now publishes `usdk-kast` and `xo-exodus` from the authoritative `protocol-redeem` lane by inheriting tracked `wm-m0` pricing when that parent rail is available
                        • Historical depeg backfills for those assets now replay the tracked `wm-m0` market series instead of relying on missing or thin child-market history
                        • This extends the same tracked-base inheritance pattern already used for `usdai-usd-ai -> pyusd-paypal`, keeping wrapper-style M0 extension assets aligned with their executable parent value
                        Details

                        Impact Notes

                        • Live pricing now publishes `usdk-kast` and `xo-exodus` from the authoritative `protocol-redeem` lane by inheriting tracked `wm-m0` pricing when that parent rail is available
                        • Historical depeg backfills for those assets now replay the tracked `wm-m0` market series instead of relying on missing or thin child-market history
                        • This extends the same tracked-base inheritance pattern already used for `usdai-usd-ai -> pyusd-paypal`, keeping wrapper-style M0 extension assets aligned with their executable parent value
                        0 commits
                          v4.1Apr 8, 2026

                          Split DexScreener exact-vs-search breaker accounting

                          The DexScreener fallback now records exact token-address lookups and last-resort symbol search under separate circuit breakers, so a flaky search endpoint cannot suppress otherwise healthy exact-address recovery.

                          • `dexscreener-prices` now reflects only `/tokens/v1/{chainId}/{address}` availability in the late-stage stablecoin pricing fallback
                          • The symbol-search recovery path now records independently under `dexscreener-search`, which keeps search-specific failures visible without poisoning exact-address availability
                          • Public-health grouping excludes the search-only breaker so a best-effort addressless fallback issue does not count as a separate top-level availability circuit group
                          Details

                          Impact Notes

                          • `dexscreener-prices` now reflects only `/tokens/v1/{chainId}/{address}` availability in the late-stage stablecoin pricing fallback
                          • The symbol-search recovery path now records independently under `dexscreener-search`, which keeps search-specific failures visible without poisoning exact-address availability
                          • Public-health grouping excludes the search-only breaker so a best-effort addressless fallback issue does not count as a separate top-level availability circuit group
                          0 commits
                            v4.0Apr 8, 2026

                            DexScreener request-budget walk-through for skipped fallback candidates

                            The DexScreener fallback budget now applies to actual outgoing requests instead of the first ten missing assets, so high-rank addressless rows that are skipped for identity reasons cannot crowd out later valid fallback candidates.

                            • Pass 4 still prioritizes exact-target assets first and then larger circulating names, but it now walks the full sorted missing set until it spends the 10-request DexScreener budget
                            • Addressless non-unique symbols that are skipped without making a request no longer consume one of the candidate slots that can reach lower-rank unique-symbol recoveries such as CHFAU or ctUSD
                            • This reduces false `dexscreener-prices` breaker opens during bad network windows because the pass has more chances to record at least one healthy DexScreener response before giving up
                            Details

                            Impact Notes

                            • Pass 4 still prioritizes exact-target assets first and then larger circulating names, but it now walks the full sorted missing set until it spends the 10-request DexScreener budget
                            • Addressless non-unique symbols that are skipped without making a request no longer consume one of the candidate slots that can reach lower-rank unique-symbol recoveries such as CHFAU or ctUSD
                            • This reduces false `dexscreener-prices` breaker opens during bad network windows because the pass has more chances to record at least one healthy DexScreener response before giving up
                            0 commits
                              v3.99Apr 7, 2026

                              Native-peg live publication guard and fill lane for non-USD fiat assets

                              Supported non-USD fiat assets can now use a fresh direct CoinGecko native quote plus fresh FX reference to correct weak live USD publications and fill missing live prices without turning that derived mark into replay-safe consensus state.

                              • Live post-enrichment validation now lets supported non-USD fiat assets replace materially divergent weak or mixed-source USD publications when a direct native quote implies a fresher peg-consistent USD mark
                              • The same native lane can now fill a missing live price for supported non-USD fiat assets when direct native CoinGecko pricing exists and the derived USD mark passes publication validation
                              • That native-implied mark remains a fresh fallback-validation lane rather than a replay-safe primary consensus source: it is not written into `price_cache`, and later replay cannot publish it as cached continuity
                              Details

                              Impact Notes

                              • Live post-enrichment validation now lets supported non-USD fiat assets replace materially divergent weak or mixed-source USD publications when a direct native quote implies a fresher peg-consistent USD mark
                              • The same native lane can now fill a missing live price for supported non-USD fiat assets when direct native CoinGecko pricing exists and the derived USD mark passes publication validation
                              • That native-implied mark remains a fresh fallback-validation lane rather than a replay-safe primary consensus source: it is not written into `price_cache`, and later replay cannot publish it as cached continuity
                              0 commits
                                v3.98Apr 7, 2026

                                Daily-confirmed native-peg replay for non-USD fiat backfills

                                Historical non-USD fiat replay now treats CoinGecko native-fiat history as a day-scale corroboration lane rather than trusting thin hourly native prints on their own.

                                • Historical CoinGecko market-chart replay now passes the configured CoinGecko API key through the backfill/admin path so native-fiat history can use the authenticated transport consistently during broad repairs
                                • Supported non-USD fiat backfills now replay native-fiat history at daily cadence with a two-point confirmation window across a 36-hour gap tolerance instead of opening on isolated thin hourly prints
                                • Extreme single-point native crashes of 5,000 bps or more are still preserved even when the normal historical confirmation rule would otherwise suppress the event
                                Details

                                Impact Notes

                                • Historical CoinGecko market-chart replay now passes the configured CoinGecko API key through the backfill/admin path so native-fiat history can use the authenticated transport consistently during broad repairs
                                • Supported non-USD fiat backfills now replay native-fiat history at daily cadence with a two-point confirmation window across a 36-hour gap tolerance instead of opening on isolated thin hourly prints
                                • Extreme single-point native crashes of 5,000 bps or more are still preserved even when the normal historical confirmation rule would otherwise suppress the event
                                0 commits
                                  v3.97Apr 7, 2026

                                  Generalized native-peg safeguards for non-USD fiat replay and routing

                                  Expanded the native-peg hardening lane from BRL-only handling to the wider supported non-USD fiat set, and historical backfill now prefers direct native CoinGecko fiat pairs before falling back to USD history.

                                  • Supported non-USD fiat assets such as EUR, CHF, GBP, JPY, SGD, AUD, CAD, BRL, IDR, TRY, ZAR, PHP, MXN, RUB, and CNH/CNY can now consult fresh direct native-peg quotes before downstream depeg logic trusts a derived USD-versus-FX move
                                  • Historical market replay now prefers direct CoinGecko native fiat pairs for those supported pegs and compares that native series directly to the `1.0` peg instead of replaying through `USD price / FX reference` when native history exists
                                  • The published live USD price path still does not gain a second CoinGecko-derived consensus voice; this remains a downstream validation and historical-replay hardening change rather than a new cached live source
                                  Details

                                  Impact Notes

                                  • Supported non-USD fiat assets such as EUR, CHF, GBP, JPY, SGD, AUD, CAD, BRL, IDR, TRY, ZAR, PHP, MXN, RUB, and CNH/CNY can now consult fresh direct native-peg quotes before downstream depeg logic trusts a derived USD-versus-FX move
                                  • Historical market replay now prefers direct CoinGecko native fiat pairs for those supported pegs and compares that native series directly to the `1.0` peg instead of replaying through `USD price / FX reference` when native history exists
                                  • The published live USD price path still does not gain a second CoinGecko-derived consensus voice; this remains a downstream validation and historical-replay hardening change rather than a new cached live source
                                  0 commits
                                    v3.96Apr 7, 2026

                                    Direct native-peg BRL corroboration for downstream depeg routing

                                    Supported non-USD fiat assets can now consult a fresh direct CoinGecko native-peg quote before downstream depeg logic trusts a USD price divided by an FX reference on its own.

                                    • Live depeg detection now checks a fresh direct `coin/native-peg` quote for supported fiat pegs such as BRL before opening or extending downstream depeg state
                                    • Pending depeg confirmation uses that same direct native quote first, reducing BRZ-style false positives caused by USD/FX reference drift
                                    • The published live price remains the normal USD pipeline output; this change hardens downstream validation rather than introducing a new cached price source
                                    Details

                                    Impact Notes

                                    • Live depeg detection now checks a fresh direct `coin/native-peg` quote for supported fiat pegs such as BRL before opening or extending downstream depeg state
                                    • Pending depeg confirmation uses that same direct native quote first, reducing BRZ-style false positives caused by USD/FX reference drift
                                    • The published live price remains the normal USD pipeline output; this change hardens downstream validation rather than introducing a new cached price source
                                    0 commits
                                      v3.95Apr 6, 2026

                                      USDAI inherits PYUSD redemption pricing

                                      Moved base USDAI onto the authoritative redemption-price family by inheriting tracked PYUSD live pricing and historical replay, so thin secondary-market USDAI prints no longer create synthetic peg damage for a wrapper-style redeemable token.

                                      • Live pricing now treats `usdai-usd-ai` as a redeemable PYUSD wrapper and publishes it from the authoritative `protocol-redeem` lane when tracked PYUSD pricing is available
                                      • Historical depeg backfills for `usdai-usd-ai` now replay the tracked PYUSD market series instead of trusting USDAI's own thin secondary-market history
                                      • USDAI PegScore and depeg event history no longer inherit obvious false positives from wrapper-specific market dislocations that conflict with the token's instant-redemption semantics
                                      Details

                                      Impact Notes

                                      • Live pricing now treats `usdai-usd-ai` as a redeemable PYUSD wrapper and publishes it from the authoritative `protocol-redeem` lane when tracked PYUSD pricing is available
                                      • Historical depeg backfills for `usdai-usd-ai` now replay the tracked PYUSD market series instead of trusting USDAI's own thin secondary-market history
                                      • USDAI PegScore and depeg event history no longer inherit obvious false positives from wrapper-specific market dislocations that conflict with the token's instant-redemption semantics
                                      0 commits
                                        v3.94Apr 3, 2026

                                        Blocked dead Bunni DEX inputs

                                        Explicitly blocked Bunni from the DEX bridge and pool-challenge surfaces after dead-venue rows kept contaminating retained-pool pricing inputs.

                                        • Bunni slugs are now rejected during DEX crawl intake and DeFiLlama pool processing, so they no longer spend discovery or scoring budget
                                        • Retained-pool filtering, challenger publication, and dex_prices publication all ignore Bunni even if stale or staged rows try to reintroduce it
                                        • Pool-challenge replacement marks and promoted DEX bridge sources can no longer be pulled back toward peg by Bunni rows
                                        Details

                                        Impact Notes

                                        • Bunni slugs are now rejected during DEX crawl intake and DeFiLlama pool processing, so they no longer spend discovery or scoring budget
                                        • Retained-pool filtering, challenger publication, and dex_prices publication all ignore Bunni even if stale or staged rows try to reintroduce it
                                        • Pool-challenge replacement marks and promoted DEX bridge sources can no longer be pulled back toward peg by Bunni rows
                                        0 commits
                                          v3.93Apr 3, 2026

                                          RedStone USR provider-config drift cleanup

                                          Removed stale RedStone provider config drift after the live API stopped returning USR, so the tracked-symbol allowlist and validation gate match the provider's real coverage again.

                                          • USR no longer sits in `REDSTONE_TRACKED_SYMBOL_ALLOWLIST` once the live RedStone API stopped serving that exact-case symbol
                                          • The RedStone price lane no longer spends request budget batching and retrying a symbol the provider currently omits
                                          • Pricing-provider audit and merge-gate validation now fail only on live coverage drift that still exists, not on a known stale allowlist entry
                                          Details

                                          Impact Notes

                                          • USR no longer sits in `REDSTONE_TRACKED_SYMBOL_ALLOWLIST` once the live RedStone API stopped serving that exact-case symbol
                                          • The RedStone price lane no longer spends request budget batching and retrying a symbol the provider currently omits
                                          • Pricing-provider audit and merge-gate validation now fail only on live coverage drift that still exists, not on a known stale allowlist entry
                                          0 commits
                                            v3.92Apr 3, 2026

                                            Retained-pool DEX bridge publication

                                            The DEX bridge now publishes only from the final retained pool set, so raw discovery observations that fail dedupe or quality admission can no longer leak into primary-pricing DEX aggregates.

                                            • dex_prices now rebuilds its aggregate and per-protocol bridge sources from retained priced pools after the full liquidity scoring filters run
                                            • Promoted DEX bridge inputs and peg-summary dexPriceCheck now stay aligned with the same retained pool surface used by challenger publication and liquidity UI detail
                                            • Skipped duplicate or low-quality discovery rows can no longer create synthetic near-peg DEX bridge marks for assets whose retained pools still show a depeg
                                            Details

                                            Impact Notes

                                            • dex_prices now rebuilds its aggregate and per-protocol bridge sources from retained priced pools after the full liquidity scoring filters run
                                            • Promoted DEX bridge inputs and peg-summary dexPriceCheck now stay aligned with the same retained pool surface used by challenger publication and liquidity UI detail
                                            • Skipped duplicate or low-quality discovery rows can no longer create synthetic near-peg DEX bridge marks for assets whose retained pools still show a depeg
                                            0 commits
                                              v3.91Apr 2, 2026

                                              Protocol-level pool-challenge divergence gating

                                              Moved pool-challenge divergence evaluation to one TVL-weighted median per protocol, so a single bad challenger pool can no longer make an otherwise agreeing protocol count as independent corroboration for replacement.

                                              • Pool challenge still downgrades weak soft-source consensus when any qualifying challenger pool diverges beyond the peg-aware threshold
                                              • Price replacement now requires at least two protocol-level challenger medians to diverge, rather than counting divergence from any one pool inside each protocol
                                              • A rogue pool inside an otherwise agreeing protocol no longer drags severe depegs back toward peg on the published stablecoins snapshot
                                              • The final replacement mark remains the TVL-weighted median across the corroborating divergent protocol groups
                                              Details

                                              Impact Notes

                                              • Pool challenge still downgrades weak soft-source consensus when any qualifying challenger pool diverges beyond the peg-aware threshold
                                              • Price replacement now requires at least two protocol-level challenger medians to diverge, rather than counting divergence from any one pool inside each protocol
                                              • A rogue pool inside an otherwise agreeing protocol no longer drags severe depegs back toward peg on the published stablecoins snapshot
                                              • The final replacement mark remains the TVL-weighted median across the corroborating divergent protocol groups
                                              0 commits
                                                v3.9Mar 30, 2026

                                                Explicit source semantics, cluster-median publication, and fallback identity hardening

                                                Made source freshness and trust semantics explicit, changed high-confidence consensus to publish the agreeing cluster median instead of a single member price, and hardened fallback identity/order handling for DefiLlama and DexScreener.

                                                • Pricing sources now carry explicit freshness kind, max trusted age, upstream-timestamp support, single-source authority, and market-capability metadata in the canonical registry
                                                • High-confidence consensus now publishes the winning cluster median while preserving the internally selected cluster member for provenance and downstream policy
                                                • DefiLlama list quotes now enter primary pricing as typed inputs with explicit observed-time provenance instead of inheriting mutable asset-state timestamps
                                                • DEX bridge source freshness now preserves per-source timestamps from `price_sources_json` instead of flattening everything to the row write time
                                                Details

                                                Impact Notes

                                                • Pricing sources now carry explicit freshness kind, max trusted age, upstream-timestamp support, single-source authority, and market-capability metadata in the canonical registry
                                                • High-confidence consensus now publishes the winning cluster median while preserving the internally selected cluster member for provenance and downstream policy
                                                • DefiLlama list quotes now enter primary pricing as typed inputs with explicit observed-time provenance instead of inheriting mutable asset-state timestamps
                                                • DEX bridge source freshness now preserves per-source timestamps from `price_sources_json` instead of flattening everything to the row write time
                                                • DefiLlama contract fallback now prefers canonical tracked deployment identities, validates each quote before claiming the asset, and can probe multiple exact tracked coin ids when needed
                                                • DexScreener fallback now prioritizes exact-target assets under the request cap and keeps symbol search reserved for addressless assets only
                                                • Pyth confidence weighting is now smoother across medium-confidence prints, and RedStone requires at least 60% venue agreement before entering primary consensus
                                                • The provider-config pricing audit is now part of CI validation instead of remaining a local-only check
                                                0 commits
                                                  v3.8Mar 30, 2026

                                                  Validated DefiLlama fallback admission and exact-target DexScreener gating

                                                  Hardened late-stage price enrichment so unreasonable DefiLlama contract quotes can no longer claim an asset before validation, and DexScreener symbol search no longer runs for assets that already have canonical exact token-address targets.

                                                  • DefiLlama pass 1 and pass 1b now validate quotes against the shared peg-aware bounds before marking an asset as resolved
                                                  • A bad DL contract response can no longer block later CoinMarketCap, Jupiter, or DexScreener fallback passes in the same run
                                                  • DexScreener symbol search now stays disabled whenever the asset already has a canonical chain+address lookup path; only addressless assets can use the unique-symbol search fallback
                                                  • This reduces wrong-identity recovery risk while preserving the exact-address DexScreener recovery path for assets with tracked deployments
                                                  Details

                                                  Impact Notes

                                                  • DefiLlama pass 1 and pass 1b now validate quotes against the shared peg-aware bounds before marking an asset as resolved
                                                  • A bad DL contract response can no longer block later CoinMarketCap, Jupiter, or DexScreener fallback passes in the same run
                                                  • DexScreener symbol search now stays disabled whenever the asset already has a canonical chain+address lookup path; only addressless assets can use the unique-symbol search fallback
                                                  • This reduces wrong-identity recovery risk while preserving the exact-address DexScreener recovery path for assets with tracked deployments
                                                  0 commits
                                                    v3.7Mar 24, 2026

                                                    Protocol-aware DEX hardening estimators and provider-config cleanup

                                                    Made the GeckoTerminal probe and pool-challenge replacement estimators protocol-aware, so repeated same-protocol pools no longer dominate soft-source hardening marks, and cleaned stale provider configuration drift in the RedStone tracked-symbol allowlist.

                                                    • GeckoTerminal probing now collapses pools to one TVL-weighted-median price per protocol before injecting a cross-protocol weighted-median mark
                                                    • Pool challenge replacement now uses corroborating divergent protocol groups rather than a raw all-pool weighted mean, making replacement marks less sensitive to repeated same-protocol pools
                                                    • Provider-config audit tests now guard CEX and RedStone coverage allowlists against duplicate or stale untracked entries
                                                    • The stale untracked `sUSDe` RedStone allowlist entry was removed so the runtime config matches the tracked registry again
                                                    Details

                                                    Impact Notes

                                                    • GeckoTerminal probing now collapses pools to one TVL-weighted-median price per protocol before injecting a cross-protocol weighted-median mark
                                                    • Pool challenge replacement now uses corroborating divergent protocol groups rather than a raw all-pool weighted mean, making replacement marks less sensitive to repeated same-protocol pools
                                                    • Provider-config audit tests now guard CEX and RedStone coverage allowlists against duplicate or stale untracked entries
                                                    • The stale untracked `sUSDe` RedStone allowlist entry was removed so the runtime config matches the tracked registry again
                                                    0 commits
                                                      v3.6Mar 24, 2026

                                                      Explicit source freshness provenance for live prices

                                                      Made source freshness provenance explicit in live-price payloads and replay metadata, so Pharos can distinguish true upstream observation time from locally stamped fetch time without overstating downstream authority.

                                                      • Stablecoin payloads, peg-summary outputs, and `price_cache` rows now preserve `priceObservedAtMode` alongside `priceObservedAt`
                                                      • Primary consensus now carries freshness provenance per source and resolves a conservative effective mode for the selected price
                                                      • Hard single-source prices remain depeg-authoritative only when they retain source-native freshness provenance; local-fetch hard single-source prices now stay `confirm_required`
                                                      • Older rows remain backward-compatible: cached data that predates explicit freshness-mode storage does not automatically lose authority just because the mode is absent
                                                      Details

                                                      Impact Notes

                                                      • Stablecoin payloads, peg-summary outputs, and `price_cache` rows now preserve `priceObservedAtMode` alongside `priceObservedAt`
                                                      • Primary consensus now carries freshness provenance per source and resolves a conservative effective mode for the selected price
                                                      • Hard single-source prices remain depeg-authoritative only when they retain source-native freshness provenance; local-fetch hard single-source prices now stay `confirm_required`
                                                      • Older rows remain backward-compatible: cached data that predates explicit freshness-mode storage does not automatically lose authority just because the mode is absent
                                                      0 commits
                                                        v3.5Mar 23, 2026

                                                        Independent FX recovery during cached fallback

                                                        Kept the independent FX recovery paths alive even after the full-set fiat stack drops into cached fallback, so Open Exchange Rates, Chainlink overlays, and metals probes can still refresh stale pegs and promote the run back to live once fresh full-set coverage is restored.

                                                        • Cached-fallback FX runs now keep probing Open Exchange Rates, Chainlink reference feeds, and gold-api.com instead of freezing their last known state until Frankfurter recovers
                                                        • A single stale intraday peg can no longer pin the whole FX lane in repeated cached fallback when OXR or Chainlink can refresh that subset independently
                                                        • If those independent probes restore fresh coverage for the expected fiat reference set, the run now exits cached fallback immediately and resets the fallback streak
                                                        • Operator metadata remains explicit about the failed Frankfurter / mirror path while no longer overstating the duration of an otherwise recovered FX incident
                                                        Details

                                                        Impact Notes

                                                        • Cached-fallback FX runs now keep probing Open Exchange Rates, Chainlink reference feeds, and gold-api.com instead of freezing their last known state until Frankfurter recovers
                                                        • A single stale intraday peg can no longer pin the whole FX lane in repeated cached fallback when OXR or Chainlink can refresh that subset independently
                                                        • If those independent probes restore fresh coverage for the expected fiat reference set, the run now exits cached fallback immediately and resets the fallback streak
                                                        • Operator metadata remains explicit about the failed Frankfurter / mirror path while no longer overstating the duration of an otherwise recovered FX incident
                                                        0 commits
                                                          v3.4Mar 23, 2026

                                                          Replay-safe trusted-price continuity for confirmed depegs

                                                          Extended previous-trusted severe-depeg continuity to reuse fresh replay-safe price-cache rows, so a transient low or unusable stablecoins publication cannot make the next validation pass forget a recently corroborated open depeg.

                                                          • Previous-trusted price lookup now merges the last authoritative stablecoins publication with fresh replay-safe `price_cache` metadata
                                                          • Cached replay can keep publishing the last fresh corroborated depeg price through brief single-run corroboration gaps instead of dropping the asset to `N/A`
                                                          • Confirmed severe depegs no longer lose continuity just because an intervening stablecoins run published a `low` or unusable price state
                                                          • This closes the intermittent USR-style divergence where PSI could still explain the open depeg while detail surfaces lost the current price
                                                          Details

                                                          Impact Notes

                                                          • Previous-trusted price lookup now merges the last authoritative stablecoins publication with fresh replay-safe `price_cache` metadata
                                                          • Cached replay can keep publishing the last fresh corroborated depeg price through brief single-run corroboration gaps instead of dropping the asset to `N/A`
                                                          • Confirmed severe depegs no longer lose continuity just because an intervening stablecoins run published a `low` or unusable price state
                                                          • This closes the intermittent USR-style divergence where PSI could still explain the open depeg while detail surfaces lost the current price
                                                          0 commits
                                                            v3.3Mar 22, 2026

                                                            Source-aware trust, observed-time freshness, and weak-price jump quarantine

                                                            Centralized pricing-source trust policy, preserved true source-observation timestamps through consensus and replay, and hardened publication/depeg behavior so weak soft-source moves cannot silently become downstream-authoritative or self-reinforce through the DEX bridge.

                                                            • Pricing source capabilities now come from one canonical registry shared by consensus, replay safety, pool challenge, GT probing, status health, and depeg trust classification
                                                            • Cached stablecoin payloads now preserve `priceObservedAt` and `priceSyncedAt`; compatibility `priceUpdatedAt` now reflects the true observation timestamp rather than the sync write time
                                                            • Soft single-source prices and soft-only high-confidence consensus can no longer mutate live depeg state directly; hard single-source sources such as Pyth, CEX, Curve, and protocol-redemption can still be authoritative
                                                            • Weak fixed-peg price jumps versus the previous trusted price now require corroboration before publication, closing the USR-style wrong-price path
                                                            Details

                                                            Impact Notes

                                                            • Pricing source capabilities now come from one canonical registry shared by consensus, replay safety, pool challenge, GT probing, status health, and depeg trust classification
                                                            • Cached stablecoin payloads now preserve `priceObservedAt` and `priceSyncedAt`; compatibility `priceUpdatedAt` now reflects the true observation timestamp rather than the sync write time
                                                            • Soft single-source prices and soft-only high-confidence consensus can no longer mutate live depeg state directly; hard single-source sources such as Pyth, CEX, Curve, and protocol-redemption can still be authoritative
                                                            • Weak fixed-peg price jumps versus the previous trusted price now require corroboration before publication, closing the USR-style wrong-price path
                                                            • Pool challenge now uses the live $100K threshold in its published challenger snapshots and can harden weak soft-source outcomes, not only pre-downgrade high-confidence clusters
                                                            • GeckoTerminal probing now revisits weak CoinGecko / DL-list soft outcomes rather than only strict one-source cases
                                                            • Direct-API DEX quote conversion now reuses only authoritative tracked stablecoin prices; weak or stale tracked prices fall back to peg references instead of feeding the bridge loop
                                                            • Replay cache rows now keep source, confidence, observation time, sync time, and source lists; RedStone now derives its price from the venue median instead of the provider aggregate
                                                            • CoinMarketCap, Jupiter, and DexScreener enrichment passes now fail independently instead of aborting the whole late-enrichment block
                                                            0 commits
                                                              v3.2Mar 22, 2026

                                                              Identity-safe enrichment, severe-downside publication guards, and replay-safe DEX quote derivation

                                                              Closed the main pricing-integrity gaps by constraining fallback identity to tracked deployments, requiring corroboration for severe fixed-peg downside publication, promoting only replay-safe cached prices, and deriving DEX quote USD values from tracked live stablecoin prices instead of unconditional `$1` symbol assumptions.

                                                              • Primary pricing candidates are no longer gated on `geckoId`; tracked assets can still enter consensus through Pyth, CEX, RedStone, Curve, DL-list, or DEX bridge inputs
                                                              • DefiLlama pass 1b now probes only tracked alternate deployments instead of synthesizing same-address identities across chains
                                                              • CoinMarketCap and DexScreener symbol fallbacks now require uniqueness within the tracked registry, reducing symbol-collision poisoning
                                                              • RedStone prices now require at least two corroborating venues before entering primary consensus
                                                              Details

                                                              Impact Notes

                                                              • Primary pricing candidates are no longer gated on `geckoId`; tracked assets can still enter consensus through Pyth, CEX, RedStone, Curve, DL-list, or DEX bridge inputs
                                                              • DefiLlama pass 1b now probes only tracked alternate deployments instead of synthesizing same-address identities across chains
                                                              • CoinMarketCap and DexScreener symbol fallbacks now require uniqueness within the tracked registry, reducing symbol-collision poisoning
                                                              • RedStone prices now require at least two corroborating venues before entering primary consensus
                                                              • Pool challenge now applies to DEX-inclusive soft consensus clusters unless an exempt hard source is present
                                                              • GeckoTerminal probing now cross-checks eligible single-source DL-list results in addition to single-source CoinGecko results
                                                              • Direct-API DEX pair conversion now prefers tracked cached stablecoin prices for quote legs and will not treat unknown addressed `USDC`/`USDT`-style symbols as automatic `$1` references
                                                              • Price-cache replay now stores only replay-safe non-low, non-fallback prices and the replay window is shortened from 24h to 6h
                                                              • Severe fixed-peg downside publication now requires corroboration unless the source is an explicit protocol-redemption or pool-challenge replacement mark
                                                              0 commits
                                                                v3.1Mar 22, 2026

                                                                Canonical DEX token identity and non-overlapping DEX consensus

                                                                Hardened DEX price intake so runtime pool parsing can no longer learn new token identities, unknown addressed tokens cannot fall back to symbol matches in price-bearing paths, and promoted DEX bridge sources cannot self-confirm inside primary consensus.

                                                                • DEX identity is now canonical-only at runtime: DeFiLlama and subgraph parsing no longer mutate chain-aware token ownership
                                                                • Symbol fallback remains available only for addressless tokens; addressed unknown tokens are dropped instead of being reinterpreted by symbol
                                                                • DeFiLlama pools with `underlyingTokens` now match tracked assets by canonical addresses only, preventing positional symbol/address poisoning
                                                                • Promoted per-protocol DEX bridge sources are admitted into primary consensus only when corroborated or when no non-DEX voices exist
                                                                Details

                                                                Impact Notes

                                                                • DEX identity is now canonical-only at runtime: DeFiLlama and subgraph parsing no longer mutate chain-aware token ownership
                                                                • Symbol fallback remains available only for addressless tokens; addressed unknown tokens are dropped instead of being reinterpreted by symbol
                                                                • DeFiLlama pools with `underlyingTokens` now match tracked assets by canonical addresses only, preventing positional symbol/address poisoning
                                                                • Promoted per-protocol DEX bridge sources are admitted into primary consensus only when corroborated or when no non-DEX voices exist
                                                                • The overlapping `dex-promoted` aggregate is withheld whenever promoted per-protocol DEX bridge data exists for the same asset
                                                                0 commits
                                                                  v3.0Mar 20, 2026

                                                                  Cadence-valid FX carry-forward semantics

                                                                  Adjusted FX refresh semantics so previously published daily references are treated as a successful live carry-forward when they are still within their expected freshness cadence, instead of automatically incrementing cached-fallback status.

                                                                  • Quarter-hour FX runs no longer poison status simply because Frankfurter and mirror transports failed to re-deliver an already-current daily source snapshot
                                                                  • Carry-forward runs preserve per-peg source dates and cadence metadata, so status still degrades normally once the underlying daily references actually age out
                                                                  • Operator metadata still records the failed live transport path, but public health now aligns with source freshness rather than transport availability alone
                                                                  Details

                                                                  Impact Notes

                                                                  • Quarter-hour FX runs no longer poison status simply because Frankfurter and mirror transports failed to re-deliver an already-current daily source snapshot
                                                                  • Carry-forward runs preserve per-peg source dates and cadence metadata, so status still degrades normally once the underlying daily references actually age out
                                                                  • Operator metadata still records the failed live transport path, but public health now aligns with source freshness rather than transport availability alone
                                                                  0 commits
                                                                    v2.9Mar 20, 2026

                                                                    Jupiter V3 freshness fix and exact DexScreener address fallback

                                                                    Stopped rejecting Jupiter V3 fallback quotes based on optional createdAt metadata and upgraded DexScreener enrichment to prefer exact token-address pool lookups before symbol search.

                                                                    • Jupiter fallback now relies on V3 liquidity gates and peg-aware validation instead of treating optional `createdAt` metadata as a hard freshness cutoff
                                                                    • Tracked Solana assets can recover through Jupiter even when V3 responses include old createdAt values alongside current block-level pricing
                                                                    • DexScreener fallback now prefers exact chain+address pool lookups when an asset has a resolvable token address, reducing dependence on noisy symbol search results
                                                                    • DexScreener search remains as the last fallback path, still capped by the shared request budget and liquidity sanity gates
                                                                    Details

                                                                    Impact Notes

                                                                    • Jupiter fallback now relies on V3 liquidity gates and peg-aware validation instead of treating optional `createdAt` metadata as a hard freshness cutoff
                                                                    • Tracked Solana assets can recover through Jupiter even when V3 responses include old createdAt values alongside current block-level pricing
                                                                    • DexScreener fallback now prefers exact chain+address pool lookups when an asset has a resolvable token address, reducing dependence on noisy symbol search results
                                                                    • DexScreener search remains as the last fallback path, still capped by the shared request budget and liquidity sanity gates
                                                                    0 commits
                                                                      v2.8Mar 20, 2026

                                                                      Tertiary full-set FX fallback for multi-source outages

                                                                      Added ExchangeRate-API as a tertiary live full-set FX fallback so production can keep publishing dated fiat references when both Frankfurter and the existing secondary mirrors are unavailable.

                                                                      • Frankfurter remains the preferred ECB-backed business-day source for the core fiat set
                                                                      • The existing `fawazahmed0/currency-api` mirrors still serve CNH/RUB/UAH/ARS and can backstop the wider fiat set when Frankfurter is unavailable
                                                                      • When both current FX paths fail, ExchangeRate-API can now publish a daily full-set fiat snapshot instead of forcing an immediate cached-fallback run
                                                                      • The About page and pricing methodology now disclose ExchangeRate-API as an externally visible FX reference source
                                                                      Details

                                                                      Impact Notes

                                                                      • Frankfurter remains the preferred ECB-backed business-day source for the core fiat set
                                                                      • The existing `fawazahmed0/currency-api` mirrors still serve CNH/RUB/UAH/ARS and can backstop the wider fiat set when Frankfurter is unavailable
                                                                      • When both current FX paths fail, ExchangeRate-API can now publish a daily full-set fiat snapshot instead of forcing an immediate cached-fallback run
                                                                      • The About page and pricing methodology now disclose ExchangeRate-API as an externally visible FX reference source
                                                                      0 commits
                                                                        v2.7Mar 20, 2026

                                                                        Secondary FX full-set live fallback for Frankfurter outages

                                                                        Expanded the existing dated secondary FX mirror path so it can temporarily backstop the wider fiat reference set when Frankfurter is unavailable, preventing repeated cached-only FX runs.

                                                                        • CNH/RUB/UAH/ARS still use the secondary daily feed as their normal source path
                                                                        • When Frankfurter fails, the fresher `fawazahmed0/currency-api` mirror can now populate the broader fiat FX set instead of forcing an immediate cached-fallback run
                                                                        • Per-peg FX metadata preserves calendar-daily cadence and source-date semantics during this live fallback path
                                                                        • Public health no longer needs to report long consecutive cached-fallback FX runs for a Frankfurter-only outage when the secondary feed is healthy
                                                                        Details

                                                                        Impact Notes

                                                                        • CNH/RUB/UAH/ARS still use the secondary daily feed as their normal source path
                                                                        • When Frankfurter fails, the fresher `fawazahmed0/currency-api` mirror can now populate the broader fiat FX set instead of forcing an immediate cached-fallback run
                                                                        • Per-peg FX metadata preserves calendar-daily cadence and source-date semantics during this live fallback path
                                                                        • Public health no longer needs to report long consecutive cached-fallback FX runs for a Frankfurter-only outage when the secondary feed is healthy
                                                                        0 commits
                                                                          v2.6Mar 19, 2026

                                                                          Published DEX challenger snapshots and durable FX freshness metadata

                                                                          Pool challenge and depeg confirmation now read dedicated challenger snapshots built from the full retained DEX pool set, while FX reference freshness is tracked separately from usable cached-fallback freshness.

                                                                          • Pool challenge no longer depends on dex_liquidity.top_pools_json, so display truncation cannot hide a large challenger pool
                                                                          • Published challenger snapshots are coverage-gated per stablecoin and fall back safely during migration gaps
                                                                          • Cached FX fallback runs preserve per-peg source timestamps and source modes instead of refreshing them implicitly
                                                                          • Health and status now report usable FX freshness, underlying source freshness, and consecutive fallback runs separately
                                                                          Details

                                                                          Impact Notes

                                                                          • Pool challenge no longer depends on dex_liquidity.top_pools_json, so display truncation cannot hide a large challenger pool
                                                                          • Published challenger snapshots are coverage-gated per stablecoin and fall back safely during migration gaps
                                                                          • Cached FX fallback runs preserve per-peg source timestamps and source modes instead of refreshing them implicitly
                                                                          • Health and status now report usable FX freshness, underlying source freshness, and consecutive fallback runs separately
                                                                          • Non-USD and commodity validation consumers now read shared FX state instead of inferring freshness from cache updated_at alone
                                                                          0 commits
                                                                            v2.5Mar 19, 2026

                                                                            Kraken and Bitstamp primary pricing, Jupiter Solana fallback, Chainlink reference overlays

                                                                            Added Kraken and Bitstamp as additional direct venue voices in primary consensus, introduced a Jupiter Price API fallback pass for unresolved Solana assets, and overlaid curated Chainlink reference feeds onto supported FX and commodity validation rates.

                                                                            • Kraken joins primary consensus at weight 2 for supported USD pairs
                                                                            • Bitstamp joins primary consensus at weight 1 as a lower-weight corroborating CEX venue
                                                                            • Primary CEX fetches remain grouped so the quarter-hour pricing lane does not add new peak connection fan-out
                                                                            • Missing Solana prices can now resolve through Jupiter before DexScreener, gated by liquidity and peg-aware plausibility checks
                                                                            Details

                                                                            Impact Notes

                                                                            • Kraken joins primary consensus at weight 2 for supported USD pairs
                                                                            • Bitstamp joins primary consensus at weight 1 as a lower-weight corroborating CEX venue
                                                                            • Primary CEX fetches remain grouped so the quarter-hour pricing lane does not add new peak connection fan-out
                                                                            • Missing Solana prices can now resolve through Jupiter before DexScreener, gated by liquidity and peg-aware plausibility checks
                                                                            • Curated Chainlink EUR/USD, GBP/USD, JPY/USD, XAU/USD, and XAG/USD feeds can now refresh the FX/reference cache when fresh and aligned
                                                                            • Status source distribution now reports Kraken, Bitstamp, and Jupiter participation explicitly
                                                                            0 commits
                                                                              v2.4Mar 19, 2026

                                                                              Pairwise consensus hardening, RedStone freshness gate, authoritative override ordering

                                                                              Hardened primary price selection so agreement requires full pairwise clustering, fixed pegs stay on fixed-peg rules when references are temporarily unavailable, RedStone requires fresh timestamped venue breakdowns, and protocol-redeem overrides remain final after GeckoTerminal probing.

                                                                              • Transitive source chains can no longer create fake multi-source high confidence
                                                                              • Equal-size cluster ties now resolve deterministically by weight, spread, peg proximity, then label
                                                                              • Fixed-peg assets no longer silently fall back into NAV-style 500 bps clustering when peg references are missing
                                                                              • Stale or aggregate-only RedStone entries are excluded before consensus
                                                                              Details

                                                                              Impact Notes

                                                                              • Transitive source chains can no longer create fake multi-source high confidence
                                                                              • Equal-size cluster ties now resolve deterministically by weight, spread, peg proximity, then label
                                                                              • Fixed-peg assets no longer silently fall back into NAV-style 500 bps clustering when peg references are missing
                                                                              • Stale or aggregate-only RedStone entries are excluded before consensus
                                                                              • Protocol-backed redemption prices can no longer be overwritten by the GeckoTerminal probe
                                                                              • Direct-API pools must pass shared TVL sanity gates before they suppress overlapping DeFiLlama pools
                                                                              0 commits
                                                                                v2.3Mar 18, 2026

                                                                                Per-protocol DEX bridge aggregation and top-pool challenge source split

                                                                                The DEX bridge now persists one aggregated price entry per protocol instead of re-injecting individual top pools as repeated consensus sources. Pool challenge reads large current pools from dex_liquidity.top_pools_json, separating consensus promotion from individual-pool depeg challenge inputs.

                                                                                • Fluid, Balancer, Raydium, and Orca now contribute at most one promoted consensus source each
                                                                                • Repeated high-TVL pools from the same protocol can no longer overweight primary consensus by appearing multiple times
                                                                                • dex_prices.price_sources_json now stores per-protocol aggregates for the pricing bridge
                                                                                • Pool challenge no longer depends on dex_prices.price_sources_json; it reads current top pools from dex_liquidity instead
                                                                                Details

                                                                                Impact Notes

                                                                                • Fluid, Balancer, Raydium, and Orca now contribute at most one promoted consensus source each
                                                                                • Repeated high-TVL pools from the same protocol can no longer overweight primary consensus by appearing multiple times
                                                                                • dex_prices.price_sources_json now stores per-protocol aggregates for the pricing bridge
                                                                                • Pool challenge no longer depends on dex_prices.price_sources_json; it reads current top pools from dex_liquidity instead
                                                                                • Non-USD tracked stablecoin pairs use peg-reference-aware conversion when deriving direct-API DEX prices
                                                                                0 commits
                                                                                  v2.2Mar 17, 2026

                                                                                  Pool confirmation fix, peg-type-aware challenge, source quality gating

                                                                                  Fixed critical depeg detection gap where pool-challenge-driven depegs could never be confirmed. Made pool challenge threshold peg-type-aware. Added Pyth confidence and RedStone venue agreement gating. Downgraded CG+DL-only consensus to single-source.

                                                                                  • Pool-level individual prices added as fourth depeg confirmation source — fixes dUSD-like depegs going undetected
                                                                                  • Pool challenge threshold now peg-type-aware: 300 bps for non-USD (was 500 bps for all)
                                                                                  • Pyth feeds with >200 bps confidence excluded from consensus; 100-200 bps downweighted
                                                                                  • RedStone excluded when internal venue agreement < 50%
                                                                                  Details

                                                                                  Impact Notes

                                                                                  • Pool-level individual prices added as fourth depeg confirmation source — fixes dUSD-like depegs going undetected
                                                                                  • Pool challenge threshold now peg-type-aware: 300 bps for non-USD (was 500 bps for all)
                                                                                  • Pyth feeds with >200 bps confidence excluded from consensus; 100-200 bps downweighted
                                                                                  • RedStone excluded when internal venue agreement < 50%
                                                                                  • CG+DL-only consensus downgraded from high to single-source (illusory agreement)
                                                                                  • NAV tokens (FPI) now visible in peg-summary API with null deviation
                                                                                  • Full source list preserved in consensus label (no more truncation)
                                                                                  • Protocol override divergence warnings logged when >100 bps from consensus
                                                                                  0 commits
                                                                                    v2.1Mar 16, 2026

                                                                                    Consensus honesty — independent DL list price, GeckoTerminal probe, pool challenge

                                                                                    Replaced the DL coins API (which mirrored CoinGecko data, creating illusory 2-source agreement) with the independent DL stablecoins list price. Added GeckoTerminal pool-level cross-check for single-source CG-only assets. Added pool challenge guard that downgrades confidence and replaces price with TVL-weighted pool average when large DEX pools diverge from soft-only consensus.

                                                                                    • Dropped DL coins API from primary consensus — it returned CG-sourced data, making CG+DL agreement tautological
                                                                                    • Added DefiLlama stablecoins list price (weight 1) as a genuinely independent aggregator voice
                                                                                    • Added GeckoTerminal pool probe (weight 1) for single-source CG-only assets with $10K TVL gate
                                                                                    • Pool challenge guard: downgrades soft-only high confidence to 'low' when any $100K+ TVL DEX pool diverges ≥500 bps
                                                                                    Details

                                                                                    Impact Notes

                                                                                    • Dropped DL coins API from primary consensus — it returned CG-sourced data, making CG+DL agreement tautological
                                                                                    • Added DefiLlama stablecoins list price (weight 1) as a genuinely independent aggregator voice
                                                                                    • Added GeckoTerminal pool probe (weight 1) for single-source CG-only assets with $10K TVL gate
                                                                                    • Pool challenge guard: downgrades soft-only high confidence to 'low' when any $100K+ TVL DEX pool diverges ≥500 bps
                                                                                    • Pool challenge price correction: replaces soft consensus price with TVL-weighted mean of all qualifying individual pool prices
                                                                                    • DEWS scoring suppresses degradation bonus for high→single-source transitions to prevent alert spikes
                                                                                    • ~130 assets retain genuine high confidence via CG+DL-list agreement; ~27 gain GT cross-check
                                                                                    0 commits
                                                                                      v2.0Mar 14, 2026

                                                                                      Multi-source consensus with oracle, CEX, and on-chain pricing

                                                                                      Upgraded from 2-source cross-validation (CG+DL) to an 8-source weighted consensus system. Added Pyth, Binance, Coinbase, RedStone oracles, Curve on-chain pricing, and promoted DEX price observations to primary voices. N-source clustering replaces simple comparison.

                                                                                      • 8 independent price sources with per-source circuit breakers and configurable weights
                                                                                      • Consensus algorithm clusters sources within 50 bps, picks highest-weight in largest cluster
                                                                                      • Authoritative protocol-redemption overrides for wrapper assets (cUSD, iUSD, crvUSD)
                                                                                      • 4-pass enrichment pipeline for assets still missing prices after primary consensus
                                                                                      Details

                                                                                      Impact Notes

                                                                                      • 8 independent price sources with per-source circuit breakers and configurable weights
                                                                                      • Consensus algorithm clusters sources within 50 bps, picks highest-weight in largest cluster
                                                                                      • Authoritative protocol-redemption overrides for wrapper assets (cUSD, iUSD, crvUSD)
                                                                                      • 4-pass enrichment pipeline for assets still missing prices after primary consensus
                                                                                      • Price confidence tagging: high (2+ agree), single-source, low (disagree), fallback
                                                                                      • CoinMarketCap enrichment optimized from per-slug to batch listings endpoint
                                                                                      0 commits
                                                                                        v1.0Feb 1, 2026Reconstructed

                                                                                        Initial 2-source price cross-validation

                                                                                        Launched baseline pricing with CoinGecko as primary and DefiLlama as cross-validation source. Simple comparison logic with single enrichment pass.

                                                                                        • CoinGecko primary prices with DefiLlama cross-validation
                                                                                        • Basic price reasonableness checks against peg references
                                                                                        • DexScreener enrichment for assets missing from aggregators
                                                                                        Details

                                                                                        Impact Notes

                                                                                        • CoinGecko primary prices with DefiLlama cross-validation
                                                                                        • Basic price reasonableness checks against peg references
                                                                                        • DexScreener enrichment for assets missing from aggregators
                                                                                        Reconstructed from git commit history.0 commits