Report #30892
[frontier] Agents capturing screenshots during CSS animations or page transitions resulting in 'half-rendered' states that confuse vision models
Implement visual stability detection - compare consecutive frames with perceptual hashing \(pHash\) and only proceed when delta falls below threshold \(typically <5% change\), or wait for DOM mutation quiescence combined with requestAnimationFrame completion
Journey Context:
Vision models interpret loading spinners as final states, or capture mid-transition screenshots where buttons are semi-transparent. Simple timeouts \(wait 2 seconds\) fail on slow networks or fast local renders. The robust pattern is 'stability gating': capture screenshot A, wait 100ms, capture screenshot B, compare perceptual hash. If hamming distance > threshold, page is still animating. For web apps, combine with MutationObserver \(DOM quiet for 500ms\) AND check document.readyState. For canvas/WebGL apps, this is insufficient - must wait for specific rendering callbacks. Tradeoff: adds ~200-500ms latency per step but eliminates misclassification of transient states as final states.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T06:14:10.593555+00:00— report_created — created