You have already accepted an answer, but I will post another, since you say
My ideal solution would also allow you to write the data model as text, something like
task1 -> task2 -> task3
With a simple declarative syntax. Maybe along the lines of the DOT language. Then the text description could be checked into git and quickly diffed.
I would highly recommend TaskJuggler. I have used it on & off for years. It began life as a tool which would take text & draw Gantt charts, gradually it added new features and I believe that you can now manipulate the data through a GUI.
But, you can still create the data as plain text & have it create visual stuff, but still be able to submit the data to version control, and to diff versions. That’s what you’re after?
TaskJuggler is a modern and powerful, Free and Open Source Software project management tool. Its new approach to project planning and tracking is more flexible and superior to the commonly used Gantt chart editing tools.
TaskJuggler is project management software for serious project managers. It covers the complete spectrum of project management tasks from the first idea to the completion of the project. It assists you during project scoping, resource assignment, cost and revenue planning, risk and communication management.
TaskJuggler provides an optimizing scheduler that computes your project time lines and resource assignments based on the project outline and the constraints that you have provided. The built-in resource balancer and consistency checker offload you from having to worry about irrelevant details and ring the alarm if the project gets out of hand. The flexible as-many-details-as-necessary approach allows you to plan your project as you go, making it also ideal for new management strategies such as Extreme Programming and Agile Project Management.
If you are about to build a skyscraper or just want to put together the release schedule of your open source project, TaskJuggler is the right tool for you. If you just want to draw nice looking Gantt charts to impress your boss or your investors, TaskJuggler might not be right for you. You can of course create nice looking Gantt charts. But it takes a little more effort to master its power. If you are up for this, TaskJuggler will become a companion that you don't want to miss anymore.
I was going to copy/paste all of the features here, but you may as well read them yourself, as the list is comprehensive. There are also examples and good documentation. TaskJuggleris FOSS and coded in Ruby
The [Wikipedia page](https://en.wikipedia.org/wiki/TaskJuggler( is very informative.
This I also very well worth reading, as it shows some simple examples of the text format.
There is more good info at Managing IT Projects in a Text Mode (…and More)