Source code for ralph.policy.explain.phase_explanation
"""Explanation of a single phase."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .commit_policy_explanation import CommitPolicyExplanation
from .loop_policy_explanation import LoopPolicyExplanation
from .verification_explanation import VerificationExplanation
[docs]
@dataclass
class PhaseExplanation:
"""Explanation of a single phase."""
name: str
role: str | None
drain: str
chain: str | None
agents: list[str]
max_retries: int
skip_invocation: bool
on_success: str | None
on_failure: str | None
on_loopback: str | None
bypass_routes: dict[str, str]
decisions: dict[str, str]
loop_policy: LoopPolicyExplanation | None
commit_policy: CommitPolicyExplanation | None
terminal_outcome: str | None
clean_outcome: str | None = None
issues_outcome: str | None = None
is_entry: bool = False
is_terminal: bool = False
verification: VerificationExplanation | None = None
has_parallelization: bool = False
post_commit_routes_info: list[tuple[str, str]] = field(default_factory=list)
workflow_fallback: tuple[str, str | None] | None = None