mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 19:56:53 +00:00
server() now resolves a translation endpoint in three steps: use the running service, rebuild when the host has a GPU but no accelerated deploy left its stamp, otherwise deploy. A plain run therefore costs nothing, and the rebuild fires once, on the move from a CPU-built container to an accelerated one. deploy() brings the runner up, waits for State.Running and deploys the role inside it. The exec steps address `docker compose exec i18n` directly: cli.administration.deploy.development exec hardcodes the `infinito` service (compose.py:261), so every deploy through it silently ran in the main container, where mailu already holds port 25 and postfix cannot start. check=True stops a failing step instead of carrying on against the wrong target. The deploy router writes its pid to build/deploy.pid, which survives the exec into the subscripts, and deploying() refuses a translation while that process lives. The running deploy is left untouched. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>