Could you provide more details regarding your implementation? Perhaps sharing a sample project (getting one of our demos, adding your code, zip it, and sharing it here), would make it a lot faster to assist you on this, because the snippet that you shared doesn't seem to be wrong, so it's probably somewhere else, but we need to see the code to identify what's causing that.
The project start date is a fixed value based of which all tasks dates are calculated.
So it's meant to be provided and if it's not then the Engine calculates it based on the data but that calculation happens only once.
I am running into similar problem. If a user drags a task before current project start date, I want to rather move the project start date, than deny the task drag change. Is there a setting to enable this behavior with manuallyScheduled === false?