For a decision-step to be operational, there must be an effective procedure by which the agent executing the plan can determine which decision to make. In Cassandra, the action of deciding which contingency to execute is modeled as the evaluation of a set of condition-action rules of the form:
Cassandra annotates each decision-step in a plan with the set of rules that will be used to make that decision. The executing agent can then make the decision by evaluating these rules when it comes to the decision-step in the course of executing the plan. In order to evaluate a decision-rule, the executing agent must be able to determine whether the rule's antecedent holds. The preconditions for the decision-step must thus include goals to know the current status of each condition that appears as an antecedent of a rule in this condition. The preconditions of a decision-step become open conditions in the plan in the same way as do the preconditions of any other step.
As the intended effect of evaluating the decision-rules is to choose the appropriate contingency given the outcome of a particular uncertainty, the conditions should be diagnostic of particular outcomes of the uncertainty. The executing agent cannot, of course, directly determine the outcome of an uncertainty, so it must infer it from the presence or absence of effects that depend upon that outcome.
The most straightforward approach to constructing the antecedent conditions of a decision-rule would be to analyze the plan operators to identify all the effects that could be expected to result from a given outcome of the uncertainty, and make the condition be the conjunction of these effects. However, this turns out to be overkill. In fact, it is only necessary to check for those effects of a given outcome of an uncertainty that are actually used to establish preconditions in the contingency associated with that outcome. In other words, it is necessary only to verify that the contingency plan can, in fact, succeed. This has the interesting consequence that the executing agent might, in principle, end up selecting a contingency plan even though the outcome of the uncertainty were not the one with which that plan was associated. Notice that this would not cause a problem in the execution of the plan, since it would only occur if all the conditions for the plan's success were met. In fact, as we shall see, Cassandra depends on this effect in certain circumstances.
The antecedent condition of the decision-rule is thus a conjunction of all the direct effects of a particular outcome that are used to establish preconditions in the contingency plan for that outcome. Decision-rules are constructed incrementally as the plan is elaborated. We discuss Cassandra's construction of these rules in more detail in Section 4.2.3 below. The approach we have used in formulating Cassandra's decision-rules is consistent with Morgenstern's observation that an agent can execute a plan if it can ``make sure'' that all the events in the plan are executable [Morgenstern 1987].