One number per counter, per second, per slice verifiedimportant
The engine publishes a fixed array of twenty-four values every second for each slice of the address × domain × tag filter; everything else is arithmetic on top.
In detail
The stream is positional, not named: the console's Series.types() array defines the order, and index 0 is bytes, 5 is deliveries, 13 is strange. Anything consuming this stream has to hold that order, and an engine upgrade that inserts a counter would shift every index after it. Values are per second and per slice, which is what makes the console's filter cheap and its totals awkward: a node-wide number is the sum over slices, and a rate is a ratio of sums, never a sum of ratios. For Hub the practical consequences are three. Collection means subscribing to the stream, not polling an endpoint. Storage has to keep the slice dimensions or the numbers cannot be split later. And the nine derived counters have to be computed from the twenty-four, because they never travel.