mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-10 12:47:04 +00:00
The swarm convergence gate derived runner_runner-1 from the services metadata and polled a stack service the role never creates: the runner fleet deploys as node-local compose projects on every node because each runner needs its own node's docker socket and identity. Declare workload: node-local on the runner services entry and let the gate context map it to HAS_SWARM_SERVICE=false, so the stack-service gates skip themselves while the swarm deploy, the registry distribution chain and the CLI e2e keep running. Roles without the attribute keep the image/template heuristic; workload: stack forces the gates on. Document the runner architecture for both deploy modes in the role README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>