Components registered with setComponent() are deliberately left out of this
judgement. Their state can be any object at all, so mizer does not know what
currency its entries are in and cannot form a biomass for them; and
tuneSteadyState(), findSteadyState() and getStability() all hold them
fixed, so a criterion that included them could be one that no mizer function
is able to satisfy.
A model can therefore be isSteady() while a component of it is still
changing. If your model has components with dynamics of their own, check them
as well: attr(getSteadyResidual(params), "other") holds their rates of
change, and mizer names any that are moving whenever it reports on the
model's steady state. To settle them along with everything else, project the
model with projectUntilSettled(), which advances the components like every
other state variable.