When MGC's per-tick abortActiveMovements parks the FSM in 'accelerating'/'decelerating' to avoid a bounce loop, a subsequent moveTo previously fell into the early-return path and saved the new setpoint to delayedMove — which never fired because nothing transitioned back to 'operational'. Now distinguish residue states from genuine non-operational states (starting/warmingup/...) and force-transition out of residue so the new setpoint actually executes. Also picks up in-flight predict shareInputsFrom plumbing and pumpingStation.json stopLevel doc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
convert
Makes unit conversions
#need to make an index to fetch the helper functions properly without destroying all the links.
Description
Languages
JavaScript
100%