soma-som-core 0.1.0

Universal soma(som) structural primitives — Quad / Tree / Ring / Genesis / Fingerprint / TemporalLedger / CrossingRecord
Documentation
// 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(())
    }
}