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
Sim bug fixes (found by running policies across embodiments, each pinned):
- robot_action_keys(): policies were keyed by ALL joint names incl. passive/
mimic followers and missed tendon actuators, so g1/aloha/xarm7/stretch/hands
silently no-op'd. Now keyed by the robot's actuators (what send_action
resolves). MuJoCo override + SimEngine ABC default (other backends unchanged).
- spec_builder._target_quat: returned None for top-down/vertical cameras
(forward parallel to world +Z -> degenerate cross). Falls back to +Y up.
- mujoco render(output_path=...): persist PNG for verifiable renders, with
path-traversal / shell-metachar guard on the LLM-supplied path.
- eval_policy: auto-resolves the single robot (API parity with run_policy).
- DeclarativeBenchmark.on_episode_start: reset stateful reward terms (no phase
leak across episodes).
RL training parity (4 gaps closed, CPU-tested, no new required deps):
- predicates.staged_reward: declarative monotonic phase-machine reward
(StatefulRewardTerm). Curricula authored as DATA via the closed predicate
registry - never eval, never shipped task code.
- base_algo.evaluate()/load_checkpoint()/_deterministic_action(): deterministic
eval peer of train(), frozen normalizer, success_rate; works for PPO + SAC.
- SimEnv.n_substeps (default 5): position-target PD needs substeps to track;
n_substeps=1 was the "nothing learns" bug. Resets stateful reward terms.
- PpoTrainer: vectorized rollout path; num_envs>1 now accepted (was hard-
rejected). N=1 path byte-identical (dispatch on _vectorized).
- VecSimEnv: N independent SimEnv, one reused thread pool, autoreset with
terminal_obs capture (load-bearing for GAE bootstrap), homogeneity guard.
- GymSimEnv: gymnasium adapter with correct terminated-vs-truncated split
(the SB3 TimeLimit footgun fixed at the source) + critic-obs passthrough.
Tests: 38 new CPU tests (vec_env, evaluate, vectorized-ppo, gym_env,
staged_reward) + SO-101 e2e wiring/convergence integ. Updated 3 existing tests
that encoded the old contracts (num_envs==1 rejection, eval_policy robot_name).
0 commit comments