Pretty much this, unless I'm missing something. An earlier version of the program actually used DAGs, but I found it a little underconstrained. I got pretty excited when I discovered multitrees, as it seemed to be exactly what I needed the whole time.
[x] Task
├──[x] Sub-task (1)
│ ├──[x] Sub-sub-task (2)
│ └──[x] Sub-sub-task
├──[x] Sub-task (3)
│ ├──[x] Sub-sub-task (2)
│ └──[x] Sub-sub-task
└──[x] Sub-task
by creating a link from (3) to (2). The tree command would actually omit the second occurrence of (2), since the algorithm visited each node just once.On the same note, I wonder what is the relation between dags/multitrees and semilattices. They seem to be very similar concepts afaict.
There are so many ways to structure todos. In this case, it appears to be using subtasks specifically to break things down in various ways, and it's a cool implementation.
I personally think of todos as having dependencies, like a simplified PERT chart, which would more require a DAG. If I brought in the ability to generalize groups of that graph (or in the other direction, take a general node and "break it down" into a group of nodes), I guess I'm thinking of a multi-graph there. That sounds really hard. :)