RemSound latency lab - measuring depth-target convergence with the shipped playout code.
Raise under test: 30ms -> 330ms. Expected growth at full depth-bias: ~3ms/s.

--- T1 clean: write 10ms/10ms, read 10ms/10ms ---
  settled at target 30ms: buffered=38ms ratio=1.001000 updates=1
  t+ 5s buffered=  10ms ratio=1.000101 updates=2
  t+10s buffered=  34ms ratio=1.000101 updates=2
  t+15s buffered=  49ms ratio=1.000070 updates=3
  t+20s buffered=  74ms ratio=1.000070 updates=3
  t+25s buffered=  78ms ratio=1.000049 updates=4
  t+30s buffered= 103ms ratio=1.000049 updates=4
  t+35s buffered=  98ms ratio=1.000635 updates=5
  t+40s buffered= 140ms ratio=1.000635 updates=5
  t+45s buffered= 132ms ratio=0.999845 updates=6
  t+50s buffered= 148ms ratio=0.999845 updates=6
  t+55s buffered= 184ms ratio=0.999892 updates=7
  t+60s buffered= 200ms ratio=0.999892 updates=7
  RAISE result: 38ms -> 200ms in 60s = 2.70ms/s  GROWS (mechanism working)
  LOWER result: back to target 30ms -> buffered=69ms after 3s

--- T1 opus-frame: write 20ms/20ms, read 10ms/10ms ---
  settled at target 30ms: buffered=76ms ratio=0.998000 updates=1
  t+ 5s buffered=  58ms ratio=0.999200 updates=2
  t+10s buffered=  97ms ratio=0.999200 updates=2
  t+15s buffered= 126ms ratio=0.998841 updates=3
  t+20s buffered= 127ms ratio=0.998841 updates=3
  t+25s buffered= 158ms ratio=1.000088 updates=4
  t+30s buffered= 153ms ratio=1.000088 updates=4
  t+35s buffered= 177ms ratio=1.000062 updates=5
  t+40s buffered= 202ms ratio=1.000062 updates=5
  t+45s buffered= 207ms ratio=0.999144 updates=6
  t+50s buffered= 237ms ratio=0.999144 updates=6
  t+55s buffered= 266ms ratio=1.000001 updates=7
  t+60s buffered= 271ms ratio=1.000001 updates=7
  RAISE result: 76ms -> 271ms in 60s = 3.25ms/s  GROWS (mechanism working)
  LOWER result: back to target 30ms -> buffered=59ms after 3s

--- T1 gulpy device: write 20ms/20ms, read 21ms + 42ms gulp each ~1s ---
  settled at target 30ms: buffered=43ms ratio=1.000400 updates=1
  t+ 5s buffered=  41ms ratio=0.999771 updates=2
  t+10s buffered=  59ms ratio=0.999771 updates=2
  t+15s buffered=  53ms ratio=1.000529 updates=3
  t+20s buffered=  85ms ratio=1.000529 updates=3
  t+25s buffered=  97ms ratio=1.000460 updates=4
  t+30s buffered= 130ms ratio=1.000460 updates=4
  t+35s buffered= 142ms ratio=0.999214 updates=5
  t+40s buffered= 140ms ratio=0.999214 updates=5
  t+45s buffered= 158ms ratio=1.000737 updates=6
  t+50s buffered= 189ms ratio=1.000737 updates=6
  t+55s buffered= 180ms ratio=0.999408 updates=7
  t+60s buffered= 238ms ratio=0.999408 updates=7
  RAISE result: 43ms -> 238ms in 60s = 3.25ms/s  GROWS (mechanism working)
  LOWER result: back to target 30ms -> buffered=59ms after 3s

