Skip to content

Drop Validation Cloud from the keyed cohort: every probe returns 401 - #3034

Merged
Flotapponnier merged 1 commit into
devfrom
fix/drop-validationcloud-keyed
Oct 18, 2026
Merged

Flotapponnier merged 1 commit into
devfrom
fix/drop-validationcloud-keyed

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

The release (#3021) would have published nine dead rows on public chain pages. Validation Cloud sits in the keyed cohort of all nine chain RPC specs and has never produced a single measurement.

rpc_health        0 on all 27 (chain, region) series
rpc_call_total    result="http_err"  22018
                  result="timeout"       5
                  successes              0
latency series    none exist at all

The harness log names the cause, identically on every chain and every region:

[ethereum/validationcloud]    http_err latency=9ms  err=status 401
[solana/validationcloud]      http_err latency=9ms  err=status 401
[arbitrum/validationcloud]    http_err latency=74ms err=status 401
[ws][arc/validationcloud]     session ended: websocket: bad handshake

The key is invalid, expired, or was never provisioned. The probe itself is healthy and running at full cadence: 19,437 calls in 24h, the same rate as QuickNode's 19,439.

What is removed: 18 provider blocks across the nine specs (warm and cold arms), 9 disclosure bullets, 31 prose mentions. The prose matters as much as the blocks. Leaving "Alchemy, Chainstack, GetBlock, QuickNode, Dwellir and Validation Cloud" in a subtitle would promise a provider the table no longer has, so each enumeration is rewritten rather than left dangling:

before   ... QuickNode, Dwellir and Validation Cloud probed on their keyed endpoints
after    ... QuickNode and Dwellir probed on their keyed endpoints

No copy stated a cohort size, so no count goes stale. Checked after the edit: zero remaining mentions in all nine files.

What is kept, deliberately:

bench reads why it stays
rpc-cost 167 live in production since #3012, a pricing bench not a probe
rpc-free-tier 1,219,510 a documented plan allocation

Neither depends on the keyed endpoints.

Infrastructure: the 54 Railway URL and WS variables are backed up to the secrets directory (600, outside the repo, verified absent from git) and removed from the three keyed services, so we stop sending 19,400 requests a day to an endpoint that rejects every one of them. Restoring is one command per variable the moment Validation Cloud supplies a key that authenticates.

Gates: 253 specs valid, 597 tests pass.

The release would have published nine dead rows on public chain pages.
Validation Cloud is in the keyed cohort of all nine chain RPC specs and
has never produced a single measurement:

  rpc_health        0 on all 27 (chain, region) series
  rpc_call_total    result="http_err"  22018
                    result="timeout"       5
                    successes              0
  latency series    none exist

The harness log names the cause, identically on every chain and region:
`http_err err=status 401`, plus `websocket: bad handshake` on the WS arm.
The key is invalid, expired, or was never provisioned. The probe runs at
full cadence, 19,437 calls in 24h, the same rate as QuickNode.

Removed from the nine chain specs: 18 provider blocks (warm and cold), 9
disclosure bullets, and 31 prose mentions. The prose matters as much as
the blocks: leaving "Alchemy, Chainstack, GetBlock, QuickNode, Dwellir
and Validation Cloud" in a subtitle would promise a provider the table
does not have. Each enumeration is rewritten rather than left dangling,
and no copy stated a cohort size, so no count goes stale.

Kept, deliberately:

  rpc-cost        Validation Cloud reads 167 and has been live in
                  production since #3012. It is a pricing bench, not a
                  probe, and the figure is real.
  rpc-free-tier   reads 1,219,510, a documented plan allocation.

Neither depends on the keyed endpoints, so neither is affected.

The Railway URLs are backed up to the secrets directory and removed from
the three keyed services, so we stop sending 19,400 authenticated-looking
requests a day to an endpoint that rejects every one of them. Restoring
is one command per variable once a working key arrives.

Gates: 253 specs valid, 597 tests pass.
@Flotapponnier
Flotapponnier merged commit 437e60b into dev Oct 18, 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