You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Same rig (pupu, FF400), same electrical loopback (system:playback_2 → system:capture_2), same JACK settings (96000 Hz, period 256, -S), measured by ac calibrate on two days:
16 samples apart — 0.167 ms — and not a multiple of the 256-sample period.
what it is not (measured 2026-09-15)
Not the build. The 2026-09-14 build cb95c5aa, still staged on the rig and sha256-verified, read 17.8229 ms ×3 on 2026-09-15.
Not a JACK restart.jack-ac.service was stopped, jackd run by hand at 48 kHz, the service restarted at 96 kHz and the FF400 baseline toggle-restored; τ then read 17.8229 ms ×5, identical to before the restart.
Cause is not identified. What changed between the sessions and is not in the table above includes at least: whatever state the FF400 / firewire stream came up in after the 2026-09-14 session ended, and the cabling work done on 2026-09-14 (outputs re-probed and recabled that day). No mechanism is claimed here.
why it matters
TauConditions keys on device, backend, sample rate, period size, output port and input port. Every one of those matched across the two sessions, so a τ stored on 2026-09-14 is resolved on 2026-09-15 as a valid match and applied 16 samples wrong, with nothing refused and nothing printed. #347's two-readings-agree rule cannot see it either: both readings in a run share the session's offset.
Epic #276's definition of done says τ "refuses rather than degrades" on mismatch. This is a degrade with no mismatch to refuse on. At 96 kHz, 16 samples is 5.7 cm of acoustic path — above the rig's 5 cm "good enough" bar.
acceptance criteria
Determine whether the shift is reproducible across a power cycle or cable re-seat of the same loopback, with same-build τ measured before and after — provenance: measured. Until that exists, any fix is guessing at the mechanism.
Whatever is stored says when (session, and ideally interface power/stream epoch) τ was measured, and an operator-facing read-out distinguishes "measured this session" from "resolved from a stored entry" — so a reader can tell which one they are trusting.
If the shift reproduces: stored τ is either refused across that boundary or flagged as unverified for the current session, with the boundary named. A silent match is not acceptable.
related
#347 (τ agreement within a run), #281 (τ as a scoped calibration layer), #359 / #363 (period-sized jumps), #276 (epic definition of done), #351.
observation
Same rig (pupu, FF400), same electrical loopback (
system:playback_2 → system:capture_2), same JACK settings (96000 Hz, period 256,-S), measured byac calibrateon two days:cb95c5aa298f77dc16 samples apart — 0.167 ms — and not a multiple of the 256-sample period.
what it is not (measured 2026-09-15)
cb95c5aa, still staged on the rig and sha256-verified, read 17.8229 ms ×3 on 2026-09-15.jack-ac.servicewas stopped,jackdrun by hand at 48 kHz, the service restarted at 96 kHz and the FF400 baseline toggle-restored; τ then read 17.8229 ms ×5, identical to before the restart.calibrateruns across both rates, within one daemon and across 10 daemon restarts each, agreed to the sample (τ must be measured more than once: a single reading can be one period wrong with nothing to detect it #347 record).Cause is not identified. What changed between the sessions and is not in the table above includes at least: whatever state the FF400 / firewire stream came up in after the 2026-09-14 session ended, and the cabling work done on 2026-09-14 (outputs re-probed and recabled that day). No mechanism is claimed here.
why it matters
TauConditionskeys on device, backend, sample rate, period size, output port and input port. Every one of those matched across the two sessions, so a τ stored on 2026-09-14 is resolved on 2026-09-15 as a valid match and applied 16 samples wrong, with nothing refused and nothing printed. #347's two-readings-agree rule cannot see it either: both readings in a run share the session's offset.Epic #276's definition of done says τ "refuses rather than degrades" on mismatch. This is a degrade with no mismatch to refuse on. At 96 kHz, 16 samples is 5.7 cm of acoustic path — above the rig's 5 cm "good enough" bar.
acceptance criteria
related
#347 (τ agreement within a run), #281 (τ as a scoped calibration layer), #359 / #363 (period-sized jumps), #276 (epic definition of done), #351.