YouDuck.ai

The health gate and automatic rollback

Last updated

The health gate is the last phase of an update: after the new version is installed and the daemons restart, the system checks whether the robot is healthy and rolls back automatically if it is not.

The phases

preflight → downloading → verifying → swapping → health_gate

Any of them can fail, and every failure ends with the robot back on the version it was running — not half-dead.

What it means for development

Pushing your own build is a safe operation. What scripts/dev-push.sh installs goes through exactly the same path — signature, artifact hash, compatibility, health gate, automatic rollback. The only difference is which key signed it.

A build that will not come up is reverted. You cannot push the board into a brick.

A success that looks like a bug

When the gate works, it sometimes reads as a failure:

On a dev board, apply daemon without --ref installs the stable release. If that release predates a daemon which now has a unit file on the board, the unit’s ExecStart points at a binary the older release does not contain → the restart fails → rollback.

You see “the update failed”, and what actually happened is the gate saving you.

The robot may have rolled back already

Automatic rollback does not interrupt you; it only writes to the log:

robotctl update log
journalctl -b -u robot-boot-check