docs: the reseq probe's readings, and the invariants resequencing changes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
4549c622fc
commit
eacb3f5efc
11 files changed
+258
-23
No files matched your search
@@ -26,7 +26,7 @@ Options: `--server`, `--port`, `--multicast`, `--interface`, `--buffer-mb`
|
||||
(size of the sample buffer, default 200), `--max-window` (largest time
|
||||
window the toolbar offers, default 600), `--holdoff` (default trigger hold-off),
|
||||
`--recv-buffer`, `--plots` (the number of stacked plots to start with, 1..8; rows are
|
||||
added and removed from the **Layout editor** afterwards).
|
||||
added and removed from the **Layout editor** afterwards), `--relative-time` (see below).
|
||||
|
||||
Every CONFIG is dumped to stderr once -- publish mode and, per signal, its name,
|
||||
element count, rate, time mode and time-signal index -- because a signal that
|
||||
@@ -363,6 +363,50 @@ latch, a pan and a zoom do **not** reset: they change which samples are in view,
|
||||
exactly what a statistic over many windows is meant to average. The toggle itself does not
|
||||
reset either, so turning the line off to read the plot and back on again keeps the history.
|
||||
|
||||
## Resequencing and relative timing
|
||||
|
||||
**A shaded band marks samples the stream says exist and have not arrived.** When a packet is
|
||||
received that reveals a gap in the counter, a run of NaN samples is reserved for the missing
|
||||
packets; the span is shaded in the plot and the counters in the status bar show it. The band
|
||||
carries three states:
|
||||
|
||||
- **Solid** while the hole still lacks packets.
|
||||
- **Faint** once the late packets arrive and repair the values — the data is now correct, but
|
||||
the record remains that this region arrived out of order.
|
||||
- **Absent** once that part of the stream scrolls out of the ring's buffer.
|
||||
|
||||
Two things are **not** repaired when a late packet arrives: **math channels** and **the trigger**.
|
||||
A backfilled slot's value is corrected in the ring and in the pyramid, so the raw trace and the
|
||||
readouts are right. The math engine and the trigger already ran over the placeholder, however, and
|
||||
are not replayed: a math trace keeps its gap across a repaired hole, and if the trigger latched
|
||||
adjacent to one, that latch was on the data the engine actually saw.
|
||||
|
||||
**Known limitations.** The fade is all-or-nothing at the hole level — a hole with one packet still
|
||||
missing shades solidly, even if all but one slot are already repaired. And the two tints are not
|
||||
yet configurable; the preferences dialog in `todo.md` is where that would land. Do not use a
|
||||
command-line flag for either; none exists.
|
||||
|
||||
**`--relative-time` makes the x axis follow the sample count and the declared rate**, rather than
|
||||
the stream's own clock. The packet counter says exactly how many samples each gap spans, so a
|
||||
reserved hole is a precise arithmetic range. In stream mode the same hole is estimated from the
|
||||
declared cadence, which is the existing glitch-bridge mechanism reused.
|
||||
|
||||
The history cost of relative mode is measured rather than computed:
|
||||
|
||||
| mode | retained span |
|
||||
| --- | --- |
|
||||
| stream time (default) | **83.886 s** |
|
||||
| `--relative-time` | **41.943 s** |
|
||||
|
||||
Conditions: the mock at 100 kS/s, 4 channels at stride 1, the default `--buffer-mb 200`.
|
||||
Relative mode retains **exactly half** the history — not the ~22% the original spec claimed, and
|
||||
not the 75% a per-byte calculation suggests. The reason is the floor: relative mode keeps a second
|
||||
f64 ring for absolute time beside the stream clock's, so a tick's cost goes from
|
||||
`8 + 4×4 = 24` bytes to `16 + 4×4 = 32` bytes — a third more. But `Partition::time_capacity` is
|
||||
floored to a **power of two** (`src/model.cpp:83`, `:110`), so a third more weight does not cost a
|
||||
third of the span; it costs a whole halving. The measured figures above are the correct ones; a
|
||||
per-byte computation gives the wrong answer for this reason.
|
||||
|
||||
## The session layout file
|
||||
|
||||
What you arranged is remembered per data source, in
|
||||
|
||||
Reference in new issue
Block a user