mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
test(desktop): widen classifier attribution window to +/-1 frame
The two rAF loops (fixture sampler + hook) interleave in an order we don't control, and a late WebKit RO appends a frame after the reflow paints. A tight [prev, this) window mis-labeled all 4 fast-corpus survivors UNATTRIBUTED when the attempt had appended one frame late. Widening to [prev, next) resolves them to their true class. Fast jitter corpus, WebKit: all 4 survivors classify SKIP (fired=false, signedShift=0.0, dScroll=0.0) — the momentum-skip gate suppressed the write on a coalesced-momentum still frame, so the reflow renders uncorrected. Neither GROW (absorption) nor SHRINK (Max's band): the lever is the skip gate. Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
This commit is contained in:
co-authored by
Tyler Longwell
parent
a4fdc35fa9
commit
9df6d92e69
@@ -252,9 +252,17 @@ test("W4a slow-scroll: reversal distribution in the felt low-velocity regime", a
|
||||
const rowMove = b.top - a.top;
|
||||
const dScroll = b.scrollTop - a.scrollTop;
|
||||
if (rowMove > -REVERSAL_PX) continue;
|
||||
// Attempts appended in this frame's window; pick the one whose |signedShift|
|
||||
// is largest (the dominant reflow this frame drives the felt motion).
|
||||
const window = corrections.slice(a.probeLen, b.probeLen);
|
||||
// Attribution window. The hook's correction attempt for the reflow that
|
||||
// produced this reversal can append across a ±1-frame span relative to our
|
||||
// sampler: the two rAF loops interleave in an order we don't control, and on
|
||||
// WebKit a late RO appends a frame after the reflow paints. So the window is
|
||||
// [prev-frame probeLen, NEXT-frame probeLen) — attempts from the frame
|
||||
// before through the frame after. A reversal with NO attempt anywhere in
|
||||
// that span is genuinely unattributed (the corrector did not run a mid-
|
||||
// history attempt on those frames at all — e.g. re-pick guard or null cur),
|
||||
// which is itself a distinct diagnosis from a fired-then-clamped write.
|
||||
const next = frames[i + 1] ?? b;
|
||||
const window = corrections.slice(a.probeLen, next.probeLen);
|
||||
let attempt: (typeof corrections)[number] | null = null;
|
||||
for (const c of window) {
|
||||
if (
|
||||
|
||||
Reference in New Issue
Block a user