Skip to content

refresh user-facing copy - #5

Merged
Flotapponnier merged 1 commit into
mainfrom
copy-refresh
Apr 30, 2026
Merged

Flotapponnier merged 1 commit into
mainfrom
copy-refresh

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Drops residual 'field journal' framing and updates every page to reflect the central Prometheus architecture.

What's updated

OpenGraph + Twitter image

  • 'A field journal of crypto-infrastructure performance' → 'Open benchmarks for crypto infrastructure' (OG) / 'Latency, cost and reliability — measured in the open' (Twitter)

/about

  • Dropped 'About this journal' / 'A field journal' / 'Editorial · Standing Note' eyebrow
  • New product-y intro
  • Links updated to point at Discussions + new issue templates

/methodology

  • Dropped 'Editorial · Standing Note' eyebrow + 'editorial' italic class on subtitle
  • Step 3 of reproduction now mentions /metrics endpoint instead of pushgateway
  • Corrections section links data-quality and provider-correction templates separately

/press

  • Dropped 'Editorial · Standing Note' eyebrow

/contribute (the big one)

  • Restructured from 4 → 5 steps to reflect new architecture
  • Step 3: harness now exposes /metrics on a port (no per-harness Prom)
  • Step 4 (new): wire scrape config in infrastructure/prometheus/prometheus.yml
  • Issue template URL fixed: new-benchmark.md → new-benchmark.yml
  • Adds Brainstorm-in-Discussions CTA
  • Reference section adds infrastructure/README.md link
  • Drops 'pushes to a Prometheus instance reachable over HTTPS' (replaced by /metrics)

/benchmarks

  • 'Reports' label → 'Live benchmarks'
  • '{n} reports published' → '{n} benchmarks live'

/ (home)

  • 'Run a harness anywhere — Push metrics named in your YAML' → 'A harness in any language — exposes /metrics; the shared OpenChainBench Prometheus scrapes it'
  • 'Spec it. Push metrics. The page renders itself.' → 'Spec the metric. Expose /metrics. The page renders itself.'

What stays

  • Typography (Source Serif italic accents on descriptive subtitles) — nice, not journal-y
  • Cite-this-report BibTeX (useful, generic 'report' word)
  • All visual layout and components unchanged

