Skip to main content
Pharos

Changelog: September 2026

Latest releases and all monthly archives
  1. Week #39

    411 commits

    Holistic review makes unavailable data fail closed, a false VCHF depeg brings majority pool rules, and yield hits 8.45.

    • Fail-closed data contractssecurity

      Review waves replaced optimistic defaults across supply, DEWS, yield, freeze, blacklist and route-status producers: an unavailable observation publishes null and a reason, never zero, healthy or open.

    • Six versions since 9.5: chain maturity needs dated citations, assurance expires 100 days after period end, and Noon's USN/sUSN corrections were verified on-chain first. USDT settles at 74/B.

    • Thirteen versions: lane-scoped DEX corroboration, guarded recovery routes for BD, AUDm, legacy USDv and USDaf, coherence-guarded pool admission, fail-closed DEX publication and Solayer sUSD NAV pricing.

    • Absent evidence no longer scores as calm, and after two dormant pools held a false VCHF depeg open, pool challengers need a protocol-group majority to confirm a depeg or veto recovery.

    • Pendle PT markets stop posing as native wrapper yield; sources must now prove asset identity and holder return, missing score evidence withholds PYS, and detail cards show where yield comes from.

    • Liquidity 6.8 adds pair-price coherence at pool admission, backstop 4.44 requires same-run route evidence for a live status, and PSI 3.62 replays supply as-of the day.

    • Reserve and conservation auditscoverage

      Seven drifted adapters realigned, DOC and USD3 re-pinned after upgrades, August KPMG reports admitted for Paxos products, and mint/burn conservation gains four waves plus laws for USDT, OUSD and USDO.

    • Cron and delivery reliabilityinfra

      Retention and reads are bounded, degraded runs name a reason, one D1 overload no longer cascades into red crons, DEX bodies are capped after a 172 MB kill, and Telegram delivery gains fencing.

    • Dwellir RPC trialinfra

      Dwellir sponsors a year of RPC access as a metered last-position operator across 29 EVM endpoints, watched by an hourly parity monitor against incumbent operators; Arc joins the chain registry.

    • Three coins frozencoverage

      AZND and XTUSD freeze after a wind-down and a stale official market, cdxUSD after its peg broke to $0.2457; AZND's $16.3M was a token count, so the aggregate drop is an honest cliff.

    • Deduplication and test lanescoverage

      Shared contracts got single owners and oversized V9, Telegram and yield modules split leafward, cutting duplicated lines from 7,568 to 3,073; nine test lanes replaced pins with outcomes.

    • Registry and funding ledgercoverage

      Twenty pre-launch coins refreshed and two bank-led programmes tracked, taking the registry to 409; msUSD's September depeg low is annotated and two USDC receipts reconciled into the funding ledger.

    Show commits
    • 0f036df7 Document yield v8.45 hardening, run quality and rollout phases
    • 1348dbec Show where yield comes from on the stablecoin detail card
    • 2c4cd040 Serve yield freshness honestly behind a wire-compatible rollout
    • ac727945 Isolate yield publication failures and report run quality per R4
    • b653a695 Fail closed on yield identity, derived rates and incomplete score evidence (yield v8.45)
    • b861ae54 data(pre-launch): weekly refresh across 20 coins; track two bank-led programmes
    • ed5bd5c8 data(annotations): pin msUSD September depeg low from annotation sweep
    • 124e023a funding(ledger): record Base founder USDC and Ethereum USDC donation
    • 63f93815 Keep the cron-derived cause code list module-private
    • 0f2d1585 Drop the solomon-protocol adapter mapping review now that the lane is parked
    • d9445050 Record pricing methodology v6.34-v6.36 for tonight's price-lane repairs
    • 4ba7920f Restore missing and low-confidence price lanes
    • e83b6b34 Repoint Base Uniswap v3/v4 subgraphs that silently stopped answering
    • 7027d53f Serve liquidity health and degraded-cron causes from live cron runs
    • 53d46857 Stop legacy USDv double counting and quiet two reserve error loops
    • 16aecc90 Re-pin DOC and USD3 reserve reads after same-night contract upgrades
    • 29227592 Repair seven reserve adapters that drifted from their upstreams
    • 05023b95 Admit August assurance reports for Paxos products and AUDX
    • 13dc8736 Keep crvUSD's score-grade reserves when on-chain reads time out
    • 044ee9be test(yield): cover on-chain failover through the pinned pool, not Layer 3

    … and 391 more

  2. Week #38

    175 commits

    A 128-commit codebase review hardens every Worker boundary, and Safety Score 9.5 rates PAXG on executable notional.

    • Codebase review hardeningsecurity

      P0 to P4 of the 2026-09-16 review: Zod-validated Worker JSON boundaries, fail-closed depeg, DEWS, status, reserve and pricing paths, bounded retention, guardrails against hidden D1 mutations, and 30 dedup commits.

    • Exit materiality tests measured executable notional before output retention (PAXG NR to 65/B-), a share rounding past 100% no longer halts publication, and the live-reserve coverage floor recalibrates from 90% to 60%.

    • CHFm, CADm and COPm recover through guarded Mento quotes and dEURO through its EURC redemption bridge; hourly corroboration runs before publication, and a lone DEX protocol needs an agreeing hard source.

    • Staged pool memory becomes a per-source registry, so a pool's family, cap treatment and V9 exit-evidence class no longer depend on which lane carried it this hour; the unresponsive BSC PancakeSwap subgraph is dropped.

    • Reserve feed campaigncoverage

      The 22 degraded or erroring feeds were reworked: CADD moves to the August Baker Tilly report, APX excludes reconciled own claims, OUSG, mTBILL and RLUSD gain dated composition producers, and KRWQ units are corrected.

    • BUIDL tracks both registered Ethereum share classes, nine incompatible supply definitions are rejected with reasons, EURCV and alUSD scope mismatches are explained, and USDm capacity binds to verified Mento V3 pools.

    • Release and rendering repairsinfra

      The Pages prerender broken by a null-prototype logo map and the release workflow's invalid job-level env are fixed; dates render in UTC, DEWS visuals follow the canonical ladder, and API schemas state their scales.

    Show commits
    • 8ce1d493 fix(v9): score exit materiality before retention
    • 251d4b8f fix(reserves): honor latest-state freshness
    • b694bacb fix(reserves): reconcile mTBILL totals by scope
    • 28c78bcb fix(v9): clamp backing material share percentages
    • 93742faf feat(dex-liquidity): per-source pool registry with hourly step counters (Liquidity Score v6.5)
    • a7e1174d fix(dex-liquidity): drop the BSC PancakeSwap subgraph that never answers
    • 0240a8d1 Recalibrate V9 live-reserve coverage floor to 60%
    • 877c1b0b Accept real upstream shapes in InfiniFi and Quantoz reserve adapters
    • e75aed08 Read legacy V9 attempt records without quarantine causes
    • a624c2ef Align logos mocks with getLogoSrc cutover
    • 552d4867 Add logo registry reserved-key regression test
    • cbf813e0 Publish percentage-point scales in API schemas
    • cbbe0337 Retry held freeze rows before bounded escalation
    • d1a67d8c Surface rejected Tape rows in timeline totals
    • b100b854 Restore atomic held-publication CAS
    • c8a22c59 Guard all logo registry lookups
    • 8aca63e0 Track every heredoc opened on a shell line
    • 17dc344d Allow null stablecoin summary price sources
    • 6a60f330 Preserve depeg counts migration guidance
    • b6af46cd Preserve KRWQ raw amount whitespace handling

    … and 155 more

  3. Week #37

    147 commits

    Live reserve sync is rebuilt end to end while a free, keyless Safety Score feed opens on the API.

    • Live reserve rebuildcoverage

      Phases 0 to 4 of the live reserve upgrade: valuation defects fixed (USD0 decimals, fxUSD pricing), hash-pinned assurance reports for PYUSD, USDG, USDP, GUSD, BRLA and FDUSD, and Sui, Tezos, Cardano and Hedera transports.

    • Inherited upstream reserve gaps count once per cause (open data points 1,280 to 733 on replay), unmapped live reserves cannot restore curated dependency weights, and DDR 4.5 reads the published mint posture.

    • Yield 8.43feature

      Non-USD hurdles re-base onto the USD risk-free rate so a peg paying its own inflation earns no excess-yield credit (wiTRY 44 to 6); PYS is reframed as pay-for-risk with zone chips and an explicit non-recommendation.

    • API access lanessecurity

      GET /api/safety-grades serves one score and grade per coin without a key, self-serve key issuance is closed, and donors above USD 10 claim a non-expiring key by signing a Sign-In-With-Ethereum message.

    • Security remediationsecurity

      A 57-finding review closed provider identity, freshness, supply completeness, scoring provenance and CI trust-boundary gaps; bad Chainlink rounds become evidence, and future or non-finite timestamps fail closed.

    • Test and docs auditinfra

      Suites across worker, shared, src and scripts moved from SQL-shaped mocks and prose pins to SQLite-backed, executed-effect assertions; a corpus audit corrected 103 source-verified drift claims across 42 documents.

    • Liquidity Score 6.4 keeps staged pools for 14 days with prices pinned to 24 hours so coverage stops flip-flopping on crawl timing; 19 GeckoTerminal-only chains gained CoinGecko onchain ids for census.

    • Site and publicationdesign

      Resources split into four nav columns, the palette ranks page intents above coin matches, the digest exposes its monthly archive, automatic X posting of daily graphics was retired, and versions cap at two decimals.

    Show commits
    • db308247 fix: refresh reviewed Paxos discovery module pins
    • 0348583b fix: expose partial supplemental yield failures in cron status
    • e97a52d9 fix: resolve chain labels in mint burn reconciliation
    • b51581c7 test: align release fixtures with security remediation contracts
    • be1b7b65 refactor: keep security remediation helpers module-local
    • 1ad48789 docs: keep security release references reproducible
    • e1fbca92 fix(security): remediate reviewed application and data integrity findings
    • 897304ea chore(yield): state the NAV-anchor fallback's real trigger
    • 40366a43 fix(yield): let NAV-oracle anchors read the daily tier past the raw window
    • e9115d2a docs(yield): record the issuer-rail eligibility rule and its third-party boundary
    • c2c68bed fix(yield): remove the D1 query-cost regressions and bound the remaining deletes
    • a7d7c2db fix(yield): stop counting issuer-native rails against venue-tier coverage
    • 1868ab43 fix(yield): bound the history retention drain so it cannot blow the D1 CPU limit
    • c6e41f78 docs(yield): attribute BOLD's drop to the source fix, not the history rewrite
    • b199b450 docs(yield): record the finalized v8.43 movement, not the replayed estimate
    • a1b73982 fix(yield): never attribute movement across a methodology version boundary
    • bca7bb2c chore(yield): satisfy the env-contract doc block and critical-coverage enrollment
    • 3e0eef52 refactor(yield): move the benchmark freshness classifier into shared
    • a746405c test(yield): dedupe test scaffolding and wire the workbench-fallback resolver
    • fd5d3e63 fix(yield): close the review findings before release

    … and 127 more

  4. Week #36

    187 commits

    Global navigation and the depeg route are rebuilt while the browser registry drops from 1.52 MB to 247 KB.

    • Safety Score V9 moved 9.45 to 9.461: an external validator quorum now counts as a named authority, and evaluator defects on bridge joins and commodity exits were corrected without adding evidence.

    • Liquidity Score 6.2 and 6.3 pin the LUSD/3Crv metapool for on-chain get_dy_underlying quotes and collapse Curve registry aliases by address; exact Uniswap V4 pool identities were recovered from DefiLlama.

    • Navigation and depeg rebuilddesign

      Global navigation became a quick rail plus four disclosure menus with real hover intent, mobile categories drill down instead of expanding accordions, and the depeg route was rebuilt around a signature hero.

    • Lighter first loadinfra

      The browser stablecoin registry split into a 247 KB list plus per-coin detail projections, down from 1.52 MB. The immutable shell separated from the interactive provider, and below-fold detail lanes now load on viewport.

    • Worker cost dietinfra

      One cron sentinel replaced seven watchdog jobs, telemetry writes dropped to 60 second heartbeats, /api/health serves the 15-minute snapshot with operator fields on /api/status, and V9 capture bodies moved to R2.

    • Digest publicationfeature

      A quarantine registry stops a retracted daily claim from re-entering the weekly recap, editions moved to Opus 5 at a bounded ceiling for 36% less spend per day, and a watchdog covers Telegram media and the weekly X post.

    • Pricing 6.215 added canonical sUSDS and sUSDe vault NAV coverage, redemption backstop 4.42 requires current depeg evidence for market-implied impairment, and Lisk, Asset Chain and Chiliz entered the chain registry.

    • Repo gates and routinginfra

      One PR lane manifest feeds both check:pr and the GitHub workflow, coverage shards derive from import ownership, API reference sections generate from OpenAPI, and agent routing collapsed to 16 mappings.

    Show commits
    • c8c229c9 fix(dex): publish measurement targets only after accepted liquidity
    • 26c56988 fix(status): reduce V9 projection allocation and expose probe progress
    • 32272a49 fix(cron): gate V9 shadow on a settled compiler identity
    • 561f3262 fix(pricing): preserve hourly observations through publication
    • 358ee118 fix(yield): retry transient D1 overload during retention
    • 67aa84d6 fix(reserves): recover verified reports and on-chain observations
    • d40058f3 docs(safety-score): record remaining Maple NAV admission prerequisites
    • a7fa4998 test(safety-score): verify the admitted XAUT custody review
    • 9b5ba072 docs(safety-score): accept 25 verified production fact closures
    • 3371272c fix(safety-score): identify five Nest representation controllers
    • f9a98466 docs(safety-score): preserve the parallel Backing review outcomes
    • 5e185cb6 fix(safety-score): record XAUT custody recovery limitations
    • 71168d46 fix(safety-score): identify remaining sfrxUSD representation controllers
    • dee44d5e fix(safety-score): pin BRL1 August reserves and custody evidence
    • 40efb990 test(safety-score): track the reviewed bridge-controller inventory
    • ff42c59b docs(safety-score): preserve bridge and exact-pool review outcomes
    • 86d78ff1 fix(dex): recover exact Uniswap V4 pool identities from DefiLlama
    • ce8710fc fix(safety-score): identify sfrxUSD bridge controllers on 19 chains
    • e889542a fix(reserves): admit AUDX's reviewed July assurance report
    • 18b2566c docs(safety-score): record reviewed reduction campaign decisions

    … and 167 more