Skip to content

KDI v0.3.1 — streams are not co-sampled (clarification, no wire change)

Choose a tag to compare

@NickelLiang NickelLiang released this 10 Aug 06:30
· 16 commits to main since this release

No wire change. The golden vector is byte-identical to v0.3.0 — a conforming host needs no changes. The clarification is the point.

Nothing said streams are independently sampled, so a host could reasonably assume they were and pair samples across streams by index. That failure is silent: the pairing is simply wrong by a per-run offset.

New normative invariant not_co_sampled: a host MUST locate a stream's samples by that stream's own timestamps and MUST NOT pair across streams by index or arrival order. adio_dig takes its first sample at the epoch origin; rhd_matrix takes its first at the engine's next timestep boundary — so the offset between two streams' first samples is uniform in [0, one frame period of the slower stream) and differs on every run. It does not drift.

That last claim is measured, not asserted: four independent 2-minute runs on hardware gave +0.31, −0.34, −0.61, +0.73 frame periods — mean +0.02, sign alternating, i.e. noise around zero. Two independent 100 MHz oscillators at even 10 ppm would show ~12 frame periods, consistently signed. Cross-stream alignment is exact integer subtraction of timestamps, which is what the shared timebase is for.

loss_oracle is now scoped within one stream. Applying it across streams was always wrong and the text did not say so.