--- T1 jittery net: write 20ms +/-15ms, read 10ms/10ms ---
  settled at target 30ms: buffered=70ms ratio=1.002000 updates=1
  t+ 5s buffered=  50ms ratio=1.001100 updates=2
  t+10s buffered=  39ms ratio=1.001100 updates=2
  t+15s buffered=  79ms ratio=1.001370 updates=3
  t+20s buffered=  47ms ratio=1.001370 updates=3
  t+25s buffered=  85ms ratio=1.000359 updates=4
  t+30s buffered=  89ms ratio=1.000359 updates=4
  t+35s buffered=  82ms ratio=0.999952 updates=5
  t+40s buffered= 117ms ratio=0.999952 updates=5
  t+45s buffered= 132ms ratio=1.001166 updates=6
  t+50s buffered= 162ms ratio=1.001166 updates=6
  t+55s buffered= 162ms ratio=0.999619 updates=7
  t+60s buffered= 189ms ratio=0.999619 updates=7
  RAISE result: 70ms -> 189ms in 60s = 1.98ms/s  SLOW (partially working)
  LOWER result: back to target 30ms -> buffered=69ms after 3s

--- T2 engine-Mixed clean: write 20ms/20ms, read 10ms/10ms ---
  settled at target 30ms: buffered=74ms ratio=1.001001 updates=1
  t+ 5s buffered=  34ms ratio=1.000401 updates=2
  t+10s buffered=  21ms ratio=1.000401 updates=2
  t+15s buffered=  29ms ratio=1.000281 updates=3
  t+20s buffered=  29ms ratio=1.000281 updates=3
  t+25s buffered=  30ms ratio=0.999897 updates=4
  t+30s buffered=  34ms ratio=0.999897 updates=4
  t+35s buffered=  37ms ratio=0.999928 updates=5
  t+40s buffered=  38ms ratio=0.999928 updates=5
  t+45s buffered=  29ms ratio=0.999949 updates=6
  t+50s buffered=  30ms ratio=0.999949 updates=6
  t+55s buffered=  39ms ratio=1.000864 updates=7
  t+60s buffered=   9ms ratio=1.000864 updates=7
  RAISE result: 74ms -> 9ms in 60s = -1.08ms/s  STALLED (the field bug)
  LOWER result: back to target 30ms -> buffered=29ms after 3s

--- T2 engine-Mixed gulpy: write 20ms/20ms, read 21ms + 42ms gulp ---
  settled at target 30ms: buffered=59ms ratio=0.998399 updates=1
  t+ 5s buffered=  56ms ratio=0.999568 updates=2
  t+10s buffered=  28ms ratio=0.999568 updates=2
  t+15s buffered=  25ms ratio=0.999818 updates=3
  t+20s buffered=  50ms ratio=0.999818 updates=3
  t+25s buffered=  44ms ratio=0.999962 updates=4
  t+30s buffered=  48ms ratio=0.999962 updates=4
  t+35s buffered=  39ms ratio=0.999465 updates=5
  t+40s buffered=  20ms ratio=0.999465 updates=5
  t+45s buffered=  35ms ratio=0.999116 updates=6
  t+50s buffered=  50ms ratio=0.999116 updates=6
  t+55s buffered=  53ms ratio=0.999471 updates=7
  t+60s buffered=  50ms ratio=0.999471 updates=7
  RAISE result: 59ms -> 50ms in 60s = -0.15ms/s  STALLED (the field bug)
  LOWER result: back to target 30ms -> buffered=62ms after 3s


=== SUMMARY ===
  T1 clean: write 10ms/10ms, read 10ms/10ms: raise 2.70ms/s [GROWS (mechanism working)], lower -> 69ms
  T1 opus-frame: write 20ms/20ms, read 10ms/10ms: raise 3.25ms/s [GROWS (mechanism working)], lower -> 59ms
  T1 gulpy device: write 20ms/20ms, read 21ms + 42ms gulp each ~1s: raise 3.25ms/s [GROWS (mechanism working)], lower -> 59ms
  T1 jittery net: write 20ms +/-15ms, read 10ms/10ms: raise 1.98ms/s [SLOW (partially working)], lower -> 69ms
  T2 engine-Mixed clean: write 20ms/20ms, read 10ms/10ms: raise -1.08ms/s [STALLED (the field bug)], lower -> 29ms
  T2 engine-Mixed gulpy: write 20ms/20ms, read 21ms + 42ms gulp: raise -0.15ms/s [STALLED (the field bug)], lower -> 62ms
