Chain Health Score Changelog
Full version history of Chain Health Score methodology decisions, from v1.0 to v1.7.
What This Controls
Chain Health Score Changelog version history
Use this changelog to trace how Pharos changed the related scoring, data-source, threshold, or interpretation rules over time. The latest card below is the current public contract; older entries are retained so historical charts and citations can be read against the rules active at the time.
Primary References
Latest Version
Composite published at 95% peg coverage
Chain Health publishes the composite when peg evidence covers at least 95% of positive chain supply, instead of requiring every holding to carry an observed peg price; below 95% the composite stays NR.
Impact Snapshot
- The composite requires non-null quality and peg factors plus peg coverage that is complete, or partial with coverage ≥ 0.95; unavailable coverage or partial coverage below 0.95 keeps health score and band null
- Bound: peg weight is 0.20, so an unobserved share of at most 5% can move the observed-only peg factor by at most 5 points and the composite by at most 1 point
- No imputation and no neutral 50: the peg factor stays observed-only and the unobserved share remains published in pegStabilityCoverage beside the composite
- Ethereum, Tron, Base, Polygon, Monad, Sonic, Celo, Scroll, and Plume, withheld under v1.6 by small unpriced holdings (Ethereum: $5.9M of $148.7B), regain a composite; Hemi at 15.9% peg coverage stays NR
v1.7Sep 28, 2026Composite published at 95% peg coverage
Chain Health publishes the composite when peg evidence covers at least 95% of positive chain supply, instead of requiring every holding to carry an observed peg price; below 95% the composite stays NR.
- The composite requires non-null quality and peg factors plus peg coverage that is complete, or partial with coverage ≥ 0.95; unavailable coverage or partial coverage below 0.95 keeps health score and band null
- Bound: peg weight is 0.20, so an unobserved share of at most 5% can move the observed-only peg factor by at most 5 points and the composite by at most 1 point
- No imputation and no neutral 50: the peg factor stays observed-only and the unobserved share remains published in pegStabilityCoverage beside the composite
- Ethereum, Tron, Base, Polygon, Monad, Sonic, Celo, Scroll, and Plume, withheld under v1.6 by small unpriced holdings (Ethereum: $5.9M of $148.7B), regain a composite; Hemi at 15.9% peg coverage stays NR
DetailsHide details
Composite published at 95% peg coverage
Chain Health publishes the composite when peg evidence covers at least 95% of positive chain supply, instead of requiring every holding to carry an observed peg price; below 95% the composite stays NR.
- The composite requires non-null quality and peg factors plus peg coverage that is complete, or partial with coverage ≥ 0.95; unavailable coverage or partial coverage below 0.95 keeps health score and band null
- Bound: peg weight is 0.20, so an unobserved share of at most 5% can move the observed-only peg factor by at most 5 points and the composite by at most 1 point
- No imputation and no neutral 50: the peg factor stays observed-only and the unobserved share remains published in pegStabilityCoverage beside the composite
- Ethereum, Tron, Base, Polygon, Monad, Sonic, Celo, Scroll, and Plume, withheld under v1.6 by small unpriced holdings (Ethereum: $5.9M of $148.7B), regain a composite; Hemi at 15.9% peg coverage stays NR
Impact Notes
- The composite requires non-null quality and peg factors plus peg coverage that is complete, or partial with coverage ≥ 0.95; unavailable coverage or partial coverage below 0.95 keeps health score and band null
- Bound: peg weight is 0.20, so an unobserved share of at most 5% can move the observed-only peg factor by at most 5 points and the composite by at most 1 point
- No imputation and no neutral 50: the peg factor stays observed-only and the unobserved share remains published in pegStabilityCoverage beside the composite
- Ethereum, Tron, Base, Polygon, Monad, Sonic, Celo, Scroll, and Plume, withheld under v1.6 by small unpriced holdings (Ethereum: $5.9M of $148.7B), regain a composite; Hemi at 15.9% peg coverage stays NR
- Peg factor math, the 50% rated-supply quality gate, factor weights, and bands are unchanged
v1.6Sep 28, 2026Observed-only peg factors and complete-coverage health
Chain Health removes neutral-50 peg imputation and withholds the composite unless peg evidence covers every positive-supply holding.
- Zero observed peg supply publishes a null peg factor and null health score/band
- Partial coverage publishes the observed-supply-weighted peg factor plus full-universe coverage, but no composite; no partial-coverage threshold is assumed
- Fully observed chains retain the existing formula and weights; neutralImputedSupplyUsd is zero for new payloads
- Nominal par references are not observed peg evidence; their supply remains in the coverage denominator
DetailsHide details
Observed-only peg factors and complete-coverage health
Chain Health removes neutral-50 peg imputation and withholds the composite unless peg evidence covers every positive-supply holding.
- Zero observed peg supply publishes a null peg factor and null health score/band
- Partial coverage publishes the observed-supply-weighted peg factor plus full-universe coverage, but no composite; no partial-coverage threshold is assumed
- Fully observed chains retain the existing formula and weights; neutralImputedSupplyUsd is zero for new payloads
- Nominal par references are not observed peg evidence; their supply remains in the coverage denominator
Impact Notes
- Zero observed peg supply publishes a null peg factor and null health score/band
- Partial coverage publishes the observed-supply-weighted peg factor plus full-universe coverage, but no composite; no partial-coverage threshold is assumed
- Fully observed chains retain the existing formula and weights; neutralImputedSupplyUsd is zero for new payloads
- Nominal par references are not observed peg evidence; their supply remains in the coverage denominator
v1.5Aug 10, 2026Not-rated supply excluded from chain quality
Chain Health quality now averages Safety Scores over rated supply only instead of imputing a 40 for not-rated supply, and the peg-stability factor derives deviation from the shared depeg-signal primitive rather than a local formula copy.
- Not-rated supply is excluded from both the numerator and the denominator of the `quality` factor; the 50% rated-supply coverage gate is now the only not-rated mechanism, and below it the whole composite stays `null`
- Removed the implicit `40` (the D-grade threshold) previously assigned to unrated coins, an imputed risk judgement Pharos had not made
- 5 of 105 published chains move: manta 71 → 88, stacks 82 → 90, megaeth 50 → 54, metis 87 → 89, cardano 71 → 72 quality; health scores move by at most 5 points and no chain changes health band
- Peg stability now calls the shared `deriveDepegSignal(...)` used by the depeg pipeline; the derivation is numerically identical (unrounded bps) and no chain's `pegStability` changed
DetailsHide details
Not-rated supply excluded from chain quality
Chain Health quality now averages Safety Scores over rated supply only instead of imputing a 40 for not-rated supply, and the peg-stability factor derives deviation from the shared depeg-signal primitive rather than a local formula copy.
- Not-rated supply is excluded from both the numerator and the denominator of the `quality` factor; the 50% rated-supply coverage gate is now the only not-rated mechanism, and below it the whole composite stays `null`
- Removed the implicit `40` (the D-grade threshold) previously assigned to unrated coins, an imputed risk judgement Pharos had not made
- 5 of 105 published chains move: manta 71 → 88, stacks 82 → 90, megaeth 50 → 54, metis 87 → 89, cardano 71 → 72 quality; health scores move by at most 5 points and no chain changes health band
- Peg stability now calls the shared `deriveDepegSignal(...)` used by the depeg pipeline; the derivation is numerically identical (unrounded bps) and no chain's `pegStability` changed
Impact Notes
- Not-rated supply is excluded from both the numerator and the denominator of the `quality` factor; the 50% rated-supply coverage gate is now the only not-rated mechanism, and below it the whole composite stays `null`
- Removed the implicit `40` (the D-grade threshold) previously assigned to unrated coins, an imputed risk judgement Pharos had not made
- 5 of 105 published chains move: manta 71 → 88, stacks 82 → 90, megaeth 50 → 54, metis 87 → 89, cardano 71 → 72 quality; health scores move by at most 5 points and no chain changes health band
- Peg stability now calls the shared `deriveDepegSignal(...)` used by the depeg pipeline; the derivation is numerically identical (unrounded bps) and no chain's `pegStability` changed
- Non-positive or non-finite prices now score neutral `50` like a missing price instead of scoring `0` or poisoning the chain average with `NaN`
v1.4Jun 12, 2026L2BEAT chain-risk environment scoring
Matched L2BEAT scaling projects now score the Chain Environment factor from a static L2BEAT stage and risk snapshot before falling back to the legacy Pharos tier model for unmatched chains.
- Added explicit Pharos chain ID to L2BEAT project aliases and a static L2BEAT snapshot sourced from the scaling summary API
- Matched chains derive Chain Environment from L2BEAT stage plus Sequencer Failure, State Validation, Data Availability, Exit Window, and Proposer Failure risk sentiments
- Unmatched chains continue to use the existing tier mapping: tier 1 = 100, tier 2 = 60, tier 3 = 20
- Safety Score chainTier and deploymentModel gain L2BEAT audit helpers only; live Safety Score outputs are unchanged
DetailsHide details
L2BEAT chain-risk environment scoring
Matched L2BEAT scaling projects now score the Chain Environment factor from a static L2BEAT stage and risk snapshot before falling back to the legacy Pharos tier model for unmatched chains.
- Added explicit Pharos chain ID to L2BEAT project aliases and a static L2BEAT snapshot sourced from the scaling summary API
- Matched chains derive Chain Environment from L2BEAT stage plus Sequencer Failure, State Validation, Data Availability, Exit Window, and Proposer Failure risk sentiments
- Unmatched chains continue to use the existing tier mapping: tier 1 = 100, tier 2 = 60, tier 3 = 20
- Safety Score chainTier and deploymentModel gain L2BEAT audit helpers only; live Safety Score outputs are unchanged
Impact Notes
- Added explicit Pharos chain ID to L2BEAT project aliases and a static L2BEAT snapshot sourced from the scaling summary API
- Matched chains derive Chain Environment from L2BEAT stage plus Sequencer Failure, State Validation, Data Availability, Exit Window, and Proposer Failure risk sentiments
- Unmatched chains continue to use the existing tier mapping: tier 1 = 100, tier 2 = 60, tier 3 = 20
- Safety Score chainTier and deploymentModel gain L2BEAT audit helpers only; live Safety Score outputs are unchanged
v1.3Jun 6, 2026Active-only inputs and stale report-card dependency
Live Chain Health now uses the same active/non-archived input universe as the daily chain-supply snapshot and degrades its report-card dependency when cached Safety Scores were computed with stale report-card inputs.
- `GET /api/chains` excludes frozen, defunct, and non-active stablecoins before deriving peg rates or aggregating chain supply
- The report-card dependency now reports `degraded` when `report_card_cache.degradedInputs.inputsStale` is true, instead of marking stale-input scores as fresh
- Health scores can remain computed from the cached score map, but response freshness and headers now surface the degraded upstream report-card condition
DetailsHide details
Active-only inputs and stale report-card dependency
Live Chain Health now uses the same active/non-archived input universe as the daily chain-supply snapshot and degrades its report-card dependency when cached Safety Scores were computed with stale report-card inputs.
- `GET /api/chains` excludes frozen, defunct, and non-active stablecoins before deriving peg rates or aggregating chain supply
- The report-card dependency now reports `degraded` when `report_card_cache.degradedInputs.inputsStale` is true, instead of marking stale-input scores as fresh
- Health scores can remain computed from the cached score map, but response freshness and headers now surface the degraded upstream report-card condition
Impact Notes
- `GET /api/chains` excludes frozen, defunct, and non-active stablecoins before deriving peg rates or aggregating chain supply
- The report-card dependency now reports `degraded` when `report_card_cache.degradedInputs.inputsStale` is true, instead of marking stale-input scores as fresh
- Health scores can remain computed from the cached score map, but response freshness and headers now surface the degraded upstream report-card condition
v1.2Apr 7, 2026Two-bucket backing diversity after active taxonomy cleanup
Removed the standalone algorithmic bucket from the active backing taxonomy after reclassifying the remaining reserve-backed cases. Chain Health backing diversity now measures only the live RWA-backed vs crypto-backed split.
- Reclassified FPI, cUSD, and CEUR out of the legacy algorithmic bucket based on their reserve backing
- Active backing filters and taxonomy pages now expose only RWA-backed and crypto-backed cohorts
- Backing diversity now normalizes across the two active backing types, so an even RWA/crypto split scores 100
DetailsHide details
Two-bucket backing diversity after active taxonomy cleanup
Removed the standalone algorithmic bucket from the active backing taxonomy after reclassifying the remaining reserve-backed cases. Chain Health backing diversity now measures only the live RWA-backed vs crypto-backed split.
- Reclassified FPI, cUSD, and CEUR out of the legacy algorithmic bucket based on their reserve backing
- Active backing filters and taxonomy pages now expose only RWA-backed and crypto-backed cohorts
- Backing diversity now normalizes across the two active backing types, so an even RWA/crypto split scores 100
Impact Notes
- Reclassified FPI, cUSD, and CEUR out of the legacy algorithmic bucket based on their reserve backing
- Active backing filters and taxonomy pages now expose only RWA-backed and crypto-backed cohorts
- Backing diversity now normalizes across the two active backing types, so an even RWA/crypto split scores 100
v1.1Mar 16, 2026Chain environment factor and weight rebalance
Added a fifth health factor, Chain Environment, which rates chain infrastructure quality via a resilience tier system. Rebalanced weights to reduce backing diversity influence and give chain quality 20% of the composite.
- New Chain Environment factor (20% weight): tier 1 = 100 (Ethereum), tier 2 = 60 (default), tier 3 = 20 (PulseChain, Harmony, etc.)
- Backing diversity weight reduced from 15% to 10%
- Quality weight reduced from 35% to 30%
- Concentration weight reduced from 25% to 20%
DetailsHide details
Chain environment factor and weight rebalance
Added a fifth health factor, Chain Environment, which rates chain infrastructure quality via a resilience tier system. Rebalanced weights to reduce backing diversity influence and give chain quality 20% of the composite.
- New Chain Environment factor (20% weight): tier 1 = 100 (Ethereum), tier 2 = 60 (default), tier 3 = 20 (PulseChain, Harmony, etc.)
- Backing diversity weight reduced from 15% to 10%
- Quality weight reduced from 35% to 30%
- Concentration weight reduced from 25% to 20%
Impact Notes
- New Chain Environment factor (20% weight): tier 1 = 100 (Ethereum), tier 2 = 60 (default), tier 3 = 20 (PulseChain, Harmony, etc.)
- Backing diversity weight reduced from 15% to 10%
- Quality weight reduced from 35% to 30%
- Concentration weight reduced from 25% to 20%
- Peg stability weight reduced from 25% to 20%
- Chains with poor infrastructure penalized: e.g. PulseChain dropped from #1 healthiest to mid-table
- f6978ec
v1.0Mar 16, 2026ReconstructedInitial Chain Health Score release
Launched per-chain health scoring with four factors: quality (35%), concentration (25%), peg stability (25%), and backing diversity (15%). Exposed via /api/chains and the /chains/ leaderboard.
- Introduced chain health score as a 0-100 composite across four factors
- Quality: supply-weighted average of Pharos Safety Scores (null if < 50% coverage)
- Concentration: HHI-based metric rewarding stablecoin diversity
- Peg stability: supply-weighted peg proximity across all chain stablecoins
DetailsHide details
Initial Chain Health Score release
Launched per-chain health scoring with four factors: quality (35%), concentration (25%), peg stability (25%), and backing diversity (15%). Exposed via /api/chains and the /chains/ leaderboard.
- Introduced chain health score as a 0-100 composite across four factors
- Quality: supply-weighted average of Pharos Safety Scores (null if < 50% coverage)
- Concentration: HHI-based metric rewarding stablecoin diversity
- Peg stability: supply-weighted peg proximity across all chain stablecoins
Impact Notes
- Introduced chain health score as a 0-100 composite across four factors
- Quality: supply-weighted average of Pharos Safety Scores (null if < 50% coverage)
- Concentration: HHI-based metric rewarding stablecoin diversity
- Peg stability: supply-weighted peg proximity across all chain stablecoins
- Backing diversity: Shannon entropy across the backing taxonomy active at the time
- Health bands: robust (80-100), healthy (60-79), mixed (40-59), fragile (20-39), concentrated (0-19)
- Added /api/chains endpoint, /chains/ leaderboard page, and /chains/[chain]/ detail pages
- 003eafd