smokeng v0.16.0
v0.16.0 — the directional measurements irtt already makes
An irtt session measures more per packet than the round trip, and smokeng read
all of it off the wire and kept only the round trip. A SmokePing install that
graphed send and receive jitter therefore came across the migration with one
graph where it had three.
Skipping the other two on import was right: SmokePing graphs one figure per
target, so the same host appears three times, and as three smokeng targets they
opened three sessions to the same server and collided. But the migration guide
said nothing was lost, and that was not true — the measurements were being made
and dropped. All three are now kept from the one session and drawn under the
round trip on the same time cursor.
What is kept is inter-packet delay variation, not the absolute one-way delay
sitting beside it in the same result. One-way delay subtracts one machine's wall
clock from another's and is wrong by however far apart they have drifted, so it
measures NTP as much as the network. IPDV compares consecutive packets on the
monotonic clock, so the offset cancels and the number holds without the two ends
being synchronised.
graph_series chooses what is drawn, per target and inherited: "all" (the
default), a list, or "" for none. Display only — everything measured is stored
whatever it says, so switching a graph on later shows the history it already has
rather than starting it from that moment. It is writable from TOML as well as
the API, unlike the shape rules in v0.14.2: a setting the file format does not
know gets reverted by the next declarative import.
Two fixes travel with it. The submission decoder matched on column count, so
these three columns would have made an older agent's whole batch fail — every
measurement lost to gain three optional distributions, and a master upgrade
would have been a flag day for every remote agent. It resolves columns by name
now. And the linear density clipped only at the top; on a signed scale it clips
at both ends, so an excursion below zero is left out of the density rather than
pinned to the axis edge where it would read as a plateau.
Schema migrations v19 and v20, both additive.