---
title: "Pricing Pipeline Changelog"
canonical: "https://pharos.watch/methodology/pricing-pipeline-changelog/archive/v4/"
description: "Pricing Pipeline Changelog - Pharos methodology version history."
---

# Pricing Pipeline Changelog

[All versions](https://pharos.watch/methodology/pricing-pipeline-changelog/)

<a id="changelog-v-4-38"></a>

## v4.38 - Corroborated severe-depeg pool challenge protection

**Effective:** 2026-04-15

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-37"></a>

## v4.37 - Severe-depeg corroboration continuity through validation

**Effective:** 2026-04-15

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-36"></a>

## v4.36 - Blocked Binance host accounting

**Effective:** 2026-04-15

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-35"></a>

## v4.35 - No-candidate Jupiter breaker recovery

**Effective:** 2026-04-15

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-34"></a>

## v4.34 - Binance host failover for Worker egress

**Effective:** 2026-04-15

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-33"></a>

## v4.33 - Jupiter official gateway fallback

**Effective:** 2026-04-15

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-32"></a>

## v4.32 - Provider diagnostics and authoritative fallback gating

**Effective:** 2026-04-14

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-31"></a>

## v4.31 - Curated-contract price fallback and USDnr M0 inheritance

**Effective:** 2026-04-13

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-3"></a>

## v4.3 - CoinGecko simple-price upstream freshness gate

**Effective:** 2026-04-11

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-2"></a>

## v4.2 - Inherited wM pricing for M0 extension assets

**Effective:** 2026-04-10

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-1"></a>

## v4.1 - Split DexScreener exact-vs-search breaker accounting

**Effective:** 2026-04-08

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-0"></a>

## v4.0 - DexScreener request-budget walk-through for skipped fallback candidates

**Effective:** 2026-04-08

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

Origin: Contemporaneous release record

Commits: Commit provenance not recorded
