All checks were successful
continuous-integration/drone/push Build is passing
drone (DEPS=[gitea], a COLD dep) deadlocked in promote: the cold test holds the gitea dep's app-lock for the whole process lifetime, and promote's _provision_deps re-acquires the same lock in the same process → blocks forever. By promote time the cold test + its deps are torn down (dep teardown runs in the run finally, before promote), so the locks are stale. New lifecycle.release_app_locks() frees them at promote start; the serial sweep guarantees no concurrent run relies on them. lasuite-* (warm keycloak dep) were unaffected (no cold deploy). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>