Skip to content

v0.16.1 quackd's first patch fixes five faults found by rerunning 0.16.0 on the arm's twin

Choose a tag to compare

@rokbenko rokbenko released this 29 Sep 20:26
· 234 commits to main since this release

This is quackd's first patch, and the first release cut by
RELEASING.md. Rerunning 0.16.0 on
the lab arm's twin on 2026-09-29 found five faults, and 0.16.1 fixes them and one more in how
the eight packages pin each other. The first is a policy latency its chunks cannot carry. A
segment asks for the next chunk only once the last has landed, so a --latency-s past half a
chunk left the arm nothing to play for part of every chunk. The trained ACT, 100 actions at
30 Hz, starved 86 of 300 ticks in every 10 s segment on the twin when served with
--latency-s 1.78, while quackd policy check --bench said that latency covered what it timed.
quackd policy serve and quackd policy check refuse such a latency and say the longest that
fits, 1.66 s for that ACT, so serve with that or less, or where the policy answers faster. The
arm refuses to connect to a server an earlier quackd started with one, before any torque, and
nothing overrides that.

Then the small ones. The assess line said (the human said go) when --yes, a flock's
standing answer or a pipe on stdin had answered and nobody was asked. It names what answered
instead, (--yes said go) and the like, and where the prompt raised, it says the question went
unanswered. On the simulator's clock a 10 s segment at 30 Hz could play 301 ticks, and it plays
300. A sidecar's place: jaws could lay a cube that closing the gripper never touches. The
simulator's connect rehearses the close on a copy of its physics and refuses such a start,
saying how near the moving finger came. quackd doctor's joint_range_deg row printed whole
degrees, and it prints the travel as the pilot is told it, to a tenth of a degree rounded
inward. The fix in how the packages pin each other is that every window starts at the release
it ships in, so quackd-lerobot 0.16.1 needs quackd 0.16.1 or a later 0.16. The rest is
documentation, and uv.lock takes Dependabot's grouped update from #31, which moves no
requirement a user installs against. The arm has not run quackd since 2026-09-23, so none of
these fixes has run on it. What 0.16.1 changes in lerobot:real has run only against a fake
arm and on the simulator, and the bench steps 0.14.0 and 0.15.0 owe in the
hardware checklist
are still owed. Upgrade each machine with the extra it has:

uv pip install --upgrade "quackd[lerobot]"       # the machine that drives the arm
uv pip install --upgrade "quackd[lerobot-vla]"   # the machine that serves its policy