ship: dense series with null gaps + video export dimensions - #1133
Merged
Conversation
ship monad-rpc + megaeth-rpc to prod
* coherence batch: hyperliquid profile name, fraxtal frxETH, data-dated as-of, sub-ms precision, KV read retry
* fix answers grammar fallback + live ticker SSR
Two audit fixes that touch the SSR HTML crawlers cache:
* /answers pages showed 'The current leader currently leads Solana
transaction landing latency at measured live (p50, 24h)' when the
referenced bench had no defensible leader. The per-token fallback in
cleanLeftoverTokens rewrote {{best_name}} to 'The current leader'
inside sentences whose YAML grammar assumed a proper-noun subject,
producing broken output that Perplexity + Bing were picking up
verbatim.
Fix: detect the (no leader) AND (source uses live tokens) case at
the page level and swap the whole short_answer / intro / methodology
/ limitations / FAQ set with a canned 'data pending' fallback that
reads naturally in every downstream surface (meta description,
JSON-LD Article.description, LLM grounding trace). Fallback is
benchmark-scoped so the copy stays specific instead of reading like
a generic error page. Applied on generateMetadata too so the SERP
snippet never publishes the broken sentence.
* Home page live ticker rendered 'Reconnecting' in the SSR HTML
because the SSE connection is client-only. Googlebot cached a
snapshot with the module apparently broken. Fix: always render 'Live'
in the label so the SSR text reads as a healthy live module; the dot
color still reflects the actual connection state (green pulse when
connected, muted grey when not) so client users still see when the
stream is genuinely down. aria-label on the muted dot preserves a11y.
Verified:
pnpm typecheck: clean
eslint on modified files: 0 errors
bun test src/lib: 64 pass 0 fail
No changes to /api/citable, /api/llm-context, JSON-LD shapes or any
existing behaviour when the bench has live data.
---------
Co-authored-by: Florent Tapponnier <contact@mobula.io>
Follow-up to #1121 addressing the review agent's two blocking findings: * /answers hub page was not covered by the pending-data guard. When the referenced bench had no defensible leader, the Solana card and any other pending row still surfaced 'The current leader currently leads Solana transaction landing latency at measured live (p50, 24h)' as its short_answer preview. Fix: mirror the detail-page guard on the hub loop. Same import list, same swap logic, same benchDataPendingFallback scoped to each row's referenced bench. * Pending detail pages rendered empty <h2>Frequently asked questions and <h2>What this number does not tell you sections with no items below, reading as UI dead space and emitting <ul>/<dl> shells with no content. Fix: hide both sections when their arrays are empty. Verified: pnpm typecheck: clean eslint on modified files: 0 errors bun test src/lib: 64 pass 0 fail No changes to behaviour when the bench has live data (both sections render normally, hub preview shows the real short_answer). Co-authored-by: Florent Tapponnier <contact@mobula.io>
export video: bench dimension filters, live preview, parenthetical titles
… consistency answer page
mev-protect-rpc: chain dimension + 4 new gateways + consistency answer
mev-protect-rpc: split methodology bullets under 500 chars
Old file was a wordmark including 'CHAINSTACK' text, ~9.7 KB. Replaced with the official icon-only mark pulled from chainstack.com/wp-content/themes/chainstack/img/chainstack-logo-blue.svg, 1.2 KB, blue (#007BFF), viewBox 0 0 109 109. Matches the shape used on their own homepage today and lines up better with the other provider icons in the leaderboard. Co-authored-by: Florent Tapponnier <contact@mobula.io>
…p; blink dark mode chip
mev cohort: provider pages polish (logos, registry, dark mode)
…1128) time.Duration.Milliseconds() returns int64 and truncates every probe under 1 ms to zero. QuickNode is measured via the Mobula shared paid fleet whose endpoints are peer-adjacent to the harness (short RTT + HTTP keep-alive), so a significant share of successful probes returned in ~0.3 to 0.9 ms and were recorded as 0 ms in Prometheus. The 24h aggregate on the BNB + US-East cell landed at effectively 0 ms and rendered as 'QuickNode leads at 0 ms' on /benchmarks/rpc-keyed-latency?chain=bnb®ion=us-east. Fix: latencyMs = float64(time.Since(start).Nanoseconds()) / 1e6. Same wall-clock delta, real precision preserved down to microsecond granularity. Every other provider stays within noise (their probes were already above 1 ms so the truncation never bit them). Requires a Railway harness rebuild + redeploy to take effect on staging and production (bench 069 runs on Railway, not the shared worker VPS). The materialized store will catch up on the next 24h window after redeploy. Co-authored-by: Florent Tapponnier <contact@mobula.io>
…ls for video renderer
solana-rpc: first non-EVM chain in the RPC cluster (bench 075)
…wrong axis (#1130) Both YAMLs were shipping short_answer / seo_description / faq copy that referenced {{best_name}} and {{best_p50}}. renderTemplate resolved those tokens against the underlying bench's global leader, but the questions frame a head-to-head that the bench does not answer on the same axis: * polymarket-vs-kalshi-resolution-speed referenced polymarket-resolution-delay, whose dimensions are market categories (Crypto / Sports / Politics), not venues. {{best_name}} returned the fastest category and the page rendered 'Crypto currently resolves faster at 11.3 min' - grammatically fine, factually wrong for a Polymarket vs Kalshi question. Kalshi is also not measured in the bench today. Fix: rewrite the copy to describe what the bench actually measures (Polymarket resolution delay per category, live onchain from UMA events on Polygon), state explicitly that Kalshi ingestion is pending, and point at the bench page for the numbers. No {{}} tokens. * helius-vs-triton-vs-quicknode-solana referenced solana-tx-landing, which includes Jito bundle submission as a separate priority-lane comparator. {{best_name}} could name Jito, mismatching the three RPC providers in the question and reading as broken output. Fix: rewrite the copy to describe the harness methodology, name the three providers explicitly, and flag Jito's presence on the same leaderboard so a reader who lands here from Google or a LLM answer understands why the aggregate leader can be Jito rather than one of the three RPCs. No {{}} tokens. Both YAMLs still list status: live and short_answer is above the schema 40-char floor. Related answers unchanged. No changes to any other YAML. Verified: grep for {{}} tokens in both YAMLs: 0 hits bun test src/lib: 64 pass 0 fail pre-existing typecheck error on provider-registry.ts:1247 is unrelated (present on dev before this branch, confirmed via git stash test) Co-authored-by: Florent Tapponnier <contact@mobula.io>
series: dense grids with explicit null gaps
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.
Urgent half: the materialize worker already writes dense series with explicit nulls (backfill work); prod's zod schema is z.array(z.number()) and will reject the new blobs as caches roll, so prod code must align now. Also ships: charts render outage gaps honestly, series anchored on the true window grid, /api/series dense timestamps, export video dimension pickers with live preview and parenthetical titles.