Gotchas¶
Capacity is tracked in memory¶
Semaphores reset on restart. That is expected, but it also means the plugin may temporarily mis-estimate available capacity until orphan cleanup catches up.
Cooldown state also resets on restart¶
This is convenient during recovery, but it also means a restart can clear protective backoff sooner than the underlying root cause was fixed.
Label matching is exact¶
If the job asks for xcode26 but your mapping or assigned labels say xcode-26, Jenkins will keep waiting.
SSH Host Override matters when network views differ¶
If Jenkins and the VM host do not share the same network view, auto-detected guest connectivity may be wrong. Set the override explicitly when the controller needs a different host name or IP.
One-shot cleanup timing affects capacity¶
Semaphore permits are intentionally released after delete, not before. That means long delete operations can temporarily reduce apparent capacity even when the build is already over.
Orphan cleanup is safety net, not primary workflow¶
If orphan cleanup is the only thing keeping the host clean, the real issue is earlier in the provisioning or termination path.