Skip to main content

IRProgram

Struct IRProgram 

Source
pub struct IRProgram {
Show 61 fields pub node_type: &'static str, pub source_line: u32, pub source_column: u32, pub personas: Vec<IRPersona>, pub contexts: Vec<IRContext>, pub anchors: Vec<IRAnchor>, pub tools: Vec<IRToolSpec>, pub memories: Vec<IRMemory>, pub types: Vec<IRType>, pub flows: Vec<IRFlow>, pub runs: Vec<IRRun>, pub imports: Vec<IRImport>, pub agents: Vec<IRAgent>, pub shields: Vec<IRShield>, pub attestations: Vec<IRAttestation>, pub windows: Vec<IRWindow>, pub budgets: Vec<IRBudget>, pub daemons: Vec<IRDaemon>, pub ots_specs: Vec<IROts>, pub pix_specs: Vec<IRPix>, pub ledger_specs: Vec<IRLedger>, pub corpus_specs: Vec<IRCorpus>, pub psyche_specs: Vec<IRPsyche>, pub mandate_specs: Vec<IRMandate>, pub lambda_data_specs: Vec<IRLambdaData>, pub compute_specs: Vec<IRCompute>, pub axonstore_specs: Vec<IRAxonStore>, pub endpoints: Vec<IRAxonEndpoint>, pub extensions: Vec<IRExtension>, pub dataspace_specs: Vec<IRDataspace>, pub resources: Vec<IRResource>, pub fabrics: Vec<IRFabric>, pub manifests: Vec<IRManifest>, pub observations: Vec<IRObserve>, pub intention_tree: Option<IRIntentionTree>, pub reconciles: Vec<IRReconcile>, pub leases: Vec<IRLease>, pub ensembles: Vec<IREnsemble>, pub sessions: Vec<IRSession>, pub topologies: Vec<IRTopology>, pub immunes: Vec<IRImmune>, pub reflexes: Vec<IRReflex>, pub heals: Vec<IRHeal>, pub components: Vec<IRComponent>, pub views: Vec<IRView>, pub channels: Vec<IRChannel>, pub sockets: Vec<IRSocket>, pub observables: Vec<IRObservable>, pub witnesses: Vec<IRWitness>, pub upstreams: Vec<IRUpstream>, pub cors_policies: Vec<IRCors>, pub caches: Vec<IRCache>, pub credentials: Vec<IRCredential>, pub savants: Vec<IRSavant>, pub documents: Vec<IRDocument>, pub deliveries: Vec<IRDeliver>, pub notifications: Vec<IRNotify>, pub synths: Vec<IRSynth>, pub scopes: Vec<IRScope>, pub effects: Vec<IREffectDeclaration>, pub modules: Vec<IRModuleProvenance>,
}
Expand description

v2.67.0 — Clone is additive and every member IR type already derives it. The Cognitive-I/O supervisor owns the compiled program it drives (it outlives the deploy call that built it), and a lifetime-bound supervisor would have to be threaded through ServerState for no benefit.

Fields§

§node_type: &'static str§source_line: u32§source_column: u32§personas: Vec<IRPersona>§contexts: Vec<IRContext>§anchors: Vec<IRAnchor>§tools: Vec<IRToolSpec>§memories: Vec<IRMemory>§types: Vec<IRType>§flows: Vec<IRFlow>§runs: Vec<IRRun>§imports: Vec<IRImport>§agents: Vec<IRAgent>§shields: Vec<IRShield>§attestations: Vec<IRAttestation>

v4.5.0 — signed determinations, riding beside what was proved.

They live at the top of the artifact rather than inside the shield or the step, because the evidence package reads them as their own class of fact: this is the part no gate produced. skip_serializing_if keeps every program without an attestation byte-identical.

§windows: Vec<IRWindow>

v2.27.0 — temporal execution-window guards.

§budgets: Vec<IRBudget>

v2.69.0 — top-level budget declarations. A daemon’s anonymous budget stays on the daemon; these govern EVERY flow that calls the tools they name, including the HTTP endpoints adopters actually deploy.

§daemons: Vec<IRDaemon>§ots_specs: Vec<IROts>§pix_specs: Vec<IRPix>§ledger_specs: Vec<IRLedger>

