Dirty-gated balanced rebuild. Called once per step by updateWorld, before pair finding. Scans
layers from the round-robin cursor and rebuilds the first dirty tree found — at most one rebuild
per step to cap worst-frame cost. A clean tree (e.g. a settled static field) costs a single
boolean check and is never touched.
Dirty-gated balanced rebuild. Called once per step by updateWorld, before pair finding. Scans layers from the round-robin cursor and rebuilds the first dirty tree found — at most one rebuild per step to cap worst-frame cost. A clean tree (e.g. a settled static field) costs a single boolean check and is never touched.