pub struct DecisionLoop { /* private fields */ }Expand description
Deterministic coordinator for one evidence-to-command cycle.
§Example
use termivar_scanner::{
AdaptationLimits, BenefitScore, DecisionLoop, DecisionLoopConfig, ExperiencePolicy,
PlanningContext, RiskScore,
};
let planning = PlanningContext::new(
BenefitScore::from_percent(80)?,
100,
RiskScore::from_percent(40)?,
);
let config = DecisionLoopConfig::new(
planning,
AdaptationLimits::default(),
ExperiencePolicy::default(),
32,
)?;
let decision_loop = DecisionLoop::new(config);
assert!(decision_loop.planner().is_empty());Implementations§
Source§impl DecisionLoop
impl DecisionLoop
Sourcepub fn new(config: DecisionLoopConfig) -> Self
pub fn new(config: DecisionLoopConfig) -> Self
Creates an empty coordinator with explicit limits.
Sourcepub fn with_components(
config: DecisionLoopConfig,
rules: RuleEngine,
planner: AttackPlanner,
verification: VerificationPipeline,
adaptive: AdaptivePipeline,
) -> Self
pub fn with_components( config: DecisionLoopConfig, rules: RuleEngine, planner: AttackPlanner, verification: VerificationPipeline, adaptive: AdaptivePipeline, ) -> Self
Creates a coordinator from independently configured subsystems.
Sourcepub fn config(&self) -> DecisionLoopConfig
pub fn config(&self) -> DecisionLoopConfig
Returns the immutable configuration.
Sourcepub fn rules(&self) -> &RuleEngine
pub fn rules(&self) -> &RuleEngine
Returns the reasoning registry.
Sourcepub fn rules_mut(&mut self) -> &mut RuleEngine
pub fn rules_mut(&mut self) -> &mut RuleEngine
Returns the mutable reasoning registry.
Sourcepub fn planner(&self) -> &AttackPlanner
pub fn planner(&self) -> &AttackPlanner
Returns the attack planner.
Sourcepub fn planner_mut(&mut self) -> &mut AttackPlanner
pub fn planner_mut(&mut self) -> &mut AttackPlanner
Returns the mutable attack planner.
Sourcepub fn verification(&self) -> &VerificationPipeline
pub fn verification(&self) -> &VerificationPipeline
Returns the verification pipeline.
Sourcepub fn verification_mut(&mut self) -> &mut VerificationPipeline
pub fn verification_mut(&mut self) -> &mut VerificationPipeline
Returns the mutable verification pipeline.
Sourcepub fn adaptive(&self) -> &AdaptivePipeline
pub fn adaptive(&self) -> &AdaptivePipeline
Returns adaptive policy.
Sourcepub fn adaptive_mut(&mut self) -> &mut AdaptivePipeline
pub fn adaptive_mut(&mut self) -> &mut AdaptivePipeline
Returns mutable adaptive policy.
Sourcepub fn plan_next(
&self,
knowledge: &KnowledgeBase,
experience: &ExperienceStore,
session: &mut DecisionSession,
) -> Result<DecisionPlanningReport, DecisionLoopError>
pub fn plan_next( &self, knowledge: &KnowledgeBase, experience: &ExperienceStore, session: &mut DecisionSession, ) -> Result<DecisionPlanningReport, DecisionLoopError>
Applies reasoning, utility planning, and target-scoped suppressions.
Sourcepub fn plan_next_with_suppressed_actions(
&self,
knowledge: &KnowledgeBase,
experience: &ExperienceStore,
session: &mut DecisionSession,
host_suppressed_actions: &BTreeSet<String>,
) -> Result<DecisionPlanningReport, DecisionLoopError>
pub fn plan_next_with_suppressed_actions( &self, knowledge: &KnowledgeBase, experience: &ExperienceStore, session: &mut DecisionSession, host_suppressed_actions: &BTreeSet<String>, ) -> Result<DecisionPlanningReport, DecisionLoopError>
Applies reasoning and planning while honoring host policy suppressions.
Explicit suppressions are combined with experience and adaptive-session suppressions. They remain visible as policy exclusions in the returned planner audit record. A host that later submits passive or active evidence must use the matching suppression-aware submission method so adaptive execution is reauthorized against current policy.
Sourcepub fn submit_passive(
&self,
knowledge: &KnowledgeBase,
experience: &mut ExperienceStore,
session: &mut DecisionSession,
) -> Result<DecisionOutcomeReport, DecisionLoopError>
pub fn submit_passive( &self, knowledge: &KnowledgeBase, experience: &mut ExperienceStore, session: &mut DecisionSession, ) -> Result<DecisionOutcomeReport, DecisionLoopError>
Evaluates evidence produced by the outstanding action.
Sourcepub fn submit_passive_with_suppressed_actions(
&self,
knowledge: &KnowledgeBase,
experience: &mut ExperienceStore,
session: &mut DecisionSession,
host_suppressed_actions: &BTreeSet<String>,
) -> Result<DecisionOutcomeReport, DecisionLoopError>
pub fn submit_passive_with_suppressed_actions( &self, knowledge: &KnowledgeBase, experience: &mut ExperienceStore, session: &mut DecisionSession, host_suppressed_actions: &BTreeSet<String>, ) -> Result<DecisionOutcomeReport, DecisionLoopError>
Evaluates passive evidence under an explicit current host policy.
Adaptive directives that continue automated work require this explicit context, even when the set is empty. This prevents replay or a mixed planning/submission API from silently forgetting host authority.
Sourcepub fn submit_active(
&self,
knowledge: &KnowledgeBase,
experience: &mut ExperienceStore,
session: &mut DecisionSession,
baseline: &KnowledgeSnapshot,
after_probe: &KnowledgeSnapshot,
) -> Result<DecisionOutcomeReport, DecisionLoopError>
pub fn submit_active( &self, knowledge: &KnowledgeBase, experience: &mut ExperienceStore, session: &mut DecisionSession, baseline: &KnowledgeSnapshot, after_probe: &KnowledgeSnapshot, ) -> Result<DecisionOutcomeReport, DecisionLoopError>
Evaluates evidence produced by an explicit active verification probe.
Sourcepub fn submit_active_with_suppressed_actions(
&self,
knowledge: &KnowledgeBase,
experience: &mut ExperienceStore,
session: &mut DecisionSession,
baseline: &KnowledgeSnapshot,
after_probe: &KnowledgeSnapshot,
host_suppressed_actions: &BTreeSet<String>,
) -> Result<DecisionOutcomeReport, DecisionLoopError>
pub fn submit_active_with_suppressed_actions( &self, knowledge: &KnowledgeBase, experience: &mut ExperienceStore, session: &mut DecisionSession, baseline: &KnowledgeSnapshot, after_probe: &KnowledgeSnapshot, host_suppressed_actions: &BTreeSet<String>, ) -> Result<DecisionOutcomeReport, DecisionLoopError>
Evaluates active evidence under an explicit current host policy.
See Self::submit_passive_with_suppressed_actions for why adaptive
execution requires an explicit, replay-time host authority context.
Trait Implementations§
Source§impl Clone for DecisionLoop
impl Clone for DecisionLoop
Source§fn clone(&self) -> DecisionLoop
fn clone(&self) -> DecisionLoop
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more