v2.12.0 — audit-chain (ledger) declarations. Distinct from pix_specs (the retrieval navigator); a ledger binds a hash-linked recorder to an audited surface.

§corpus_specs: Vec<IRCorpus>§psyche_specs: Vec<IRPsyche>§mandate_specs: Vec<IRMandate>§lambda_data_specs: Vec<IRLambdaData>§compute_specs: Vec<IRCompute>§axonstore_specs: Vec<IRAxonStore>§endpoints: Vec<IRAxonEndpoint>§extensions: Vec<IRExtension>

v2.5.0 — closed-catalog extension declarations (compiled). #[serde(skip)] so the field is NOT emitted into the IR JSON — this keeps the static IR-JSON drift-gate fixtures green without regenerating them (the pattern dataspace_specs also used until v2.63.0 un-skipped it). The in-memory field feeds the v2.5.0 type-checker + v2.5.0 PCC (both read &IRProgram); soundness invariant #1 holds via SOURCE re-derivation — both the prover and the verifier read the source-derived IR, which carries the extensions. v2.5.0 hardening (optional): un-skip + regenerate fixtures + bind extensions into the PCC artifact_digest (today the digest omits them; the witness still binds them by re-derivation). Deterministically sorted by name at the end of IR generation (v2.5.0 founder refinement B) so multi-file declaration order can never perturb the proof-bundle hash.

§dataspace_specs: Vec<IRDataspace>

v2.63.0 — the compiled dataspace schemas, SERIALIZED into the IR JSON (un-skipped). History: this field was #[serde(skip)] for byte-identical parity with the retired Python reference frontend (section 8.2.h.1) — which meant the runtime literally could not see a declared dataspace (the v2.63.0 ground-truth finding). The parity constraint is gone; the deploy hook walks this field to instantiate the deterministic columnar engine’s stores. Additive for consumers: no IR deserializer uses deny_unknown_fields (verified 2026-07-12), and IRProgram is Serialize-only — consumers re-derive from source.

§resources: Vec<IRResource>

v1.1.0 — I/O cognitivo primitives (compiled).

§fabrics: Vec<IRFabric>§manifests: Vec<IRManifest>§observations: Vec<IRObserve>§intention_tree: Option<IRIntentionTree>

v1.1.0 (Free Monad root) — populated when the program declares manifests/observes. None ⇒ serialises as null (matches Python when the field is None).

§reconciles: Vec<IRReconcile>

v1.1.0 — Control cognitivo primitives (compiled).

§leases: Vec<IRLease>§ensembles: Vec<IREnsemble>§sessions: Vec<IRSession>

v1.1.0 — Topology + Session (compiled).

§topologies: Vec<IRTopology>§immunes: Vec<IRImmune>

v1.1.0 — Immune system (compiled).

§reflexes: Vec<IRReflex>§heals: Vec<IRHeal>§components: Vec<IRComponent>

v1.3.1 — UI cognitiva declarativa (compiled).

§views: Vec<IRView>§channels: Vec<IRChannel>

v1.6.0 — Mobile typed channels (compiled).

§sockets: Vec<IRSocket>

v2.3.0 — typed WebSocket transports (compiled). Each carries its referenced session protocol + the credit-window backpressure so axon-rs can realise the typed endpoint over a tokio WebSocket.

§observables: Vec<IRObservable>

v2.4.0 — Pauli-sum observable declarations (compiled). Each carries its real-coefficient × Pauli-string terms so axon-rs can build the Hermitian measurement operator M = Σ cₖ Pₖ a quant block measures against. #[serde(skip)] (like extensions / dataspace_specs) so the static IR-JSON drift fixtures stay green; the in-memory field feeds the v2.4.0 checker + the v2.4.0 runtime. The checker resolves quant(observable: …) against the AST symbol table, not this field.

§witnesses: Vec<IRWitness>

v2.23.0 — Advantage-Witness declarations. skip_serializing_if = empty keeps a witness-less program’s IR JSON byte-identical (zero IR-SHA drift, the v2.4.0/v2.21.0 pattern); when present it rides the IR to the enterprise deploy/runtime evaluator (v2.23.0+).

§upstreams: Vec<IRUpstream>

