Walk & Test: destination cards, warm-up discard, 1s tick; drop the traffic monitor - #7
Merged
Merged
Conversation
…affic monitor Three changes from testing the deployed build on a real network. Facebook out, Atlassian in. Meta domains sit on most ad and tracker blocklists, so that card failed for people whose network was entirely healthy, and a false alarm in a diagnostic is worse than one fewer destination. Atlassian is a business staple that is not commonly filtered and rides a different edge network from anything else in the list, which adds path diversity. The list is now four consumer and six business, and a test pins the blocklist-prone hosts out of it. The card copy and the disclosures name the blocklist case explicitly, because "unanswered" now has one more cause a reader should know about. A card per destination, replacing the table. Each carries the last round trip, answered count, median, jitter and max, and a sparkline in the style of the dashboard's traffic monitor. One to five columns depending on width. Every sparkline shares one y-scale, printed above the grid: per-card scaling would make a 400 ms destination and a 40 ms destination draw the same shape, which defeats the point of showing ten at once. A destination with nothing measured draws no line at all, because a flat trace along the bottom reads as "instant". Warm-up rounds are discarded. The first two rounds, plus each destination's first *answered* probe, carry DNS, TCP and TLS. Left in they pinned the top of every scale near a second for the rest of the session and flattened the real measurements into a line along the bottom. They are counted and shown as discarded, never deleted: a destination that failed during warm-up still failed. Keying the setup flag on the first answer rather than the first attempt also fixes a destination that is silent for twenty rounds and then replies, which pays its handshake on round twenty-one. Charts additionally window to the last 60 rounds so one spike cannot hold the axis for the whole walk. A one-second interval is now offered. Safe because the loop awaits a whole round before starting the timer, so the interval is a gap between rounds and a struggling link stretches it rather than piling requests up. Measured at 1.10s per round with all ten cards charting, and 104 ms click latency during it. The Live Traffic Monitor is removed from the dashboard, with docs/REMOVED-TRAFFIC-MONITOR.md as the reference record: what it showed, how it worked, the `|| 1` latency bug it once had, and why it went. It was passive, so its numbers described NetReady's own activity rather than the network, and it needed a traffic-generating button to look useful. Walk & Test is the active version done properly. Its httpbin.org disclosure was rewritten rather than deleted, because httpbin is still reachable as one of the HTTP Probe's one-click samples — the disclosure list has to stay exactly as wide as the app's real reach. One fix the browser run caught: offline, the shared-scale caption read "0 to 10 ms" from a chart-axis default, which is a number no probe produced. The scale is now null when nothing has been measured and the caption says so. Offline now yields zero occurrences of "N ms" anywhere on the page, verified by scanning the whole body rather than the table that no longer exists.
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.
Three changes from testing the deployed build on a real network, plus one bug the browser run caught.
1. Facebook out, Atlassian in
Facebook did not respond on a healthy network. Meta domains sit on most ad and tracker blocklists, so that card failed for reasons that had nothing to do with the network path, and a false alarm in a diagnostic is worse than one fewer destination.
Atlassian replaces it: a business staple that is not commonly filtered, answering
200terminally, and riding a different edge network from anything else in the list, which adds path diversity. The list is now four consumer and six business, and a test pins the blocklist-prone hosts out of it.The card copy and both disclosure lists now name the blocklist case explicitly, since "unanswered" has one more cause a reader should know about.
2. A card per destination
Replaces the live table. Each card carries the last round trip, answered count, median, jitter and max, plus a sparkline in the style of the dashboard's traffic monitor. One to five columns depending on width.
Every sparkline shares one y-scale, printed above the grid. Per-card scaling would make a 400 ms destination and a 40 ms destination draw the same shape, which defeats the point of showing ten at once. A destination with nothing measured draws no line at all, because a flat trace along the bottom reads as "instant".
Warm-up rounds are discarded
The first two rounds, plus each destination's first answered probe, carry DNS, TCP and TLS. Left in, they pinned the top of every scale near a second for the rest of the session and flattened the real measurements into a line along the bottom, which is the "graph never recovers" problem.
They are counted and shown as discarded, never deleted: a destination that failed during warm-up still failed. Keying the setup flag on the first answer rather than the first attempt also fixes a destination that is silent for twenty rounds and then replies, which pays its handshake on round twenty-one. Charts additionally window to the last 60 rounds, so one spike cannot hold the axis for a whole walk.
One-second interval
Safe because the loop awaits a whole round before starting the timer, so the interval is a gap between rounds rather than a fixed cadence, and a struggling link stretches it rather than piling requests up. Measured at 1.10 s per round with all ten cards charting, and 104 ms click latency during it.
3. Live Traffic Monitor removed
Gone from the dashboard, with
docs/REMOVED-TRAFFIC-MONITOR.mdas the reference record: what it showed, how thePerformanceObserveraggregation worked, the|| 1latency bug it once had, why it went, and what would need fixing first if it came back.It was passive, so its numbers described NetReady's own activity rather than the network, and it needed a traffic-generating button to look useful on an idle tab. Walk & Test is the active version done properly.
Its
httpbin.orgdisclosure was rewritten rather than deleted: httpbin is still reachable as one of the HTTP Probe's one-click sample targets, so removing the row would have understated the app's reach. The disclosure list has to stay exactly as wide as what the app actually touches.A bug the browser run caught
Offline, the shared-scale caption read "0 to 10 ms" — a chart-axis default that no probe produced, sitting on a page where every other figure was correctly an em-dash. The scale is now
nullwhen nothing has been measured and the caption says so instead.Verification
npm run checkgreen. 308 tests, 10 new.Generated by Claude Code