bench: publish bridge-execution-latency to prod - #2315
Merged
Conversation
…ency + success rate, EU)
Flotapponnier
added a commit
that referenced
this pull request
Sep 11, 2026
* fix(rpc): SpecSchema-compliant YAMLs for benches 256-258 (#2211) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML (#2196) * feat(rpc): Shentu #254 + MANTRA Chain #255 (#2199) * feat(rpc): add Shentu bench #254 and MANTRA Chain bench #255 * fix: remove accidental dev-portal submodule * feat: Band Protocol #256 + cheqd #257 benches * fix: bench-blob revalidate 300s to fix perp ISR conflict (#2206) * merge: dev → main (Gains carry fix + vault fee split) (#2191) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * feat(rpc): Union bench #253 (#2195) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML * feat(union): add provider SVG logos and brand colors * feat: Shentu #254 + MANTRA Chain #255 benches * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML (#2196) * feat(rpc): Shentu #254 + MANTRA Chain #255 (#2199) * feat(rpc): add Shentu bench #254 and MANTRA Chain bench #255 * fix: remove accidental dev-portal submodule * fix: bench-blob revalidate 300s to fix perp ISR conflict * fix(fee-compare): clearer Gains labels — Position size + vault fee (#2207) * fix(fee-compare): rename Volume→Position size + clearer vault fee label * fix(fee-compare): show total position value + inline vault fee explanation * fix(fee-compare): total position value + inline vault fee explanation (#2208) * fix(fee-compare): rename Volume→Position size + clearer vault fee label * fix(fee-compare): show total position value + inline vault fee explanation * fix(fee-compare): remove vault fee — carry fees settled per-action, not OI surcharge (#2209) * feat(rpc): ICON bench #258 (#2210) * merge: dev → main (Gains carry fix + vault fee split) (#2191) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * feat(rpc): Union bench #253 (#2195) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML * feat(union): add provider SVG logos and brand colors * feat: Shentu #254 + MANTRA Chain #255 benches * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML (#2196) * feat(rpc): Shentu #254 + MANTRA Chain #255 (#2199) * feat(rpc): add Shentu bench #254 and MANTRA Chain bench #255 * fix: remove accidental dev-portal submodule * feat: Band Protocol #256 + cheqd #257 benches * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML (#2196) * feat(rpc): Shentu #254 + MANTRA Chain #255 (#2199) * feat(rpc): add Shentu bench #254 and MANTRA Chain bench #255 * fix: remove accidental dev-portal submodule * feat: Band Protocol #256 + cheqd #257 benches * fix: bench-blob revalidate 300s to fix perp ISR conflict (#2206) * merge: dev → main (Gains carry fix + vault fee split) (#2191) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * feat(rpc): Union bench #253 (#2195) * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML * feat(union): add provider SVG logos and brand colors * feat: Shentu #254 + MANTRA Chain #255 benches * fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chains only (#2187) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit (#2188) Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection (#2189) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains action names v5→v6, handle position size increases (#2190) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: Gains carry projection (v6 action names + still-open positions) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column for long tickers (xyz:NVDA) * fix(cache): strip heavy fields from aggregate blob to pass 2MB limit Hub pages only need card data. Drop seriesByRegion24h, metricPanels, editorial text (seoIntro/faq/findings/methodology/disclaimer/abstract/ perChainExplainer) from the blob aggregate slim. Cuts serialized size from ~4.3 MB to under 2 MB so unstable_cache actually persists the entry instead of silently dropping it on every render. * fix: include still-open Gains positions in carry projection * fix: update Gains open action names to v6 API, handle TradePosSizeIncrease * fix: widen coin name column in top markets to fit xyz:NVDA * feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High Stakes) (#2194) * fix(union-rpc): remove em dashes from YAML (#2196) * feat(rpc): Shentu #254 + MANTRA Chain #255 (#2199) * feat(rpc): add Shentu bench #254 and MANTRA Chain bench #255 * fix: remove accidental dev-portal submodule * fix: bench-blob revalidate 300s to fix perp ISR conflict * fix(fee-compare): total position value + inline vault fee explanation * fix(fee-compare): remove vault fee — carry fees settled per-action, not OI surcharge (#2209) * feat(rpc): ICON bench #258 — new icon probe kind, 3 keyless providers * fix(rpc): rewrite bench YAMLs 256-258 with proper SpecSchema format * fix(bench-243): probe keyed-rpc-robinhood from Singapore * fix(bench-243): prod is Singapore-only — no dims inherited from snapshot, abstract names the probe region * fix(bench-243): by-region grid driven by live spec, Singapore only on prod * feat: add OG image cards for all hub pages missing dedicated cards (#2234) (#2235) * feat: add OG image cards for dynamic routes * Merge pull request #2236 from ChainBench/fix/og-cache-ssr-home perf(seo): OG cache + SSR home ticker + fee-compare JSON-LD (cherry picked from commit bc88d16) * report: publish Robinhood Chain RPC benchmark (figures as of 2026-09-04) (#2256) * fix(reports): default og:image to per-report dynamic image (#2257) * report: bump Robinhood RPC publish date to 2026-09-04 (#2258) * fix(agg): remove chromium from Dockerfile, use sidecar for Codex JWE * ci: trigger Railway redeploy agg-head-lag * Merge pull request #2259 from ChainBench/fix/solana-dex-volume-scope fix(bench-205): apples-to-apples Solana scoping (cherry picked from commit c9557df) * fix(243): scope every Robinhood Chain RPC claim to the Singapore probe (#2272) The page and the report presented a single-origin measurement as a chain-wide ranking ("fastest on Robinhood Chain", "the best of any keyed provider on the chain") and justified the origin with an unsourced claim about the chain's Asia-Pacific infrastructure. Round-trip latency to a keyed RPC depends on where the probe sits relative to the provider's serving node, so the ranking is origin-dependent. Every title, headline, FAQ and report sentence now says "from Singapore" and states that scope explicitly. The Asia-Pacific justification is removed everywhere. The bench remains pinned to the Singapore probe (aggregate_filters unchanged). Claude-Session: https://claude.ai/code/session_01CpArutAtXuBb1BVNUDXoYA Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * fix: keep single-origin bench payloads to their pinned region, and list only servable product URLs in the sitemap (#2274) Two leaks between the worker's checkout (dev) and this build (main). 1. A bench pinned to one region with no region dimension declared still shipped every region the worker computed inside the page payload (extras.regions, seriesByRegion24h, cellRanks), readable in view-source though nothing rendered it. The guard keeps the pinned region's cells only. Benches that declare region tabs are untouched. 2. The sitemap listed /products/<slug> for every provider in the blob, including providers only declared on the worker's branch; the page 404s on this build and the deploy's sitemap smoke blocks the release (2026-09-08: /products/serialized). Provider URLs are now filtered to slugs declared in this build's specs, plus registry parents. Claude-Session: https://claude.ai/code/session_01CpArutAtXuBb1BVNUDXoYA Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * fix: confine single-origin benches to their pinned region inside overlayEditorial (#2276) The previous guard lived in page.tsx and only reached the `benchmark` prop; `variants` was seeded from the unfiltered aggregate a few lines earlier and shipped every region the worker computed into the RSC payload (us-east series and ranks for keyed-rpc-robinhood, on a page that only shows Singapore). Moving the confinement into overlayEditorial, where this build's spec is already overlaid on the stored snapshot, scopes the object at the source: aggregate, variants, filtered variants and list views all inherit it. Benches that declare region tabs, or pin nothing, are untouched. Also covers the 7d and 30d per-region series the page guard missed. Claude-Session: https://claude.ai/code/session_01CpArutAtXuBb1BVNUDXoYA Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * feat(rpc): probe NOWNodes on ethereum and bnb (harness only) (#2284) Config half of the NOWNodes onboarding (dev PR #2283 carries the specs and registry). Adds the keyless public-eth / public-bsc endpoints so the Railway rpc-capabilities services start emitting provider="nownodes" into Prom. Verified fresh and fast against publicnode before shipping. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * feat(rpc): probe Bitcoin, LUKSO and Coreum-via-NOWNodes (harness only) (#2288) Harness half of the Bitcoin/LUKSO/Coreum onboarding (dev PR #2287 carries the specs + registry). Adds the bitcoin Kind (getblockcount), the LUKSO and Bitcoin chains, NOWNodes on Coreum, and the cosmos REST fallback so the Railway rpc-capabilities services emit the new provider=chain series into Prom. Verified fresh vs references before shipping. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * feat(rpc): surface NOWNodes, Bitcoin and LUKSO on prod (#2293) Site + spec half of the NOWNodes onboarding, cherry-picked to main (the harness was already shipped via #2284 and #2288; Railway is already emitting the data). Nothing else from dev is included. - bitcoin-rpc (#259) and lukso-rpc (#260): new benches. - NOWNodes added to ethereum-rpc, bnb-rpc, coreum-rpc and the cross-chain rpc-capabilities list. - Real NOWNodes brand mark and official LUKSO logo; Bitcoin and LUKSO registered in CHAINS so they display capitalized; lukso-official registry entry; NOWNodes X handle corrected to @NOWNodes. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * bridge-monitor: 3/30 tiers + 5-route conserving loop + HL withdraw (#2294) (#2295) * bridge-monitor: 3/30 tiers, 5-route conserving loop, HL withdraw, proactive equalizer * bridge-monitor: use api.mobula.io (was demo-api), configurable via MOBULA_API_BASE * bridge-monitor: keep quote-loop notionals at 5/50/300 (execution tiers 3/30 are separate) * bench 002: scope region tabs to EU-West while us-east/sgp probes are paused * bench 001 bridge-fee: scope region tabs to EU-West while us-east/sgp probes are paused * bench 001/002: display EU-West only (single region) + methodology copy while us/sgp paused * feat(001): Base measured against the flashblock reference, Serialized re-added (#2296) * fix(001): measure head lag against a node we hold, not the provider's clock (#2267) The spec promises "Reference: archive nodes per chain, validated against block hashes" in three places. The harness never did that: both provider paths compute receiveTime minus the timestamp the provider itself sent. grep for archive/getBlockByNumber/blockTimestamp over the harness returns nothing. Measured consequence: on the same transaction hash, Serialized and Mobula disagree about when it happened by 707 ms on Solana and 1,000 ms on Base, so the leaderboard partly ranks where each vendor puts its clock. Adds one WebSocket subscription per monitored pool straight to a node, timestamping every swap on receipt, matched to provider emissions by transaction hash. Published as head_lag_ref_seconds beside the legacy series so the old one keeps its history while the two are compared. Validated before shipping at a 100% hash match rate on Base and Solana. That validation also surfaced the binding constraint: against public endpoints the reference node is SLOWER than the providers, so the series carries the node's own latency as an offset and must be read as a relative comparison until REF_WS_URL_<CHAIN> points at a paid node. All of this is documented at the call site. Claude-Session: https://claude.ai/code/session_01CpArutAtXuBb1BVNUDXoYA Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(001): measure Base against the flashblock reference, re-add Serialized Base was the only chain whose zero point was wrong, and measurably so: a block becomes queryable ~0.36 s after the timestamp it carries (median over 25 consecutive blocks) while the sequencer publishes flashblock preconfirmations every 200 ms inside the 2 s interval. Measuring against the block timestamp therefore described the chain's stamping convention, not the provider's pipeline, and charged anything reading preconfirmations with a negative lag: 99% of Serialized's Base emissions, 140 of 147. base_flashblock_ref.go feeds the existing reference clock from that stream. The clock already keeps the first observation, so the preconfirmation wins over the sealed-block logs subscription without further change. The endpoint is public and anycast: 1.1 ms RTT from both the Paris and Singapore boxes, the same distance as the provider endpoints, so no region is handicapped against the feeds it measures. headlineLag applies the substitution in one place, so it lands on all four providers at once. Re-basing one provider and leaving the others on the old ruler is the asymmetry this change exists to remove. A Base emission with no flashblock match is dropped, not measured against a different ruler: a dead reference must show up as missing data, never as quietly different numbers. Verified from two vantage points before shipping. Serialized on Base moves from -1.016 to +0.239 (Paris) and -1.081 to +0.244 (laptop), stable, with 4 negatives out of 125 left as network jitter. Mobula's old-reference figure from Paris (+1.070) matches production (0.951), which is what makes the vantage trustworthy. Only Base changes. Solana, BNB and Robinhood carry no preconfirmation layer a provider consumes and their chain-supplied timestamps sit within ~60 ms of the observable moment, so they keep the on-chain timestamp. Serialized is re-added with the pinned Robinhood token address corrected: the old value acked and delivered nothing, which is what produced the "they publish nothing on Robinhood" report. With the address /v1/pool returns, they deliver 98 events in 5 minutes at p50 +0.596 s. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * copy(001): name Serialized in the headline, drop the stale per-chain claims (#2301) (#2302) The title, subtitle, seo_description and seo_intro still listed three providers while a fourth led the bench. Two findings asserted "Mobula leads on three of four chains" and "Codex leads on Base" as hardcoded prose; neither is true now and neither was placeholder-driven, so they would have read wrong forever. Replaced with statements that describe the mechanism and defer to the per-chain placeholders for who leads. The Base finding and the measurement FAQ now describe the flashblock reference shipped in #2296, and state the measured floor: a sealed-block reader carries about 1.6 s (median over 21,538 transactions) between a trade's preconfirmation and its block becoming queryable, before any pipeline work. Without that sentence the Base column reads as an eightfold speed gap where the pipelines differ by a few hundred milliseconds. The p99 finding now includes Serialized. Slug unchanged, so URLs and indexed pages are stable; only the title text moves. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * bridge-monitor: fix nil-interface panic in evmClientFor (crash-looped VPS when portfolio API down) (#2299) (#2303) * feat(001): defer reference matching so a late reference still matches (#2304) (#2305) Every provider monitor looked the trade up in the reference clock at the instant it received the emission. That only works when the reference is earlier than the provider. On Solana it is not: our logsSubscribe observation lands ~0.2 s after Mobula and Serialized, who read a geyser, so at lookup time the entry does not exist yet. Measured in production: Codex, the slowest, matched 5% of its Solana emissions; Mobula and Serialized, faster, matched 0%. The asymmetry is the order of arrival, not rate limiting. Emissions now wait in a buffer and are resolved by a 200 ms sweeper when the reference catches up, or expired as a miss after 8 s. The match no longer depends on which side arrives first, which is the property a reference clock needs on every chain, not just on Base where the flashblock stream happens to precede everyone. emitHeadLag is the single entry point for all four monitors; the per-chain rule (reference-based headline or provider-timestamp headline) lives in one map, referenceChains. Base only for now. Solana is the next candidate and is deliberately held back: flipping its headline onto a reference series that matched 0-5% would blank the chain on the bench. Point REF_WS_URL_SOLANA at an endpoint that delivers, confirm the match rate per region, then add it. The Solana reference subscription moves from confirmed to processed, measured 56 ms earlier on the same pool; the deferred matcher makes that ordering safe. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * bridge-monitor: switch triangle to all-USDC (Arb leg USDT->USDC), avoids USDT0 routing gap (#2307) (#2308) * bridge-monitor: capture exec-cost metrics (realized output, quote-vs-realized slippage, our gas, refund split) (#2309) (#2310) * bridge-monitor: enable Near Intents executing bridge on main (USDC triangle, opt-in via ENABLE_NEARINTENTS_EXEC) (#2311) * bridge-monitor: run Near Intents triangle in single-test too when opted in (#2312) * series: densify 90d/1y resolution so young benches show all available data (#2313) * bench: publish bridge-execution-latency (real on-chain settlement latency + success rate, EU) (#2315) * bridge-monitor: reliability metrics (stuck + refund latency) + 0-baseline pre-seed to main (#2319) * mcp: allowlist bridge execution metrics for query_prom (#2320) * bridge-monitor: only record slippage-vs-quote on a real fill (skip revert/refund/fail) (#2322) * bridge: exact execution latency + Near Intents (prod) (#2324) * bridge-monitor: exact exec-latency gauge (no bucket interpolation) + pre-seed near-intents corridors * bench 261: exact latency via quantile_over_time gauge + add Near Intents provider * bench 261 exec latency: read from ocb: recording rules (prod) (#2326) * bench 261: read exec latency from ocb: recording rules (always-fresh, survives sparse runs) * infra: track bridge-execution recording rules (deployed to ocb-prom /opt/ocb/prom-rules) * bench 264: dedicated Solana quote-latency to prod (#2328) * bridge-monitor: add SOL->Arb/BNB/Ethereum quote-only routes for the Solana quote bench * bench 264: dedicated Solana quote-latency (SOL to Base/Arb/BNB/Ethereum) + from_chain=Solana recording rules * bench 264: add SOL->Robinhood Chain (chainId 4663, USDG cross-asset) as a destination (#2330) * bench 264: correct Robinhood methodology — only Mobula quotes SOL->Robinhood (others reject USDC->USDG) (#2332) * revert: keep bridge-execution-latency + bridge-quote-latency-solana benches on dev only (remove from prod) (#2333) --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
bakabhai993
pushed a commit
to bakabhai993/OpenChainBench
that referenced
this pull request
Sep 12, 2026
…ency + success rate, EU) (ChainBench#2315)
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.
Promotes bench 261 (bridge-execution-latency) from dev to main. Measures REAL on-chain bridge execution: broadcast-to-settlement latency, success rate and realized fees on the self-conserving USDC triangle (Solana/Base/Arbitrum), $3 and $30, EU-West, for Mobula/Relay/LI.FI. Spec validates (221 specs valid). Populates from live production executions (first scheduled run 10:00 UTC).