Taskwarrior virtual tag logic

23 Mar 2021 | all notes

Information about this is a bit scattered in the Taskwarrior docs, but the two main sources are:

The information below is what I figured out by trial and error (using taskwarrior 2.5.3).

Mandatory virtual tag sets

Task status

The following 4 virtual tags are mutually exclusive, and any task will have exactly one of them:

(There is also the RECURRING tag for recurring events which is not covered here.)

Task dependencies

The following 2 virtual tags are mutually exclusive, and any task will have exactly one of them:

TODO what are the conditions for a BLOCKING task?

Optional virtual tags

Task readiness

Task activeness

Both the start date (and with it the virtual tag) are removed when a task is completed or deleted. However, a currently active task maintains its ACTIVE state when it is assigned a wait date (and thus changes to a WAITING task status).

Task dueness

Like with ACTIVE, all of the following tags are only applied to PENDING and WAITING tasks.

When a task has a due date it is given the following virtual tags if the due date is within the same named time unit as ‘now’ independently of whether the actual due date is in the past or the future from now: YEAR, QUARTER, MONTH, WEEK, TOMORROW, TODAY, DUETODAY (not sure what’s the difference there?), YESTERDAY

There are also two mutually exclusive tags:

Task expiry

Any task with an until date carries the UNTIL virtual tag, which seems to not interact with the any of the other tags. Upon reaching the until date, the task is automatically deleted (not sure what happens with the until date or the tag at this point).

Comments