Overnight report · 2026-08-08

It walks again — better tracking, less terrain

Six configurations in a row stood still at 0.004–0.056 m/s. The cause was not the robot, the library, or the paper: it was that I had changed seven things at once from the one configuration known to work. Pinning that back, keeping only the changes that fix a demonstrable bug, gives the best-walking motion-library policy so far.

Forward speed0.537 m/s final — 1.7× the baseline's 0.310 at the same commands
Previous best0.411 m/s, and only by iteration 1499
Command tracking98% 0.537 of 0.55 m/s commanded, vs the baseline's 56%
Terrain, final1.926 vs the baseline's 2.103 at the same commands — 9% behind
Motion-library teacher, iteration 1499 (final), rendered under the matching play config — commands (0.3, 0.8), same observations as training · 600 frames.
Correction: an earlier version of this page showed a clip labelled as this policy that was actually an iteration-100 checkpoint of a prior run, rendered under a mismatched play task — and it face-planted. Caught by the user, not by me. This clip is the actual final checkpoint of the run whose numbers are quoted above.

Three bugs found, all real

  1. A division by zero only standing commands could reach. reward_tracking_goal_vel is min(proj_vel, cmd) / (cmd + 1e-5). With a zero command, any backward drift returns about −10⁵. Mean reward went to −1241 the moment standing commands were enabled. Table S3's r_lv carries exactly this branch, for exactly this reason.
  2. The reward clip cut both ways. Earlier I found its harm — an unavoidable penalty above the positive ceiling zeroes the gradient — and removed it. That missed the other half: it also floors the cost of walking at zero. Unclipped, a policy exploring toward a gait pays every collision and torque penalty en route while standing avoids them all. The one arm that walked had the clip on; all six that stood had it off.
  3. Three penalty sets, not two. Restoring the Extreme Parkour penalties while leaving in the Table S3 terms added to replace them meant paying three sets at once. Mean reward pinned at exactly 0.00 — the blackout, reintroduced by me, one iteration after writing the section that diagnosed it.

Where every configuration landed

Configurationfwd m/sterrainat iter
Motion library, walk config · cmd (0.3,0.8)0.5371.9261499
Position-control baseline · cmd (0.3,0.8)0.3102.1031499
Position-control baseline · cmd (0.0,1.5)0.6751.8151499
Motion library, original walking arm0.411—1499
gd −15, unclipped0.004—500
gd −15 + gait-logit fix0.015—535
… + command range (0, 1.5)0.011—204
gait terms OFF, unclipped0.006—207
gait terms OFF, clip restored0.056—126
faithful but 3 penalty sets−0.051186

A split, not a win. At matched commands (0.3, 0.8) the library arm tracks velocity far better — 98% of commanded speed against 56%, and 1.7× the absolute speed — while the baseline still climbs about 9% more terrain. That is consistent with what the prior is FOR: the library encodes periodic gaits at commanded speeds, so it should buy tracking; it encodes nothing about obstacles, so it should not buy terrain. An earlier version of this page claimed an outright win by comparing terrain across two different command ranges — terrain is scored relative to commanded speed, so it is not comparable that way, and the baseline itself reads 2.103 at (0.3, 0.8) versus 1.815 at (0.0, 1.5). The torque-split audit still has to run: these numbers say the policy works, not that the decoder is what drives it.

The three kept changes are genuine improvements — roughly an order of magnitude in sample efficiency over the original walking arm. The four reverted ones (retiring the EP penalties, widening commands, removing the clip, zeroing gait-logit entropy) are what broke locomotion. That is attributable now only because exactly one group differs between the top two rows.


Next, one variable at a time

Base task is …-MotionLibWalk-v0. Each reverted change goes back in separately, cheapest hypothesis first:

  1. Gait-logit entropy zero and log(2) initial variance — pure exploration change, no reward rebalance, so it cannot reintroduce a blackout.
  2. gait_diversity −1 → −15 — the actual fidelity question. Check mean reward ≠ 0.00 within 50 iterations.
  3. Command range (0.0, 1.5) — needs the zero-command tracking branch, already in.
  4. EP-penalty retirement paired with its Table S3 replacements — the largest rebalance, so last.
The lesson of the night, honestly. Every one of the seven changes was individually defensible and three were real bug fixes. The aggregate was still undisciplined: six runs produced no attributable information because no two differed by one variable. When a working configuration exists, change one thing at a time from it — not from the most recent broken thing.