The explanation of the data model that I prefer is:
A task can be in multiple projects but only a single section within each project.
A task can be a subtask of another task. This task does not inherit any team, projects, or sections from the parent task.
These two types of task hierarchy do not relate with each other. A parent task can be in 10 different projects while its subtask is in a different 10 projects.
Lets review the steps of your drag and drop:
“2-11 asdf” task was a subtask of “2 No Section but with subtasks”
“2-11 asdf” has no project and/or accompanying section, as it does not inherit anything from it’s parent.
“2-11 asdf” was added to the project under the “16 new section re” section.
“2-11 asdf” remains a subtask of “2 No Section but with subtasks”.
After Dragging again:
From what I see, the UI understands this drag to mean you no longer want it as a subtask anymore.
“2-11 asdf” is no longer a subtask of “2 No Section but with subtasks”
“2-11 asdf” remains in the project under the “16 new section re” section.
In regards to the sync token, it is acting correctly. On the second drag, no change happened at the project level, as the only change was breaking the parent subtask connection. Because subtasks don’t inherit anything from the project, they are not considered “in” the project.
One of the reasons my team loves this functionality is that we create public subtasks on private tasks that we need other people’s input on. Because our subtask does not inherit anything from the project, our subtask can be exposed/added to a public project while keeping the parent task private. We also add subtasks on a parent that are unrelated to the projects the parent is in. If the subtasks inherited the project, we would notify everyone watching the project, not just the task.
Hopefully this helps! Let me know if my rambling didn’t make sense!