ship: bench 102 token-quote-coverage to prod - #1418
Merged
Merged
Conversation
solana cohort: provider pages polish
…#1136) Co-authored-by: Florent Tapponnier <contact@mobula.io>
Co-authored-by: Florent Tapponnier <contact@mobula.io>
…ll mode), network-fees
Robinhood Chain: hub entry + 3 bench integrations
…fix tracker reset
…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>
…reference (staging gated)
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
… USDG methodology notes
tokenized-stock-peg: spec validation fix + methodology hardening
…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>
…quote coverage across 7 launchpads
…overage add bench 102 token-quote-coverage (draft)
…isclaimer, clean template tokens
…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>
…0 to show attempt count
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Also included (all merged to dev since last ship)