Decision Context
Everything a rule may know at a decision instant.
The element reuses one instance and updates the epoch-scoped members in place, so a retained context would answer questions about a later epoch than the one the rule thinks it is in. That used to be documented as "retaining it is a bug" and nothing prevented it; it is now enforced — every epoch-scoped member throws StaleDecisionContextException when read outside the action call that supplied it (§4.5.3, G.9 row 6).
The declared-shape members are exempt, and the split is the point: they are constant for the life of the element, so retaining them is harmless and a rule that wants to keep the lever names may. What a rule may not keep is anything that means something different at the next epoch.
Properties
The current value of each lever, or NaN in any position whose lever is a ksl.modeling.decision.descriptor.LeverKind.TRANSACTION — a transaction has no current value, and NaN says so rather than inventing one. A rule that wants "do nothing" wants neutralAction, which is defined for both kinds.
Indexed, not mapped: read at every epoch (§4.2.3).
Do nothing, as each lever declared it (§8.2.3): the current value of a setting, the declared amount of a transaction.
What each observation and each lever is measured in, positionally, null where none was declared (§4.2.4).
Functions
Total of the budget governing the lever at leverIndex, or null if it is in none.