mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
Real bug report: a mono count span driven by a GSAP tl.call() (a counter going "0 sur 0" -> "1 sur 1" at a later beat) rendered the LATER value baked in from frame 0 of an EARLIER, unrelated static-hold span, despite the dedup log reporting "verified". Root cause: computeStaticFrameSet's tween walker only tracks property tweens, so a call()-driven textContent mutation carries no tracked interval and the span around it looks fully static. verifyStaticFramesSafe does catch genuine drift WITHIN a run it's checking, but a call() is a one-shot side effect wired as both onComplete and onReverseComplete (GSAP has no separate "undo" — crossing it in either direction fires the SAME forward mutation). Verifying a LATER run forward-seeks past the call(), permanently mutating the live page; an EARLIER run already passed its own check before that happened, so nothing re-verifies it afterward. Real capture then starts on the same corrupted page and bakes the wrong value into the earlier span's reused buffer. No reliable way to tell a DOM-mutating call() from a harmless one (analytics ping, class toggle) without executing it, so this disqualifies the whole comp on ANY call() — conservative, costs some dedup perf on comps that use call() harmlessly, but correctness over speed.