Your task is being moved but because your current sort column is 'Priority' when you restart the program it will resort all the tasks by 'Priority'.
If you turn off sorting ('Sort > Unsorted') then you will see that the task positions do actually get saved properly.
Moving subtasks to the top is tricky because it's quite easy to accidentally make the task a sibling of the parent which I think is what was happening for you.
To help you know what is going to happen, ToDoList displays slightly different 'insertion markers':
This 'longer' insertion marker indicates that the task will be a sibling
![](https://lh3.googleusercontent.com/-paV7KIdnbnM/WYLx1vlwvBI/AAAAAAAAAfw/B-8PxBO9TkghEaTekhE6wFABsdGgZ21yQCLcBGAs/s320/sibling_task.png)
This 'shorter' insertion marker indicates that the task will be a subtask
![](https://lh3.googleusercontent.com/-kMeVmTlG1Pg/WYLx50PxS0I/AAAAAAAAAf0/mHiAPpYhPJIQjYeEe9VJe18u4EC8i4T9ACLcBGAs/s320/sub_task.png)
Dan