Some info
In general, soft deletions are hard deleted
with the database is opened. This happens at most every hour, with the
last time recorded in the database.
I'm not aware of any outstanding bugs
with how this works, and it looks like your pure 9+ configuration (client,
template, server) is working fine. Understanding that some 8.5.x users
(client + template) are working, can you upgrade the problem users to the
9+ configuration and see if the issue persists?
One possibility is if a user has ever
set the system time ahead, then this time could have been set forward as
well, in which case the logic that determines if it is time to expire the
soft deletions won't fire until an hour after whatever time the user set
on the system.
If nothing above helps, DEBUG_NSF_SOFT_DELETES=1
can help collect additional information on why this isn't working. I'd
recommend opening a PMR in that case so Support can guide you through its
use.