You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Built-in observation aggregators drop bounds-preserving specifications #560
Built-in observation aggregators declare a bounds_reserving attribute, while Updater.observation_spec() reads preserves_bounds. Consequently, even min, max, mean and median are treated as having unknown bound behavior: the updater logs a warning and returns an unbounded Array instead of retaining a BoundedArray specification.
The problem is visible directly:
fromdm_control.composer.observation.observableimportbaseassertbase.AGGREGATORS['mean'].preserves_boundsisTrue# AttributeError: functools.partial has no attribute preserves_bounds
A bounded Generic observable reduced with the built-in mean loses its limits through the actual Updater. Returned values remain in bounds, but the resulting specification no longer rejects out-of-bounds inputs.
Expected behavior
Use the attribute name already documented and consumed by Updater. The four bounds-preserving reducers should retain scalar or per-element limits, while sum must remain unbounded. Preserve reduced values, shape/dtype inference, custom-aggregator behavior and unbounded inputs.
Reproduced on main at a04e3e4cf56c12117d2294bb090f9acec21e5c67, including a native MuJoCo observation sequence. No renderer, external services or model inference is needed.
Activity