“Save, Delete or Commit has failed because is not held”
It means at the time you are doing either your commit or obj-save with write-now flag or obj-delete with immediate flag, you no longer have the lock on the object.
One thing you can do is a trace with the “locking” event type enabled to see if you can spot where you are unexpectedly releasing the lock too early or perhaps neglecting to acquire it in the first place.
If you are using obj-refresh-and-lock, things are more complicated, so be sure it is appropriate to use that method.
Did you try the suggestions provided in other PCC questions? See here, here, here, here, and here .
If you are unable to troubleshoot you may wish to log a support ticket on the My Support Portal. Please enable debug on LockManagerImpl and provide the full logs, work object history screenshots and Agent screenshots of your example. Please provide the like-for-like artefacts if the issue is not occuring on Test.