Skip to content

rwa-yield-accuracy Sprint 4: activate USTB + OUSG, flip bench live#1356

Merged
Flotapponnier merged 1 commit into
devfrom
hotfix/thirdweb-tripwire-relax
Jul 24, 2026
Merged

rwa-yield-accuracy Sprint 4: activate USTB + OUSG, flip bench live#1356
Flotapponnier merged 1 commit into
devfrom
hotfix/thirdweb-tripwire-relax

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Summary

Bench 089 goes from cohort=1 (USDY only) to cohort=3 live by activating on-chain NAV oracles for USTB and OUSG. Status flipped from `draft` → `live`.

  • USTB: reads Superstate's Chainlink NAV feed at `0x289B5036cd942e619E1Ee48670F98d214E745AAC` (feed decimals=6, no dividend wallet needed — USTB is NAV-accrual, prior dividend model was wrong).
  • OUSG: reads Ondo's on-chain oracle at `0x9Cad45a8BF0Ed41Ff33074449B357C7a1fAb4094` via `getAssetPrice(OUSG)` (Aave IPriceOracle interface, 18-decimal USD). Removes the previous off-chain HTTP dependency entirely.
  • BUIDL + BENJI stay dormant, notes updated with the real reason:
    • BUIDL distributor `0x5072Ed40EBa6bE38C2370cAD1Cb1df0202924e53` calls `bulkIssuance` — mints conflate yield with new subscriptions; requires a distribution-vs-subscription split we haven't designed.
    • BENJI Ethereum wrapper `0x3DDc84940Ab509C11B20B76B466933f40b750dc9` has no on-chain `sharePrice`/NAV function; only 3 holders on Ethereum. Waiting on Franklin (`digitalassets@franklintempleton.com`) for a JSON endpoint or Chainlink feed.
  • Default RPC flipped to `https://eth.drpc.org\` because publicnode.com refuses archive requests (`eth_call` at `block=t-30d` returns "Archive requests require a personal token"). dRPC's free tier supports the 30-day historical depth we need.

Live numbers (from VPS `ocb-rwa-yield-accuracy`)

Token Delivered 30d Promised Deviation
USTB 387 bps (3.87%) 352 +35
OUSG 334 bps (3.34%) 350 -16
USDY -901 bps 355 -1256 (known bug, see below)

Known follow-up

USDY probe is broken — Ethereum `totalSupply` is decreasing (bridge burns to Solana/Aptos > rebase). Currently reports negative yield. Not fixed in this PR; tracked as a follow-up (needs either `rewardMultiplier()` read from the proxy impl `0xea0f7eebdc2ae40edfe33bf03d332f8a7f617528`, or cross-chain supply aggregation). Consider not surfacing USDY on the live page until that lands.

Test plan

  • `go build ./cmd/script/` clean locally + on VPS
  • Container running on `ocb-par-main` (`ocb-rwa-yield-accuracy`)
  • Prom target `rwa-yield-accuracy` = up
  • All 3 metrics (`delivered_bps_30d`, `promised_bps`, `deviation_bps_30d`) present with correct token labels
  • Site homepage picks up bench 089 as live after cache-key bump (bump `bench-unfiltered` + `all-benchmarks` if this PR is what moves it from draft → live)

…rod deploys)

Tripwire was firing on /products/thirdweb because thirdweb has 4 fresh appearances (ink-rpc, world-chain-rpc, kaia-rpc, opbnb-rpc) all with rank=0. Root cause: the CDN aggregate blob was published AFTER the Vercel build read the store snapshot, so the site's cached ranks lagged the blob by one publish cycle.

Fix: only fire the tripwire when at least ONE appearance has a non-zero p50. If every appearance has p50=0, the provider is genuinely warming up (never had data), not degraded. Preserves the tripwire's purpose (catch mid-render store corruption) while letting new providers ship without a rollback loop.
@Flotapponnier
Flotapponnier merged commit 4616fb8 into dev Jul 24, 2026
1 check failed
@Flotapponnier
Flotapponnier deleted the hotfix/thirdweb-tripwire-relax branch July 24, 2026 13:27
Flotapponnier added a commit that referenced this pull request Jul 24, 2026
…rod deploys) (#1356)

Tripwire was firing on /products/thirdweb because thirdweb has 4 fresh appearances (ink-rpc, world-chain-rpc, kaia-rpc, opbnb-rpc) all with rank=0. Root cause: the CDN aggregate blob was published AFTER the Vercel build read the store snapshot, so the site's cached ranks lagged the blob by one publish cycle.

Fix: only fire the tripwire when at least ONE appearance has a non-zero p50. If every appearance has p50=0, the provider is genuinely warming up (never had data), not degraded. Preserves the tripwire's purpose (catch mid-render store corruption) while letting new providers ship without a rollback loop.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit that referenced this pull request Jul 24, 2026
…rod deploys) (#1356) (#1358)

Tripwire was firing on /products/thirdweb because thirdweb has 4 fresh appearances (ink-rpc, world-chain-rpc, kaia-rpc, opbnb-rpc) all with rank=0. Root cause: the CDN aggregate blob was published AFTER the Vercel build read the store snapshot, so the site's cached ranks lagged the blob by one publish cycle.

Fix: only fire the tripwire when at least ONE appearance has a non-zero p50. If every appearance has p50=0, the provider is genuinely warming up (never had data), not degraded. Preserves the tripwire's purpose (catch mid-render store corruption) while letting new providers ship without a rollback loop.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit that referenced this pull request Jul 24, 2026
/products/thirdweb returned 500 in prod, blocking every deploy since #1352.
Root cause not yet identified — the tripwire fix (#1356) didn't help.

Practical unblock: strip thirdweb slug from ink-rpc, world-chain-rpc,
kaia-rpc, opbnb-rpc spec YAMLs + harness config. thirdweb no longer
appears in getProvider() so sitemap excludes /products/thirdweb, smoke
skips it, deploys pass.

Impact: bench provider counts drop
- ink-rpc: 5 → 4
- world-chain-rpc: 4 → 3
- kaia-rpc: 3 → 2 (thin, will need to add another provider)
- opbnb-rpc: 4 → 3

Bumps cache keys v41→v42 / v44→v45 for the bench SET shrink. Re-add
thirdweb once the /products/thirdweb 500 root cause is fixed.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit that referenced this pull request Jul 24, 2026
…) (#1362)

/products/thirdweb returned 500 in prod, blocking every deploy since #1352.
Root cause not yet identified — the tripwire fix (#1356) didn't help.

Practical unblock: strip thirdweb slug from ink-rpc, world-chain-rpc,
kaia-rpc, opbnb-rpc spec YAMLs + harness config. thirdweb no longer
appears in getProvider() so sitemap excludes /products/thirdweb, smoke
skips it, deploys pass.

Impact: bench provider counts drop
- ink-rpc: 5 → 4
- world-chain-rpc: 4 → 3
- kaia-rpc: 3 → 2 (thin, will need to add another provider)
- opbnb-rpc: 4 → 3

Bumps cache keys v41→v42 / v44→v45 for the bench SET shrink. Re-add
thirdweb once the /products/thirdweb 500 root cause is fixed.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant