zebra-report/web
Russell Ballestrini fa19f5df90
zebra-spaces: predictive drain detector + self-calibrating floor (listener floor 1.3s)
Fox 2026-06-05: "both and see if we could lower to 1.3 secs as floor
for listeners on the high quality stream."

Two additions to the Double Dragon controller:

1. Predictive GROW (lead, not lag).
   The existing 5s-tick path watches loss/jitter — strictly a lagging
   indicator. We now ALSO watch the worklet's bufferedSeconds
   reports (every ~683ms) for rapid drain. If the buffer drops by more
   than 25% of its current target over a 1.5s window, GROW
   immediately — don't wait for loss to appear in the next 5s
   sample. Catches wiggle ~2s after it starts vs 5-10s on the
   lagging path.

2. Self-calibrating floor.
   Each publisher tracks its own maxWiggleDurationSec for the
   session. Floor for SHRINK is max(role-base, maxWiggle × 1.5). A
   stable publisher's listener can shrink to 1.3s. After observing a
   1s wiggle the floor lifts to 1.5s; after a 4s wiggle, 6s (clamped
   to MAX). Resets when user leaves + rejoins.

Constants:
- DD_BASE_LISTENER_TARGET_SEC = 1.3  (was 2.0)
- DD_WIGGLE_FLOOR_MULTIPLIER  = 1.5
- DD_DRAIN_THRESH_FRAC        = 0.25
- DD_DRAIN_WINDOW_SEC         = 1.5

Telemetry log lines:
- "double-dragon pub=XXXX PREDICTIVE GROW → 4s (buf drained Nms in N.Ns)"
- "double-dragon pub=XXXX wiggle ended dur=N.Ns — floor now N.Ns"
- "double-dragon pub=XXXX SHRINK target → N.Ns (clean N samples, role=X, max-wiggle=N.Ns)"

This is the "lead + lag, AND self-tuned floor" loop. The 1.3s listener
floor only applies to clean-history sessions. A wiggle-prone publisher
will see the floor stay elevated automatically.
2026-06-05 09:23:42 -04:00
..
blog phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
fonts phase 2: gap analysis — cat>> append + binary asset recovery 2026-05-27 13:54:19 -04:00
chat.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
host-your-own.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
how-it-works.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
index.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
kernel.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
stamp.js web: stamp each zebra-report page with build date + md5/sha256 2026-05-28 17:50:12 -04:00
zebra-audio.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
zebra-spaces.html zebra-spaces: predictive drain detector + self-calibrating floor (listener floor 1.3s) 2026-06-05 09:23:42 -04:00