The mutex hardening added a fall-through 'pending' response path that returned while still holding pendingMu — one status poll before approval leaked the lock and every later register/approve/status request hung forever (caught by TestDeviceRegistrationFlow's approve step hanging).