A method, optionally a computer-implemented method, of causing one or more robots to execute a mission in an environment, the method comprising: for a robot of the one or more robots, accessing mission data for the mission including or associated with tasks that are executable to cause the robot to execute maneuvers; executing the tasks according to the mission data to cause the robot to execute the maneuvers and, as the tasks are executed, monitoring at least one of the robot or the environment; detecting an event based on the monitoring, during execution of a task of the tasks; mapping the event to a level of contingency of a plurality of levels of contingency; transitioning from the task to another of the tasks according to the level of contingency; and executing the other of the tasks; and wherein: the mission data includes a task graph in which the mission is modeled, the task graph expressed as a directed graph and including task nodes representing the tasks that are connected by edges representing transitions between the tasks; executing the tasks includes traversing the task graph including the task nodes; when a task node representing the task is visited, calling on a task library of the tasks that are executable to cause the robot to execute the maneuvers, thereby causing the robot to execute a maneuver; and transitioning from the task to the other of the tasks includes transitioning from the task node on an edge (614, 622, 626) that connects the task node to another of the task nodes representing the other of the tasks, the edge associated with the level of contingency. for a robot of the one or more robots, accessing mission data for the mission including or associated with tasks that are executable to cause the robot to execute maneuvers; executing the tasks according to the mission data to cause the robot to execute the maneuvers and, as the tasks are executed, monitoring at least one of the robot or the environment; detecting an event based on the monitoring, during execution of a task of the tasks; mapping the event to a level of contingency of a plurality of levels of contingency; transitioning from the task to another of the tasks according to the level of contingency; and executing the other of the tasks; and wherein: the mission data includes a task graph in which the mission is modeled, the task graph expressed as a directed graph and including task nodes representing the tasks that are connected by edges representing transitions between the tasks; executing the tasks includes traversing the task graph including the task nodes; when a task node representing the task is visited, calling on a task library of the tasks that are executable to cause the robot to execute the maneuvers, thereby causing the robot to execute a maneuver; and transitioning from the task to the other of the tasks includes transitioning from the task node on an edge (614, 622, 626) that connects the task node to another of the task nodes representing the other of the tasks, the edge associated with the level of contingency. the mission data includes a task graph in which the mission is modeled, the task graph expressed as a directed graph and including task nodes representing the tasks that are connected by edges representing transitions between the tasks; executing the tasks includes traversing the task graph including the task nodes; when a task node representing the task is visited, calling on a task library of the tasks that are executable to cause the robot to execute the maneuvers, thereby causing the robot to execute a maneuver; and transitioning from the task to the other of the tasks includes transitioning from the task node on an edge (614, 622, 626) that connects the task node to another of the task nodes representing the other of the tasks, the edge associated with the level of contingency.