Parent tasks
Work bigger than one task hangs its parts on a parent (board #755; a
generalization of an epic). It is one tag on the child, parent:#12, so
there is no new machinery: a task's children are the tasks that name it.
- One parent, no cycles.
parentholds one value, likeproject. Parents nest: an epic of epics is a parent with a parent. - A parent is as complete as its least complete child, automatically (owner, 2026-09-30). When a child moves, the store moves the parent in the same commit, attributed to whoever moved the child, and so on up the chain. Least complete is by lane order: inbox, freezer, backlog, ready, in-progress, review, done. A child that ended obsolete or rejected isn't holding anything back, so it doesn't count. When every counting child is done, the parent is done and closes; a new or reopened child reopens it.
- A parent's status isn't set by hand while it has children: the refusal says it follows its parts, and which are holding it back.
- A parent doesn't drag its parts (owner, 2026-10-06): it is
organizational first. To move a whole piece of work, move its unfinished
parts —
virta parts #12 freezer, or the board's offer when you drag a parent — and the parent follows them. - Progress is derived, never stored:
3/7is three of seven counting children done.
virta child #12 "The first part" # files a child of #12 (its project, kind, area, priority)
virta set #40 parent=#12 # makes an existing task a part of #12
virta parent #40 "The epic" # files a parent for #40, at #40's status
virta parts #12 freezer # moves #12's unfinished parts; #12 follows
virta list "parent:#12" # its parts