Skip to content

feat(001): add Serialized to aggregator-head-lag - #2268

Merged
Flotapponnier merged 1 commit into
devfrom
feat/serialized-head-lag
Sep 5, 2026
Merged

feat(001): add Serialized to aggregator-head-lag#2268
Flotapponnier merged 1 commit into
devfrom
feat/serialized-head-lag

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Follow-up to #2267 (node reference clock). With the reference in place, Serialized can be measured on bench 001 with the same ruler as everyone else.

The practical blocker nobody had tested

Serialized's trades stream is keyed by token with an optional pools filter; the bench is keyed by pool. Subscribing by the pool's native side (SOL, WETH, WBNB) acknowledges and delivers nothing, consistent with their REST 404 on So111…112: the chain native is a quote asset to them, never a token. Their own GET /v1/pool names the other side under token. Subscribing by that address with pools=<bench pool> delivers exactly that market.

Verified on all four bench pools before shipping:

chain subscribe by events with txHash
solana USDC 4 in 75 s
base USDC 10 in 90 s
bnb BUSD 2 in 90 s
robinhood USDG 79 in 90 s

The token side is resolved from /v1/pool at boot (free endpoint) with a pinned fallback.

Connection cap

Their docs cap a key at 5 concurrent connections; this harness runs in three regions off one key. One connection per process, four pools multiplexed as subscriptions. A first test that opened eight connections was refused with close code 1008, which is also why an earlier Solana attempt looked like a failure and was not.

What is recorded

Both series, deliberately:

  • head_lag_seconds from their own at: identical treatment to Mobula and Codex, including the legacy filter that drops negatives.
  • head_lag_ref_seconds against the node reference clock matched by txHash: the series that can actually compare providers.

Every event carries txHash, block, poolAddress and a preconfirmed boolean per their docs, so Base flashblocks are visible, not inferred. Same 10-minute flow watchdog and gauge purge as the Codex path. SERIALIZED_API_KEY empty disables the monitor cleanly.

Spec: provider block added with the same query shape as Codex including the three regions; methodology bullets updated (4 aggregators, 48 series). ALL SPECS VALID.

Deploy note

The three Railway services (Aggregator east usa, Agg eu west, agg sgp) build from main, root harnesses/aggregator-head-lag. SERIALIZED_API_KEY is already set on all three (skipDeploys). This lands on Railway with the next dev → main. Also: Agg eu west has three consecutive FAILED deploys since 2026-09-05 14:32, all snapshot uploads that fail at build ("fsutil.NewFS … harnesses/aggregator-…"), i.e. a railway up from a directory that does not contain the harness path. The 14:25 build from main should still be serving; a fresh git build via serviceInstanceDeployV2 will replace it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CpArutAtXuBb1BVNUDXoYA

Their trades stream is keyed by token with an optional pools filter,
while the bench is keyed by pool. Subscribing by the pool's native side
(SOL, WETH, WBNB) acknowledges and delivers nothing; subscribing by the
side their own /v1/pool reports as `token` (USDC, BUSD, USDG) with
pools=<bench pool> delivers exactly that market. Verified on all four
bench pools before shipping (events with txHash: solana 4, base 10,
bnb 2, robinhood 79).

One connection per process, four pools multiplexed: their key allows 5
concurrent connections and this harness runs in three regions.

Records both series: head_lag_seconds from their own `at`, same
treatment as the incumbents, and head_lag_ref_seconds against the node
reference clock matched by txHash.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CpArutAtXuBb1BVNUDXoYA
@Flotapponnier
Flotapponnier merged commit c19bfde into dev Sep 5, 2026
1 check failed
@Flotapponnier
Flotapponnier deleted the feat/serialized-head-lag branch September 5, 2026 23:09
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