Skip to main content

IrEffectNode

Struct IrEffectNode 

Source
pub struct IrEffectNode {
Show 17 fields pub id: String, pub kind: IrEffectKind, pub binding: Option<String>, pub required_capabilities: Vec<String>, pub construct_use: Option<IrConstructUse>, pub idempotency_key: String, pub span: SourceSpan, pub timeout_seconds: Option<u64>, pub access_grants: Vec<IrAccessGrant>, pub turn_skills: Vec<String>, pub resource: Option<String>, pub agent: Option<String>, pub workflow_target: Option<String>, pub endorsed: bool, pub declassified: bool, pub selected_by: Option<(String, String)>, pub exec_target: Option<IrExecTarget>,
}

Fields§

§id: String§kind: IrEffectKind§binding: Option<String>§required_capabilities: Vec<String>§construct_use: Option<IrConstructUse>§idempotency_key: String§span: SourceSpan§timeout_seconds: Option<u64>

Creation-anchored deadline from a timeout <duration> clause.

§access_grants: Vec<IrAccessGrant>

Turn-access grants (with access to …) lowered onto an agent.tell effect as authority-narrowing metadata (Proposal A). Empty for non-grant effects.

§turn_skills: Vec<String>

Turn-scoped skills (with skills [...]) pinned onto an agent.tell effect as provenance (context-assembly Phase 7). Recorded, not enforced — the owned catalogue stays discover-all. Empty for effects without a skill pin.

§resource: Option<String>

The named resource (file store / channel) a direct effect touches, if any — e.g. the store of a read/write. Surfaced so information-flow analysis can see rule-body data flows, not just turn-access grants. None for effects that touch no named resource. Not part of the .ir snapshot.

§agent: Option<String>

The agent a tell addresses (its target), surfaced so information-flow analysis can model the turn’s egress to that agent’s provider. None for non-tell effects. Not part of the .ir snapshot.

§workflow_target: Option<String>

The workflow an invoke addresses, surfaced so information-flow analysis can enumerate and govern invoke membrane ports. None for non-invoke effects. Not part of the .ir snapshot.

§endorsed: bool

The endorsed source marker (DR-0027 I-IFC3): the author declared this effect (a coerce) an integrity-raising crossing. Surfaced so the trusted surface is visible at the source crossing point. Not part of the .ir snapshot.

§declassified: bool

The declassified source marker (DR-0027 I-IFC3): the author declared this coerce a confidentiality-lowering crossing (its output schema bounds the leak). Surfaced for audit. Not part of the .ir snapshot.

§selected_by: Option<(String, String)>

The innermost case <scrutinee> { <pattern> => … } arm this effect sits in, as (scrutinee, pattern) — the discriminated-families selector. Lets the IFC checker apply NMIF-on-the-selector: a crossing (endorsed/declassified) selected by a low-integrity discriminant is rejected (DR §5.6 / §7.4). None for effects outside any case. Not part of the .ir snapshot.

§exec_target: Option<IrExecTarget>

The exec surface form — raw command string vs manifest capability (spec/std-script.md “Static checks” item 2) — surfaced so check-time gates (hosted-raw demotion, manifest resolution) classify the effect from the AST instead of re-scanning rule-body text. None for non-exec effects. Not part of the .ir snapshot.

Trait Implementations§

Source§

impl Clone for IrEffectNode

Source§

fn clone(&self) -> IrEffectNode

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IrEffectNode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for IrEffectNode

Source§

impl PartialEq for IrEffectNode

Source§

fn eq(&self, other: &IrEffectNode) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for IrEffectNode

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.