Skip to main content
Pharos

Pricing Pipeline Changelog: v2 archive

Historical release evidence. Return to current versions and the complete history index.

What this controls

Pricing Pipeline Changelog: v2 archive version history

Use this changelog to trace how Pharos changed the related scoring, data-source, threshold, or interpretation rules over time. Entries record the contract active at each release; archived rules are retained so historical charts and citations can be read against the rules active at the time.

Latest version

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.

Impact snapshot

  • 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
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
Commit provenance not recorded
    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
    Commit provenance not recorded
      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
      Commit provenance not recorded
        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
        Commit provenance not recorded
          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
          Commit provenance not recorded
            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
            Commit provenance not recorded
              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
              Commit provenance not recorded
                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, fixing 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, fixing 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
                Commit provenance not recorded
                  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
                  Commit provenance not recorded
                    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
                    Commit provenance not recorded