// SPDX-License-Identifier: LGPL-3.0-only
#![allow(missing_docs)]
//! Pluggable process-lifecycle gating.
//!
//! The ring asks the provider whether a process-state transition is permitted.
//! The error is a lexicon-coordinate string naming the deny reason; application
//! code defines what coordinates exist and how they map to user-facing messages.
use crate::quad::Tree;
/// Pluggable gate evaluation for process-state transitions.
pub trait ProcessGate: Send + Sync {
fn evaluate_transition(&self, tree: &Tree) -> Result<(), String>;
}
/// No-op default — permits all gate transitions.
pub struct NoGate;
impl ProcessGate for NoGate {
fn evaluate_transition(&self, _tree: &Tree) -> Result<(), String> {
Ok(())
}
}