pub struct HostControllerSpec {
pub controller_id: String,
pub controller_version: String,
pub operator_kind: NodeKind,
pub priority: u32,
pub added_capabilities: BTreeSet<ControllerCapability>,
pub operator_selectors: Vec<OperatorSelector>,
pub rng_policy: RngPolicy,
pub artifact_policy: ArtifactPolicy,
pub data_requirements: Option<Value>,
pub input_ports: Option<Vec<PortSpec>>,
pub output_ports: Option<Vec<PortSpec>>,
}Expand description
Host-side description of one OperatorController, the input from which a
validated ControllerManifest is mechanically derived.
Construct with HostControllerSpec::new (which fills policy defaults) and
set any explicit overrides on the public fields, then call
HostControllerSpec::derive. The struct is serde-(de)serializable so a
host that drives the core over JSON / PyO3 / the process adapter can ship the
descriptor directly rather than re-implementing the per-kind defaults — the
authoritative wire artifact remains the derived ControllerManifest.
Fields§
§controller_id: StringStable controller id, e.g. controller:nirs4all.model.
controller_version: StringController/runtime version (must be non-empty; checked at derive time).
operator_kind: NodeKindThe node kind this controller serves (Layer-1 lowering output).
priority: u32Resolution priority (lower wins). Defaults to 0; nirs4all’s bridge
uses 20 to keep generic host controllers above native specializations.
added_capabilities: BTreeSet<ControllerCapability>Capabilities to add on top of the kind template (existing vocabulary
only) — e.g. needs_python_gil for a deep-learning model controller, or
consumes_oof_predictions for a stacking meta-model.
operator_selectors: Vec<OperatorSelector>Layer-2 selectors that bind specific operators to this controller. Empty makes the manifest a kind-level catch-all.
rng_policy: RngPolicyRNG policy. Defaults to uses_core_seed.
artifact_policy: ArtifactPolicyArtifact policy. Defaults to serializable.
data_requirements: Option<Value>Optional ModelInputSpec JSON; validated by the manifest if present.
input_ports: Option<Vec<PortSpec>>Override the kind template’s input ports (e.g. a meta-model consuming an
oof prediction port instead of an x data port). None keeps the
template default.
output_ports: Option<Vec<PortSpec>>Override the kind template’s output ports. None keeps the default.
Implementations§
Source§impl HostControllerSpec
impl HostControllerSpec
Sourcepub fn new(
controller_id: impl Into<String>,
controller_version: impl Into<String>,
operator_kind: NodeKind,
) -> HostControllerSpec
pub fn new( controller_id: impl Into<String>, controller_version: impl Into<String>, operator_kind: NodeKind, ) -> HostControllerSpec
A spec with policy/priority defaults and no overrides.
Sourcepub fn derive(&self) -> Result<ControllerManifest, DagMlError>
pub fn derive(&self) -> Result<ControllerManifest, DagMlError>
Derive the ControllerManifest, applying the kind template, merging
added_capabilities, honoring port overrides, synthesizing
data_requirements from the resolved data/target ports when the host did
not supply one, and validating the result.
When the host leaves data_requirements unset, a ModelInputSpec is
synthesized that pins — per data/target input port — the frozen registry
representation id and its type_id; an explicit data_requirements is
always preferred over the synthesized one. Returns
crate::error::DagMlError::ControllerValidation (or an invalid
identifier error) if the composed manifest is not registry-admissible —
e.g. an empty version, or an output port whose required capability the
host neither inherited nor added.
Trait Implementations§
Source§impl Clone for HostControllerSpec
impl Clone for HostControllerSpec
Source§fn clone(&self) -> HostControllerSpec
fn clone(&self) -> HostControllerSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HostControllerSpec
impl Debug for HostControllerSpec
Source§impl<'de> Deserialize<'de> for HostControllerSpec
impl<'de> Deserialize<'de> for HostControllerSpec
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<HostControllerSpec, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<HostControllerSpec, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for HostControllerSpec
impl PartialEq for HostControllerSpec
Source§fn eq(&self, other: &HostControllerSpec) -> bool
fn eq(&self, other: &HostControllerSpec) -> bool
self and other values to be equal, and is used by ==.