v2.37.0 — outbound vendor connections (compiled). Each carries its axon-facing session binding (protocol/role), the per-tenant config keys (resolve/secret), the auth handshake, the total wire↔session projection (map) and the reconnect/overflow policies, so axon-rs can dial + transcode without vendor-specific code. skip_serializing_if = empty keeps an upstream-less program’s IR JSON byte-identical (zero IR-SHA drift — the standing v2.33.0 discipline).

§cors_policies: Vec<IRCors>

v2.38.0 — named, referenced browser-origin policies. skip_serializing_if = empty keeps a cors-less program’s IR JSON byte-identical (zero IR-SHA drift — the standing v2.33.0 discipline).

§caches: Vec<IRCache>

v2.40.0 — named, referenced result-memoization policies. Same skip_serializing_if = empty IR-SHA discipline as cors_policies.

§credentials: Vec<IRCredential>

v2.46.0 — ephemeral-credential contracts (credential { ttl: grants: }), minted at runtime by the mint flow verb under the attenuation law (authority_only_attenuates). Same skip_serializing_if = empty IR-SHA discipline.

§savants: Vec<IRSavant>

v2.42.0 — long-horizon autonomous research primitives (compiled). Each carries its domain, cognition params, memory binding, compute budget and mandates so the enterprise engine (v2.42.0+) can drive the active-inference loop. Same skip_serializing_if = empty IR-SHA discipline as caches (a savant-less program’s IR JSON stays byte-identical — zero drift).

§documents: Vec<IRDocument>

v2.53.0 — compiled document declarations. Same skip_serializing_if = empty IR-SHA discipline (a document-less program’s IR JSON stays byte-identical). Consumed by the runtime DocumentRenderer tool + the DocumentProvenanceSoundness PCC class.

§deliveries: Vec<IRDeliver>

v2.60.0 — compiled CRM delivery declarations. Same skip_serializing_if = empty IR-SHA discipline (a delivery-less program’s IR JSON stays byte-identical). Consumed by the runtime delivery dispatch (axon::delivery) + the DeliveryProvenanceSoundness PCC class (T920).

§notifications: Vec<IRNotify>

v2.66.0 — governed human notifications (the third egress dual).

§synths: Vec<IRSynth>

v2.42.0 — dynamic tool-synthesis policies (compiled). Same skip_serializing_if = empty IR-SHA discipline as savants.

§scopes: Vec<IRScope>

v2.43.0 — authorization-scope policies (compiled). Same skip_serializing_if = empty IR-SHA discipline as synths.

§effects: Vec<IREffectDeclaration>

v1.17.0 — algebraic effect declarations (compiled). Each declared effect persists into IR so axon-rs can build the per-effect operation table at startup. The CPS state graph for perform/handle sites lives inline within IRFlow.steps (each IRPerform / IRHandlerFrame carries its assigned state_id / frame_id).

v2.87.0 — THIS FIELD IS NOW POPULATED, from .axon source.

It used to be a mirror of the retired Python frontend’s IRProgram.effects field, kept only so a byte-identical structural parity gate stayed green against an empty effects: []. The Python frontend is gone (the 0-.py north star) and the field outlived it carrying nothing — axon-frontend never emitted a single entry, which is why EffectRuntime was constructible only from its own tests.

v2.87.0 gives it its declarations, from effect E { … } in adopter source. It is the CLOSED catalog the dispatcher validates a perform site’s arity against, and the set the design decision resolves a bare perform Emit(x) over.

⚠️ Reusing this field rather than adding one was a deliberate correction mid-cycle: a parallel effect_specs would have made TWO compiled catalogs of one concept in one artifact — the v2.83.0 defect (a third blame vocabulary) committed knowingly. Ask what already reads a concept BEFORE giving it a new home.

§modules: Vec<IRModuleProvenance>

v2.76.0 — per-module provenance of a LINKED program: for every module the linker merged, its path, origin file, both EMS hashes and the virtual-line window its declarations occupy (the driver renumbers each module’s lines by a base offset so diagnostics and IR source_lines stay globally unambiguous — map back with line − line_base). skip_serializing_if = empty keeps every single-file program’s IR JSON byte-identical (zero IR-SHA drift — the standing v2.33.0 discipline).

Implementations§

Trait Implementations§

Source§

impl Clone for IRProgram

Source§

fn clone(&self) -> IRProgram

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 IRProgram

Source§

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

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

impl Serialize for IRProgram

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> 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> 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> 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.
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