Task properties

Reified as a data structure, a task must consist of, at minimum, four properties:

  • identifier, a unique string identifying the task
  • state, the task state, by default Unplanned
  • title, a few word overview to aid readers
  • definition of done, the definition of what must be done to complete the task

Tasks may additionally possess the following properties:

  • dependencies, a set of identifiers of the tasks on which this task depends
  • supersedes, a set of identifiers of tasks which this task supersedes
  • customer, a team
  • performer, a team
  • deadline, a date by which the performer has agreed to complete the task
  • estimated, the duration of work estimated by the performer
  • started, a date when work was begun by the performer
  • actual, the duration of work actually required by the performer
  • completed, a date when work was completed by the performer
  • confirmed, a date when work was confirmed complete by the customer
  • tags, a set of arbitrary strings which can be used for topical organization
  • comments, a map of comment objects, where each key is an identifier and each value is a comment object containing the fields:
    • author, a team
    • date, a timestamp
    • body, a Markdown document

Durations are specified in terms of whole-number hours, days, weeks, or months. Mixed precisions are not allowed on purpose - we don't want to imply more precision than accuracy.

Tasks in the state Planned (or later) must possess at least the properties:

  • dependencies
  • customer
  • performer
  • deadline
  • estimated

Tasks in the state In Progress (or later) must additionally possess:

  • started

Tasks in the state In Review (or later) must additionally possess:

  • actual
  • completed

Tasks in the state Done must additionally possess:

  • confirmed

Next, see Accountability.