Skip to content

ship: bench 102 token-quote-coverage to prod - #1418

Merged
Flotapponnier merged 214 commits into
mainfrom
dev
Jul 25, 2026
Merged

ship: bench 102 token-quote-coverage to prod#1418
Flotapponnier merged 214 commits into
mainfrom
dev

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Summary

  • Bench №102 token-quote-coverage: status draft → live
  • 4 providers: Jupiter (Solana), Mobula (EVM), KyberSwap (EVM+Robinhood), ParaSwap (Base+BSC)
  • Multi-source discovery: Dexscreener boosts + Virtuals Protocol API + GeckoTerminal BSC
  • Harness running on VPS since this morning, Prometheus data accumulating

Also included (all merged to dev since last ship)

  • Robinhood chain support (KyberSwap + Mobula)
  • Odos removed (API sunset July 30)
  • ParaSwap added (Base + BSC)

Florent Tapponnier and others added 30 commits July 12, 2026 21:39
…#1136)

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Co-authored-by: Florent Tapponnier <contact@mobula.io>
Robinhood Chain: hub entry + 3 bench integrations
…cution mutex primitive

DailySpentUSD only ever incremented and was zeroed by every restart, so a
crash-loop minted a fresh budget each time. The tracker resets exactly at
UTC midnight, persists (date, spent) to SPEND_STATE_PATH (default
./spend-state.json, not /tmp) and is mutex-guarded. Also declares the
package-level single-flight lock and the FAILED_TX_FEE_ESTIMATE_USD
(default 0.50) helper for gas bled by failed broadcasts.
…get, single-flight lock

Fund-loss fixes from hostile review:
- a corrective transfer whose deposit broadcast but whose bridge status
  never resolved is now TERMINAL for the scheduler slot (funds are likely
  still in flight, a retry double-sends); only pre-broadcast failures may
  consume another attempt. executeOnBridge keeps TxHash on error paths so
  callers can tell the two apart.
- ONE corrective-transfer budget (max 2) per scheduler slot, shared across
  all downgrade-ladder rungs (was per rung: up to 6 transfers per slot).
- package-level execution mutex: scheduler slots own the wallets end to
  end, the reaper TryLocks and skips its tick instead of queueing.
- broadcasts that failed or timed out after getting a TxHash book a flat
  FAILED_TX_FEE_ESTIMATE_USD against the daily cap instead of bleeding
  unaccounted gas; all spend goes through the persisted UTC-day tracker.
- gas top-up now honors MaxDailySpendUSD before broadcasting.
The reaper (and any other consumer) used to accept simulated balances even
in production with broadcast-capable keys, so phantom numbers could
green-light real transfers. SimulateBalances now takes the execution mode
and returns nil outside dry-run; startup logs a warning when the flag is
set in a broadcast-capable mode.
bridge-monitor: self-healing execution loop (dormant)
…st-fill (#1141)

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Co-authored-by: Florent Tapponnier <contact@mobula.io>
tokenized-stock-peg: bench 076, first onchain equity pricing bench
…he miss (bnb-rpc awaiting incident) (#1144)

Co-authored-by: Florent Tapponnier <contact@mobula.io>
tokenized-stock-peg: fix spark parser for the flat response shape
tokenized-stock-peg: spec validation fix + methodology hardening
ocb-sync-bot and others added 29 commits July 24, 2026 17:50
…kens/v2/search (#1399)

Jupiter migrated jup.ag off Next.js; HTML scrape of __NEXT_DATA__ started
returning next_data_not_found on every call, dropping Jupiter's coverage
rate to 0% on the bench.

Replace scrape with the JSON endpoint the Jupiter web app now uses.
Keyless, rate-limited per IP. Jupiter's swap-focused model doesn't
carry description/socials, so those stay false by design (~25% floor).

Co-authored-by: Florent Tapponnier <contact@mobula.io>
…overage

add bench 102 token-quote-coverage (draft)
…on registry-only meta-providers) (#1402)

3 providers were added to PROVIDER_REGISTRY but never appear as a bench
row slug — the bench uses different slugs at row level:
- gelato: ink-rpc uses ink-official (Gelato-hosted, logo aliased to gelato)
- thirdweb: was in 4 bench specs, removed 2026-07-24 to unblock /products/thirdweb 500
- wormhole: bench 101 uses source_chain slugs (solana/ethereum/...), not 'wormhole'

Without a bench appearance, getProvider() returned undefined and
/products/<slug> 404s. Follow the existing PERP_VENUE_SEED pattern:
seed stub profiles so the Organization page from the registry renders.

Also bumps cache keys v45→v46 / v48→v49 for the getProviders() output change.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
…ality (#1404)

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Co-authored-by: Florent Tapponnier <contact@mobula.io>
* fix(tqc): drop OKX DEX + dead 1inch code (no API key on VPS)

* fix: template tokens return empty string when no data (not raw {{}})

---------

Co-authored-by: Florent Tapponnier <contact@mobula.io>
…koTerminal/boosts) (#1409)

Co-authored-by: Florent Tapponnier <contact@mobula.io>
* feat(tqc): add Robinhood chain + multi-source discovery (Virtuals/GeckoTerminal/boosts)

* fix(tqc): batch EnrichWithVenue in groups of 30 (Dexscreener limit)

---------

Co-authored-by: Florent Tapponnier <contact@mobula.io>
* feat(tqc): add Robinhood chain + multi-source discovery (Virtuals/GeckoTerminal/boosts)

* fix(tqc): batch EnrichWithVenue in groups of 30 (Dexscreener limit)

* fix(tqc): pre-assign venue for Virtuals tokens to avoid cross-chain address collision

---------

Co-authored-by: Florent Tapponnier <contact@mobula.io>
* feat(tqc): add Robinhood chain + multi-source discovery (Virtuals/GeckoTerminal/boosts)

* fix(tqc): batch EnrichWithVenue in groups of 30 (Dexscreener limit)

* fix(tqc): pre-assign venue for Virtuals tokens to avoid cross-chain address collision

* fix(odos): semaphore cap at 2 concurrent requests to stop 429s

---------

Co-authored-by: Florent Tapponnier <contact@mobula.io>
…on Base (#1413)

* fix agg head-lag: swap dead WETH/USDbC pool for active Uniswap V3 WETH/USDC on Base

* remove odos: API sunset July 30, only 429s from VPS

---------

Co-authored-by: Florent Tapponnier <contact@mobula.io>
…ium (Solana) (#1415)

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Co-authored-by: Florent Tapponnier <contact@mobula.io>
Co-authored-by: Florent Tapponnier <contact@mobula.io>
@Flotapponnier
Flotapponnier merged commit 0d44a98 into main Jul 25, 2026
1 of 2 checks passed
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