/*   There are many ways to compile this, but one of them is:
 *
 *     $ dot -Tpng states.gv -o states.png
 */
digraph {
  /*   States. */
  DEFINED; FAILED; STARTED; LOCKED_IN; ACTIVE;

  /*   Relationships between states, labeled where applicable. */
  DEFINED -> DEFINED;
  DEFINED -> FAILED [label = "timeout ≤ MTP"];
  DEFINED -> STARTED [label = "starttime ≤ MTP < timeout"];
  FAILED -> FAILED;
  STARTED -> STARTED;
  STARTED -> FAILED [label = "timeout ≤ MTP"];
  STARTED -> LOCKED_IN [label = "(MTP < timeout) AND (threshold reached)"];
  LOCKED_IN -> ACTIVE [label = "Always"];
  ACTIVE -> ACTIVE;

  /*   Visualization hack to unclutter output. */
  nodesep = 1.2;
}
