Skip to main content
Pharos
PHAROS

Stability Index Changelog

Full version history of PSI methodology decisions, from v1.0 to v3.2.

Latest Version

v3.2Mar 23, 2026

Fail-closed depeg input availability

PSI no longer publishes a fresh sample when the active-depeg input query is unavailable, preventing false continuity from an incomplete core dependency.

Impact Snapshot

  • The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
  • Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
  • Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
v3.2Mar 23, 2026

Fail-closed depeg input availability

PSI no longer publishes a fresh sample when the active-depeg input query is unavailable, preventing false continuity from an incomplete core dependency.

  • The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
  • Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
  • Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
Details

Impact Notes

  • The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
  • Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
  • Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
0 commits
    v3.1Mar 23, 2026

    Open-depeg replay-price fallback

    Active depegs now stay in PSI when the current stablecoins snapshot temporarily loses a usable price but a recent replay-safe price-cache entry still exists.

    • Severity and breadth now fall back to the last replay-safe positive `price_cache` value for already-open depegs when the current stablecoins snapshot price is missing
    • Replay fallback is capped to recent cache entries (6-hour TTL) rather than unbounded historical prices
    • Prevents transient contributor/sample omissions during price-validation churn without changing the PSI formula, caps, or bands
    Details

    Impact Notes

    • Severity and breadth now fall back to the last replay-safe positive `price_cache` value for already-open depegs when the current stablecoins snapshot price is missing
    • Replay fallback is capped to recent cache entries (6-hour TTL) rather than unbounded historical prices
    • Prevents transient contributor/sample omissions during price-validation churn without changing the PSI formula, caps, or bands
    0 commits
      v3.0Mar 1, 2026Reconstructed

      DEWS stress breadth component

      Added DEWS-derived stress breadth as an explicit PSI component to capture broad non-depeg stress.

      • Formula changed to: 100 - severity - breadth - stressBreadth + trend
      • New stressBreadth cap of 5 points
      • Cron now reads latest DEWS bands (ALERT/WARNING/DANGER) to derive stress breadth
      Details

      Impact Notes

      • Formula changed to: 100 - severity - breadth - stressBreadth + trend
      • New stressBreadth cap of 5 points
      • Cron now reads latest DEWS bands (ALERT/WARNING/DANGER) to derive stress breadth
      Reconstructed from git commit history.1 commit
      • dcdefde
      v2.1Feb 27, 2026Reconstructed

      Trend hardening and retention safety

      Hardened trend input handling and operationalized rolling retention for PSI samples.

      • NaN/Infinity trend values now treated as 0 before clamp
      • No formula change, but edge-case score corruption prevented
      • Sample retention/pruning standardized to 90 days
      Details

      Impact Notes

      • NaN/Infinity trend values now treated as 0 before clamp
      • No formula change, but edge-case score corruption prevented
      • Sample retention/pruning standardized to 90 days
      Reconstructed from git commit history.2 commits
      • 76aa8c6
      • 74aa1cd
      v2.0Feb 26, 2026Reconstructed

      Removed freezes, rebalanced caps

      Major methodology revision removing freezes and reallocating penalty capacity.

      • Removed freezes component from formula
      • Severity cap increased 60 -> 68
      • Breadth cap increased 15 -> 17
      • Formula became: 100 - severity - breadth + trend
      Details

      Impact Notes

      • Removed freezes component from formula
      • Severity cap increased 60 -> 68
      • Breadth cap increased 15 -> 17
      • Formula became: 100 - severity - breadth + trend
      Reconstructed from git commit history.1 commit
      • bc2cfcf
      v1.3Feb 26, 2026Reconstructed

      Sample architecture and 24h average model

      PSI moved to sample-first storage with daily snapshots and 24h average surfaced as the primary displayed signal.

      • Introduced stability_index_samples table and daily snapshot aggregation
      • API and UI switched to emphasize 24h average PSI
      • Historical backfill path adjusted for peak-deviation realism
      Details

      Impact Notes

      • Introduced stability_index_samples table and daily snapshot aggregation
      • API and UI switched to emphasize 24h average PSI
      • Historical backfill path adjusted for peak-deviation realism
      Reconstructed from git commit history.2 commits
      • 9508e29
      • ad75f4f
      v1.2Feb 25, 2026Reconstructed

      15-minute chained compute + depeg depreciation/dedup

      Operational and methodological upgrade to live 15-minute PSI with chronic-depeg depreciation and per-coin deduplication.

      • PSI compute moved to chained 15-minute cron after stablecoin sync
      • Introduced chronic-depeg depreciation (grace 30d, decay 120d, floor 25%)
      • Active depegs deduped per coin (worst current bps, earliest start for age)
      Details

      Impact Notes

      • PSI compute moved to chained 15-minute cron after stablecoin sync
      • Introduced chronic-depeg depreciation (grace 30d, decay 120d, floor 25%)
      • Active depegs deduped per coin (worst current bps, earliest start for age)
      Reconstructed from git commit history.4 commits
      • 8acaa7d
      • a79049d
      • 2dfb975
      • 615256a
      v1.1Feb 25, 2026Reconstructed

      Current deviation semantics

      Severity began using live current deviation rather than event peak deviation for active depegs.

      • Live severity became recovery-sensitive instead of peak-anchored
      • Backfill behavior later diverged and was subsequently tuned
      Details

      Impact Notes

      • Live severity became recovery-sensitive instead of peak-anchored
      • Backfill behavior later diverged and was subsequently tuned
      Reconstructed from git commit history.1 commit
      • 14c75e7
      v1.0Feb 25, 2026Reconstructed

      Initial PSI release

      Launched PSI compute, API, cron persistence, and frontend integration.

      • Initial formula: 100 - severity - breadth - freezes + trend
      • Initial caps: severity 60, breadth 15, freezes 10
      • Condition bands introduced
      Details

      Impact Notes

      • Initial formula: 100 - severity - breadth - freezes + trend
      • Initial caps: severity 60, breadth 15, freezes 10
      • Condition bands introduced
      Reconstructed from git commit history.5 commits
      • c4c7caa
      • c21a6bd
      • 5eaf440
      • 6b3e7e5
      • a3f2b53