Skip to content

karenina.scenario.outcome_evaluation

outcome_evaluation

Outcome criterion evaluation for completed scenario executions.

Classes

Functions

evaluate_outcome

evaluate_outcome(
    node: Any, result: ScenarioExecutionResult
) -> bool | int | float

Evaluate an outcome node against a completed execution result.

Boolean check nodes (TurnCheck, ResultCheck, CrossTurnCheck) compose via AllOf/AnyOf/AtLeastN. Aggregation types (CountTurns, FirstMatchIndex) return int.

Source code in src/karenina/scenario/outcome_evaluation.py
def evaluate_outcome(
    node: Any,
    result: ScenarioExecutionResult,
) -> bool | int | float:
    """Evaluate an outcome node against a completed execution result.

    Boolean check nodes (TurnCheck, ResultCheck, CrossTurnCheck) compose
    via AllOf/AnyOf/AtLeastN. Aggregation types (CountTurns, FirstMatchIndex)
    return int.
    """
    if isinstance(node, CountTurns):
        return _evaluate_count_turns(node, result)
    if isinstance(node, FirstMatchIndex):
        return _evaluate_first_match_index(node, result)

    # Boolean check nodes + composition
    return evaluate_composition(node, lambda leaf: _evaluate_check_leaf(leaf, result))