Repository navigation
fix(network): name the group each per-client and per-network-type share is of - #571
Conversation
…re is of Seen all 30 days, by network type drew the share of hosting peers seen all 30 days and the share of other peers seen all 30 days, each of its own group, so the two lines add up to well over 100% (69.6% and 58.1% on 10 Nov). The per-client lines on the churn, sync, reachability and subnet cards are built the same way. Titled as "X, by client" they read as a breakdown of one whole. Each title and value axis now names its denominator: "Share of each client's peers ..." and "Share of each network type's peers ...". Amp-Thread-ID: https://ampcode.com/threads/T-01a1cd46-600c-7706-947f-ce26c936fe39 Co-authored-by: Sam Calder-Mason <samcaldermason@gmail.com>
There was a problem hiding this comment.
Summary
A copy-only change renaming five per-client and per-network-type share cards and their value axes so each names its denominator. Two of the new labels claim the share is of all of a client's peers while the code divides by a narrower population (peers that answered status, peers that answered metadata), so those cards still misstate the denominator; the network-type card also claims every type while drawing only two. The churn and reachability per-client cards are correct.
Issues
- 🟡
src/pages/ethereum/network/components/SyncCharts/SyncCharts.tsx:66— title and axis name the wrong denominator for head lag — see the thread on that line - 🟡
src/pages/ethereum/network/components/SubnetCharts/SubnetCharts.tsx:55— subnet share is of metadata responders, not all the client's peers — see the thread on that line - 🟢
src/pages/ethereum/network/components/ChurnCharts/ChurnCharts.tsx:106— "each network type" omits the unknown type the table carries — see the thread on that line
Reviewed @ f36c6f5a
"Pets vs. cattle." — Bill Baker
| /> | ||
| <SeriesCard | ||
| title="Within a slot of the head, by client" | ||
| title="Share of each client's peers within a slot of the head" |
There was a problem hiding this comment.
🟡 title and axis name the wrong denominator for head lag
clientShareLines divides by status_peer_count (peers that exchanged status), not peer_count (peers seen), so the card does not show "share of each client's peers" as titled, and the axis at 68 repeats the same claim. On 2026-11-10 caplin reads 414/490 = 84.5% although only 414 of its 727 peers are within a slot (56.9%): the 237 peers that never answered status are silently absent from the denominator. Name the population ("...peers that answered a status request within a slot of the head", axis "Share of the client's status peers") or divide by peer_count if the all-peers share is what is wanted.
| <div className="grid grid-cols-1 gap-4 xl:grid-cols-2"> | ||
| <SeriesCard | ||
| title="On all 64 subnets, by client" | ||
| title="Share of each client's peers on all 64 subnets" |
There was a problem hiding this comment.
🟡 subnet share is of metadata responders, not all the client's peers
FctPeerAttnetCountByClClientDaily.peer_count is documented as the peers that answered a metadata request, which is the denominator here, so the value is a share among responders rather than "each client's peers" as titled and on the axis at 57. On 2026-11-10 caplin shows 9/407 = 2.2% while it is 9 of caplin's 727 seen peers (1.2%). Name the population (e.g. "...peers that answered metadata on all 64 subnets") so the card does not overstate the share of a client's peers.
| /> | ||
| <SeriesCard | ||
| title="Seen all 30 days, by network type" | ||
| title="Share of each network type's peers seen all 30 days" |
There was a problem hiding this comment.
🟢 "each network type" omits the unknown type the table carries
The card only plots the hosting and other rows, but fct_peer_churn_daily also has network_type = 'unknown' (2026-11-10: hosting 6741, other 7275, unknown 5), so "share of each network type's peers" describes more coverage than is drawn. Either add the unknown series or drop "each network type"; the axis wording at 108 ("Share of the type's peers") also reads vaguely without a type named on the card.
CI failed @
|
"Seen all 30 days, by network type" on /ethereum/network drew Hosting and Other lines that add up to well over 100%. The data is right: each line is the share of that network type's own peers seen all 30 days (from
fct_peer_churn_dailyon 10 Nov 2026: hosting 4693 / 6741 = 69.6%, other 4230 / 7275 = 58.1%). The title and the "Share of peers" axis made the lines read as parts of one whole.The per-client rate cards (
clientShareLines) have the same problem: "New peers, by client" (Caplin reaches 80%), "Within a slot of the head, by client", "Dialled, by client" and "On all 64 subnets, by client".Each of these cards' titles and value axes now names the denominator:
The xatu-cbt table is consistent: for every network type and day checked, new + 2–7 + 8–29 + 30-day buckets equal
peer_count.Checked with
pnpm lint,pnpm buildand the network unit tests, and by rendering the page against production data at 1440 and 1280 px.