I've got the weirdest problem I've ever come across, I'm not brilliant with class based systems so maybe its not magento related...
So the basics are that the reset password function isn't working. I've narrowed it down to $customer not being received from a function that is definitely returning it.
resetPassword() in \vendor\magento\module-customer\Model\AccountManagement.php
gets the $customer from
get() in \vendor\magento\module-customer\Model\ResourceModel\CustomerRepository.php
which gets the $customer from retrieveByEmail() in
so retrieveByEmail() definitely gets the customer, but get() doesn't ever receive it.
I've tested it by swapping retrieveByEmail() to just retrieve() with a single customerID and it works ( up to the next problem which is save($customer) but thats for another day.
I just can't figure out why retrieveByEmail() returns a $customer object but get() doesn't receive it?
edit thanks @Kristoffer, I have checked the storeID is the correct store and retrieveByEmail is sending back the same customerID 67 that I tested with retrieve(67).
I can't see how or why get() isn't receiving the customer that retrieveByEmail is sending, but it is receiving that from retrieve()