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.
This commit is contained in:
iris-ai committed 2026-09-17 05:12:44 -04:00
1 parent 53b00c68e9
commit 25e456e0b5
1 file changed
+8
+8
View File
@@ -202,6 +202,14 @@ impl UiRenderState {
// that marks a reader is in `redraw`, which is not what asked here. // 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 // Both retained routes are an answer, so the question is asked once
// rather than by each of them. // 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 = let stale =
rsc.widgets().needs_redraw.contains(&id) || self.dirty_size_under(id, rsc.widgets()); 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); let replace_answer = self.answer_invalid.remove(&id) || (self.replace_answers && stale);