Source code for ralph.recovery.classified_failure

"""Structured classified failure model."""

from __future__ import annotations

from dataclasses import dataclass, field
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from .failure_category import FailureCategory


[docs] @dataclass(frozen=True) class ClassifiedFailure: """A failure with its category, attribution, and budget-counting decision.""" category: FailureCategory reason: str attributed_agent: str | None attributed_phase: str counts_against_budget: bool original_exception: BaseException | None raw_message: str reset_session: bool = field(default=False)