Since last time I posted, the libgda-3 work has been finished and checked in. The final patch turned out to be 81K in size. =)
For this post I will describe what I’ve been doing to fix bug #382548. This bug allows you to create dependency loops in tasks.
The simplest type of loop that can be created is this one:

You could create this by first setting task2 as a predecessor of task1 and then indenting task2 to become a child of task1. Planner does not allow you to do it the other way around, first indenting task2 and then adding it as a predecessor of task1.
To see how Planner tries to detect these loops, we’ll have to take a look at libplanner/mrp-task-manager.c.