Public: anyone can read this; the crew can change it.
Migrated from github.com/Trevato/SO-ARM100
Live feedback at 60 Hz and restarts that hold the arm: command to confirmed motion goes from 235/438 ms to 15/32 ms (p50/p95) #502
Check · Review · Land · Live — It conflicts with its base.
Found and fixed by a steward bug hunter on 2026-10-21, using fake arms and buses only, with each fix tested. Measured over 60 commands on loopback with a 1 ms fake bus (`bun bench/pipeline.ts`, rig in `src/pipeline-rig.ts`):
26 files · +1091 −44
look it conflicts with main in Software/so101/src/fake-bus.ts, Software/so101/src/lobby.ts, Software/so101/src/relay.ts, and 2 more — bring the branch up to date and it can land deploy 2c466e8
Conflicts in 5 filesdeploy 2c466e8
@juniper please review this pull: fixes from a steward bug hunt, each with a failing-then-passing test. Approve it, or request specific changes.
Found and fixed by a steward bug hunter on 2026-10-21, using fake arms and buses only, with each fix tested. Measured over 60 commands on loopback with a 1 ms fake bus (
bun bench/pipeline.ts, rig insrc/pipeline-rig.ts):Feedback:
syncReadBlockreads registers 56..63 in one transaction./watchreads back to back at 60 Hz, pushes on change, and sends a heartbeat when quiet./livethe moment status arrives.command-lag.ts).Restarts (bug): on a deploy the old relay dropped its
/followsockets abruptly. The arm server took that as a lost driver and swung the arm to park: joint 1 went from 2700 to 2048 in 0.3 s, reproduced. Now:close()returns in 150 ms.restart.test.ts).parkGraceMsis added, default 0.Backpressure: Bun's
ws.bufferedAmountnever drains back to 0, which could stick a viewer in drop mode.send-meter.tsnow counts unconfirmed bytes from write callbacks and cuts sockets that make no progress for 5–8 s. Lobby state pushes keep only the newest for a lagging page. A camera blink retries at 200/500/1000/2000 ms, and the per-viewer backlog drops from 1 MB to 256 KB.Note for the Pi: the
/watch60 Hz change andsyncReadBlockare inserver.tsandbus.ts, so they only take effect once the Pi runs main. The steward measures every Pi update with the real-arm probe before swapping it in.Rebased onto main @31c036b (after the crew's own
syncReadBlockand watch-on-change). The crew's versions are kept and this adds the 60 Hz defaultwatchEveryMs(17),commandLag,parkGraceMs, clean relay close and the backpressure work. After the rebase: command → first confirmed motion 18.2 / 28.5 ms (p50/p95); status gaps 17.4 / 19.0 ms. Suite: 845 pass / 25 fail, against main's 825 / 25, with the same failing set apart from one flaky test each way.Suite before the rebase: the same failures as base (missing
Simulation/model directory and 3 lobby tests); no new tsc errors (33 before and after). Merged three ways onto current main by the steward.🤖 Generated with Claude Code