Heat Sphere, Acoustic Momentum, and Free Rotation
The sim has had three major additions. All of them are live at /sim — run it yourself.

Thermal heat sphere
The sim now tracks where friction energy lands across the full housing surface — not a flat ring, but a 3D sphere mapped into 128 sectors (16 azimuth × 8 elevation). Red is hot, purple is cold.
What you see immediately is that the heat distribution is asymmetric. It concentrates on the side where the balls are doing the most work — the power stroke. The thrust arrow points the opposite direction.
That's Newton's third law made visible: action on one side, reaction on the other. The heat IS the reaction.
Acoustic momentum — the dominant channel
Every watt of friction heat that leaves the housing carries momentum. For photons, it's p = E/c — real but negligible at nanoNewton scale. For sound, it's p = E/c_sound. Sound travels roughly a million times slower than light, so the same energy carries roughly a million times more momentum.
The HUD now shows both channels live. The photon gap is millions to one — irrelevant. The acoustic gap is where it gets interesting: single-digit to low double-digit ratios depending on parameters. That's not unity, but it's not millions either.
And when you free the housing, it shifts.
Free rotation — the constraint question
While reviewing the data, I noticed something we'd missed: the housing was locked in orientation. That means the frame provides an external torque. Was the directional force bias just a constraint artifact?
Only one way to find out. The sim now has a free rotation toggle. Unlock the housing and it's free to spin — no external torque, no cheating.
The translational bias survives.
What changes is the energy budget. The constraint was masking where the energy actually goes. Remove it, and the acoustic and thermal channels pick up the slack. The acoustic gap tightens significantly in free rotation — the reaction momentum is real, it was just hiding behind the locked housing.
The remaining gap is plausibly closeable with directivity, resonance, or geometric focusing. It doesn't require new physics.
Toward hardware
MKS SERVO42D CAN stepper drivers are on their way — originally sourced for another project, but they turn out to be a natural fit here. Closed-loop with an onboard encoder, so the board knows exact angular position at all times. CAN bus for synchronisation between assemblies. That gives you position-aware speed pulsing — modulate velocity as a function of theta — which is the core requirement of this mechanism.
No separate hall sensors, no custom motor driver. The ESP32 becomes a coordinator sending pulse profiles over CAN rather than doing low-level motor control.
Prototype plan: 3D-printed offset race tracks, SERVO42D per assembly, ESP32 coordinator, HX711 load cell for measurement. Sim is capped at 100 RPM — well within stepper range, especially closed-loop where stall isn't a concern under pulsing load.
There's no pass/fail — only data. The sim shows a directional bias. The physical prototype is there to find out whether that bias exists outside the simulation or whether the sim is an anomaly. Either outcome is worth publishing.
Momentum budget
This mechanism is not reactionless. It's vibration-driven locomotion. The full momentum budget and five common objections are written up in Known Objections — Newtonian framing throughout, no exotic physics invoked.
The sim is live. The sliders are yours. Break it if you can.