Episode Descriptor
@Serializable
How a decision episode can end, besides the replication ending underneath it.
hasTerminalCondition is a boolean rather than the condition itself, deliberately: the condition is a Kotlin lambda over model state, which is exactly the kind of thing a description that travels without a model cannot carry. What a consumer can be told is that one exists.