@Flotapponnier
Flotapponnier merged commit fe9f678 into main Apr 30, 2026
1 check failed
@Flotapponnier
Flotapponnier deleted the copy-refresh branch April 30, 2026 18:35
bakabhai993 pushed a commit to bakabhai993/OpenChainBench that referenced this pull request Sep 12, 2026
Flotapponnier added a commit that referenced this pull request Oct 12, 2026
…ate (#2950)

the worker kept ranking rows the harness had withdrawn, with no end date

The carry-forward exists so a transient Prometheus failure does not blank a
row: a provider missing from one sweep keeps its last values and gets a
`staleSince` stamp. The code says as much, and already refuses to carry a
provider deleted from the spec, "the staleness carry exists for transient
query failures, not for editorial removals".

It had no ceiling, so it also survived a catalogue correction. A row
withdrawn by the harness came back every sweep, forever, and the ledger
never reads `meta` — so it rendered as availability "live" at a 100% success
rate. `schema.ts` says dead rows are "never deleted", and they were not.

Bench 283 had three tabs in that state at once, each tracing to a commit:

  Solana   OnFinality #1 at 12,000,000, last observed 22 h earlier (#2940)
           dRPC #2 at 10,500,000, last observed 115 h earlier (#2835), still
           carrying the pre-fix 24h-quantile query
           Syndica, the real leader at 10,000,000, shown third
  Trace    Ankr #2 and InstaNodes #3, last observed 60 h earlier (#2930),
           both above BlockPI — on a workload their own plans refuse, under
           a methodology promising a refusal "shows as its absence from the
           trace tab"
  Indexer  InstaNodes #5, above BlockPI, for an archive mix it declines

Those are the two providers I removed from the catalogue on 2026-10-09 after
reading Ankr's and Instanodes' own pricing pages. The harness obeyed: it
resets every gauge each cycle, and Prometheus returns 10 providers on the
Solana tab, 3 on trace, 8 on indexer. The worker put the rows back.

So the carry now has a ceiling, and the bench's own
`expected_freshness_seconds` is it — the window the bench already claims its
data is good for, 3 hours on these two. Specs declaring none fall back to a
day: generous, but finite, which "never" was not.

mergeWithPrevious moves to worker/merge.ts to be testable at all. worker/index.ts
refuses to load without KV credentials, which is right for a worker with
nowhere to publish and is also why this merge had no test. Four now cover it:
a short gap still carries, a withdrawal past the window does not, the
fallback ceiling bites, and the existing editorial-removal guard still holds.

Found by the bench audit, which read the live board rather than the catalogue
and so saw what a reader sees.
Flotapponnier added a commit that referenced this pull request Oct 28, 2026
The ledger puts an unranked row in a labelled block below the field and
never gives it a number. The ranked bar chart, which sits above the ledger
and is the first thing anyone reads, ranked them anyway.

So RouteMesh came out "#5" against the very providers it forwards to,
which is exactly the comparison the unranked flag exists to refuse, while
the table three inches below showed it as unranked. The two surfaces
contradicted each other on the same screen, and the louder one was wrong.

distribution-chart.tsx and public-endpoints-section.tsx already filter on
unrankedLabel. This surface was the one that did not.

Excluded from the ranking, not from the page: the ledger keeps the row and
its number, because not being ranked is a statement about comparability,
not a reason to hide a measurement. Same distinction as the fix two
commits ago, which stopped the ledger printing those numbers as zero.

Verified locally: the chart now ranks QuickNode, GetBlock, Chainstack,
Dwellir and BlockMachine, RouteMesh is absent from it, and the ledger row
still reads 64 ms with its region breakdown.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flotapponnier added a commit that referenced this pull request Oct 29, 2026
#3347)

* every unranked row on the site publishes 0 in its headline column (#3343)

The ledger renders unranked rows with `value={0}` hard-coded, the same prop
the unresponsive rows get. For an unresponsive row that is right: there is
no value. For an unranked row it throws away a measured number that the
loader took deliberate care to preserve.

In production right now: Nova reads 0 on /benchmarks/perp-active-markets
while its own row carries 493, and CoW and Bebop read 0 on
evm-quote-output against 3.17 and 163.75.

The data half of this was already fixed once, and load.ts:395 records what
it cost: "zeroing them published 0.00 bps for a venue giving up a hundred".
The loader now blanks ms only when the spec asks with
`unranked_hides_value`. The component kept zeroing regardless, so the
correct value arrived at the browser and was discarded on the way to the
cell.

Unranked is a statement about comparability, not about whether the number
exists. A row that genuinely has nothing to show asks for that explicitly,
and for it the loader has already zeroed ms before the component sees it,
so that case is unchanged.

Found by reading the rendered page instead of the API: the API said 61 for
the new RouteMesh row and the cell said 0 ms, with p90, p99 and mean from
the same row all correct.

Verified locally: Nova 0 -> 493, RouteMesh 0 -> 64 ms, and a ranked row
left alone as the control.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit a02560c)

* the ranked chart ranked the rows the ledger refuses to rank (#3345)

The ledger puts an unranked row in a labelled block below the field and
never gives it a number. The ranked bar chart, which sits above the ledger
and is the first thing anyone reads, ranked them anyway.

So RouteMesh came out "#5" against the very providers it forwards to,
which is exactly the comparison the unranked flag exists to refuse, while
the table three inches below showed it as unranked. The two surfaces
contradicted each other on the same screen, and the louder one was wrong.

distribution-chart.tsx and public-endpoints-section.tsx already filter on
unrankedLabel. This surface was the one that did not.

Excluded from the ranking, not from the page: the ledger keeps the row and
its number, because not being ranked is a statement about comparability,
not a reason to hide a measurement. Same distinction as the fix two
commits ago, which stopped the ledger printing those numbers as zero.

Verified locally: the chart now ranks QuickNode, GetBlock, Chainstack,
Dwellir and BlockMachine, RouteMesh is absent from it, and the ledger row
still reads 64 ms with its region breakdown.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 719ed5a)

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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