pub fn build_runtime_policy_with_memory(
report: &InvestigationReport,
requirements: &RequirementsProfile,
memory: &ChallengeMemory,
key: &EngineKey,
) -> RuntimePolicyExpand description
Build a RuntimePolicy from an investigation report and
requirements profile, then apply a bounded challenge-memory
adjustment via adjust_runtime_policy.
Convenience wrapper for the common “rebuild policy from scratch” workflow.
§Example
use stygian_charon::challenge_feedback::{
build_runtime_policy_with_memory, ChallengeMemory, ChallengeOutcome, EngineKey,
};
use stygian_charon::build_runtime_policy;
use stygian_charon::types::{
AdapterStrategy, AntiBotProvider, Detection, IntegrationRecommendation,
InvestigationReport, RequirementsProfile, TargetClass,
};
use stygian_charon::vendor_classifier::VendorId;
use std::collections::BTreeMap;
let memory = ChallengeMemory::with_defaults();
let key = EngineKey {
engine: VendorId::Cloudflare,
version: None,
target_class: TargetClass::ContentSite,
tls_profile: None,
};
memory.record(&key, None, ChallengeOutcome::Captcha);
let report = InvestigationReport {
page_title: Some("example.com".to_string()),
total_requests: 100,
blocked_requests: 0,
status_histogram: BTreeMap::new(),
resource_type_histogram: BTreeMap::new(),
provider_histogram: BTreeMap::new(),
marker_histogram: BTreeMap::new(),
top_markers: Vec::new(),
hosts: Vec::new(),
suspicious_requests: Vec::new(),
aggregate: Detection {
provider: AntiBotProvider::Unknown,
confidence: 0.0,
markers: Vec::new(),
},
target_class: Some(TargetClass::ContentSite),
};
let requirements = RequirementsProfile {
provider: AntiBotProvider::Unknown,
confidence: 0.0,
requirements: Vec::new(),
recommendation: IntegrationRecommendation {
strategy: AdapterStrategy::DirectHttp,
rationale: "test".to_string(),
required_stygian_features: Vec::new(),
config_hints: BTreeMap::new(),
},
};
let policy = build_runtime_policy(&report, &requirements);
let with_memory = build_runtime_policy_with_memory(&report, &requirements, &memory, &key);
assert!(with_memory.risk_score >= policy.risk_score);