Merge main into random-fields
Two conflicts, both where the compare study meets the random-field seeding.
`seed` is async now (it draws a randnfun3 table first), so main's `seedWith`
becomes async too and takes the table alongside the noise. That is what the
study needs anyway: for a randnfun3 model the table *is* the initial condition,
and it must be drawn once rather than per session — each session's bounding box
comes from grid samples of the surface, so at different lmax the draws are near
neighbours instead of one field. `sharedModes` draws it from the reference and
every variant seeds from it (8x closer across lmax than per-session draws).
The geometry note keeps main's compare-aware reference session and drops the
"rendered only" caveat, which this branch retired by putting the surface in the
operator.
Also carried the seed wavelength into compare mode: it is passed to every
variant, and the control now sets it on the study when one is up, rather than
doing nothing.
No changes.