Skip to content

Release: Solana finality after Alpenglow, readable video errors, RPC cost API fixes, referral links - #3174

Merged
Flotapponnier merged 8 commits into
mainfrom
release/fixes-2026-10-22
Oct 22, 2026
Merged

Flotapponnier merged 8 commits into
mainfrom
release/fixes-2026-10-22

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Cherry-picks (-x) from dev:

Left on dev on purpose: Blockmachine's addition to benches 282/283 (#3152) and the spec changes that build on it (#3165, #3167), pending Blockmachine's review of its results.

Checks on this branch: tsc, bun test src/ (695 pass), pnpm validate.

…made it sub-second (#3169)

Solana's row subtracted getBlockTime of the processed slot from that of
the finalized one. getBlockTime is whole seconds. Alpenglow went live on
mainnet on 2026-10-21 around 15:00 UTC and finality fell under a second,
so the difference read 0 on most samples and 1 on the rest: the published
"0.14 s" was the share of samples straddling a second boundary, and the
chart's "1.0 s" the same rounding. The harness already retired BNB and
Avalanche from this method for the same reason.

solana_ws.go measures it as evm_ws.go does: T1 = first slotSubscribe
notification of slot S, T2 = first rootSubscribe root >= S, lag in ms,
published on the existing l1_finality_wallclock_* metrics. A 60 s probe
gave p50 371 ms, p90 654 ms; polling getSlot(finalized) every 250 ms
instead of using roots gave p50 373 ms. Spec queries, tag, formula,
methodology and the Solana copy move to the new method.

(cherry picked from commit f2191e6)
…r is not "awaiting" (#3162)

Two findings from the 2026-10-22 audit of bench 282.

/api/stat (and every surface cohortSummaries feeds: llms.txt, MCP,
citable, JSON-LD) crowned Dwellir Unlimited "lowest monthly cost ...
across 6 ranked providers" for the dedicated cohort, which the spec
declares ranked: false and the product pages already leave unranked.
cohortViews now marks every row of such a cohort unranked, so the
existing gate returns leader null, empty rankings and "none is ranked".

Helius, Syndica and Triton read "no Ethereum dapp plan · awaiting" on
their product pages while the bench has Syndica first on two Solana
cells. The value slot was fixed on 2026-10-16; the rank slot still
promised a rank that never comes. It now says "not ranked" on the two
RPC cost benches and "awaiting" everywhere else.

(cherry picked from commit 2c4542f)
…lable, 0 %" (#3170)

Major from the second 2026-10-22 audit of bench 282. On the unfiltered
view the loader backfills every declared provider without a figure as
availability "unavailable" with successRate 0. On the two RPC cost
benches that missing figure is a product fact: Helius, Syndica and Triton
sell Solana only and the default view is the Ethereum dapp mix. The
variant API, /api/stat and MCP therefore listed three products that lead
Solana cells as dead, on a bench that sends no traffic. They are now
pushed as unranked rows carrying the not-served label, the shape
spec-declared unranked members already use, which every ranking helper
skips. MCP rows carry no success rate on a bench with
ledger_reliability: false.

Also: the polled-artifact count is 25, not 24 (Prometheus agrees), and
the FAQ no longer says no provider was billed while two other answers
describe Chainstack's measured billing.

(cherry picked from commit 0cd7bdc, without benchmarks/rpc-cost.yml: main does not carry it)
…s in ms (#3173)

A failed render printed the response body verbatim, so a platform 500
(a staging deploy swapping under the request, 2026-10-22) filled the
modal with the whole Next.js error page in red. The modal now prints one
line per failure (status, our route's error code, a hint) and retries a
non-JSON 5xx once after 3 s; the renderer caches by payload, so a retry
after a render that did finish returns at once.

In the videos, seconds under one now print as milliseconds: "0 s" read as
a dead feed when Solana's finality fell under a second with Alpenglow,
and 440 ms beside 420 ms ranks more easily than 0.44 s beside 0.42 s.
COMP_VERSION bumped so cached renders are not reused.

(cherry picked from commit f410e22, without video: main does not carry it)
…rce (#3155)

A referralUrl field replaces only the href of the product page's outbound
link; url stays canonical in the API, citations and structured data, the
rule utm.ts already follows. The href still passes through withUtm, so it
reads https://blockmachine.io/?referral=openchainbench&utm_source=openchainbench,
and is marked rel=sponsored.

(cherry picked from commit b17ac16)
)

Same rule as Blockmachine: referralUrl replaces only the clicked href,
which still gets our utm_source and rel=sponsored; url stays canonical.
Both links resolve with the utm parameter appended (QuickNode redirects
to its dashboard signup, Chainstack's referral-factory page loads).

(cherry picked from commit 93936c1)
Same rule as the RPC providers: referralUrl replaces only the clicked href,
which keeps our utm_source and rel=sponsored. pump.fun is registered under
three slugs (pump-fun, pump, pumpfun) and all three get the link. Both
links resolve with the utm parameter appended.

(cherry picked from commit 415008f)
The Blockmachine registry entry and benches are on dev only, pending the
provider's review of its results; the referral framework and the other
four links ship to main without it.
@Flotapponnier
Flotapponnier merged commit ecf595c into main Oct 22, 2026
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