Ok, with that in mind, and with a slight variation from soapcalc, you're recipe checks out for the most part. It could be either the lye is a little old or the fact that it's roughly a 30% lye concentration used and the soap didn't gel. I'm leaning more on the latter. Ungelled soaps can remain on the soft side for a while whereas gelled soaps wind up being harder.
Your recipe looks fine to me. I'm agreeing with this being a temperature issue. I recently had the same issue with soaps coming out soft, like the consistency of modelling clay. The problem was the that the air conditioning was on and it was blowing in the area where the soap was "put to bed".
In the future, you might try placing your mold on a heating pad set to low or medium, and covering your mold with a couple of heavy bath towels. Leave the heating pad on for 30-60 minutes and then turn it off. That will help encourage gel so your soap will be firmer when unmolding.
As far as sodium lactate, I use it in just about every batch. I use 1 teaspoon per pound of oils. So for your recipe 2 teaspoons should do the trick. It will help with the firmness of your soap as well. I add it to my lye water after my lye has fully dissolved.
You can give your soft bars a good long cure time, and they will probably firm up on their own. However, if you are like me, and can't leave well enough alone; then I wholeheartedly recommend DeeAnna's "cpop after the fact" method. The instructions can be found here:
https://classicbells.com/soap/cpopAfterTheFact.html . I used it with much success on my soft batches.
All of us have a failed batch now and then :-? , that's just the soap gremlins having their fun
![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
so don't let it discourage you, and happy soaping.