#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum FinalPlanGateDecisionReason {
PolicyNoRequirement,
StructuredPlanAccepted,
PendingSemanticConsistencyLlm,
SemanticConsistencyAccepted,
SemanticInconsistencyRewrite,
SemanticInconsistencyRewriteExhausted,
StaticSemanticsFailed,
PlanParseFailed,
PlanRewriteExhausted,
UnexpectedPendingSemanticOnFinalArrived,
}
impl FinalPlanGateDecisionReason {
pub(crate) fn as_str(self) -> &'static str {
match self {
Self::PolicyNoRequirement => "policy_no_requirement",
Self::StructuredPlanAccepted => "structured_plan_accepted",
Self::PendingSemanticConsistencyLlm => "pending_semantic_consistency_llm",
Self::SemanticConsistencyAccepted => "semantic_consistency_accepted",
Self::SemanticInconsistencyRewrite => "semantic_inconsistency_rewrite",
Self::SemanticInconsistencyRewriteExhausted => {
"semantic_inconsistency_rewrite_exhausted"
}
Self::StaticSemanticsFailed => "static_semantics_failed",
Self::PlanParseFailed => "plan_parse_failed",
Self::PlanRewriteExhausted => "plan_rewrite_exhausted",
Self::UnexpectedPendingSemanticOnFinalArrived => {
"unexpected_pending_semantic_on_final_arrived"
}
}
}
}