From 25e456e0b5c56f0bc0b53be786f01e94f0cc7873 Mon Sep 17 00:00:00 2001 From: iris-ai <4+iris-ai@noreply.localhost> Date: Thu, 17 Sep 2026 05:12:44 -0400 Subject: [PATCH] Say what the fuzzers can no longer tell about the stale-answer guard Dropping `dirty_size_under` from it now passes every run there is. It stays for the one entry the bottom-up ordering does not reach -- `update` draws the root for a resize before `redraw_updates` runs -- which is a hole reasoned rather than measured, and the note says which. --- core/src/ui/render_state.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/ui/render_state.rs b/core/src/ui/render_state.rs index 84ac0d9..b245ad5 100644 --- a/core/src/ui/render_state.rs +++ b/core/src/ui/render_state.rs @@ -202,6 +202,14 @@ impl UiRenderState { // that marks a reader is in `redraw`, which is not what asked here. // Both retained routes are an answer, so the question is asked once // rather than by each of them. + // + // Since `a92c6ac` settles a frame strictly bottom-up, no fuzzer can + // tell whether the second half of this still does anything: dropping + // `dirty_size_under` passes the suite, the shrinker at 400 seeds of + // depth 5, the oracle at 1000 of depth 6 and 2000 seeds at depth 4. + // It stays because `update` draws the root for a resize before + // `redraw_updates` runs at all, which that ordering does not reach -- + // a hole that is reasoned rather than measured. let stale = rsc.widgets().needs_redraw.contains(&id) || self.dirty_size_under(id, rsc.widgets()); let replace_answer = self.answer_invalid.remove(&id) || (self.replace_answers && stale);