Skip to main content

GovernanceGate

Struct GovernanceGate 

Source
pub struct GovernanceGate { /* private fields */ }
Expand description

Gate backend wrapping the GovernanceEngine.

Bridges the 5D effect-algebra governance engine into the kernel’s gate slot, mapping GovernanceDecision → GateDecision. Governance events are logged to the exochain when a ChainManager is provided.

Implementations§

Source§

impl GovernanceGate

Source

pub fn new(risk_threshold: f64, human_approval: bool) -> Self

Create a governance gate with the given risk threshold.

Source

pub fn open() -> Self

Create an open governance gate that permits everything.

Source

pub fn with_eval_rate_limit(self, config: RateLimitConfig) -> Self

Configure per-principal governance-evaluation rate limiting (WEFT-148).

Source

pub fn with_chain(self, cm: Arc<ChainManager>) -> Self

Attach a chain manager for audit logging.

Source

pub fn exempt_action(self, action: impl Into<String>) -> Self

Grant a per-action exemption from the blocking-deny path.

action must match the gate action string exactly (the chat path uses format!("tool.{name}"), so e.g. "tool.agent_spawn"). An exempted action that the engine would deny or escalate is permitted instead, but the decision is still evaluated and witnessed as a governance.grant. Every other action is unaffected; a gate that never calls this is identical to before. Opt-in only — driven by the [kernel.agent.subagents].governance_grant config flag.

Source

pub fn add_rule(self, rule: GovernanceRule) -> Self

Add a governance rule.

Source

pub fn engine(&self) -> &GovernanceEngine

Access the inner governance engine.

Source

pub fn verify_governance_genesis(&self) -> Option<u64>

Verify that the governance genesis event exists on the chain.

Returns the genesis sequence number if found, or None if no chain is attached or no genesis event exists.

Trait Implementations§

Source§

impl GateBackend for GovernanceGate

Source§

fn governance_snapshot(&self) -> Option<GovernanceSnapshot>

The rules and settings this gate evaluates with, when it is backed by a governance engine. The user daemon exports it as the signed parent policy for its project kernels (ADR-103 D8). None for gates with no rule set.
Source§

fn check(&self, agent_id: &str, action: &str, context: &Value) -> GateDecision

Check whether an agent is allowed to perform an action. Read more
Source§

fn check_teardown( &self, agent_id: &str, action: &str, context: &Value, ) -> GateDecision

Self::check for a teardown (stop / unload / re-adoption of what is already placed): a denial caused only by the node’s trust tier is waived, every other denial (revocation, default deny, rule or threshold) stands. Gates that cannot tell the difference return the plain decision, so they never waive anything.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Pointer = u32

Source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more