usecrate::error::Result;usecrate::types::{ExecutionResult, Outcome};/// Scores execution results and checks constraints.
////// The evaluator is the most critical component in EGRI.
/// It must be immutable during the loop — never mutate the evaluator
/// and the artifact in the same trial.
pubtraitEvaluator{/// The artifact type, for access during evaluation if needed.
typeArtifact;/// Evaluate execution results and produce a scored outcome.
fnevaluate(&self, artifact:&Self::Artifact, execution:&ExecutionResult)->Result<Outcome>;}