Assignment rules know who a user is. They do not know whether the user is in today. Anything that rotates leads between people needs a second source of truth for availability, and often has none.
1. The rotation list is static
A round robin built on a fixed list of users keeps handing leads to everyone on it. Someone on leave keeps receiving leads for the whole absence.
2. Availability lives in a different place
Calendars, a leave tool and Omni-Channel presence each hold part of the answer. Unless the routing reads one of them, it cannot use any.
3. Queues and Omni-Channel behave differently
Omni-Channel sends work only to agents whose presence says they can take it. A plain queue sends to nobody in particular, so leads wait for whoever looks. See Omni-Channel leads not routing.
4. Nobody owns the exception
Leave is planned. If the routing is changed by hand for each absence, one will be forgotten.
Check it yourself
SELECT OwnerId, COUNT(Id) FROM Lead WHERE IsConverted = false AND Status = 'New' AND CreatedDate = LAST_N_DAYS:14 GROUP BY OwnerId ORDER BY COUNT(Id) DESC
Compare the people at the top with your leave calendar. A person with many untouched new leads and a long absence is the pattern.
Have it checked every night instead.
Routing Forensics connects as a read-only user and checks this, and the rest of your routing, against your real leads. Register interest and you will be first to get a free health report: what is leaking, where, and what it is worth.
The free scan cannot see this one: it reads assignment rules, flows and queues only. Connected, it is checked every night.