usecrate::error::Result;usecrate::ledger::Ledger;usecrate::types::Mutation;/// Proposes mutations to the current artifact state.
////// This is where LLM reasoning is most valuable — generating
/// semantically meaningful mutations rather than blind search.
pubtraitProposer{/// The artifact type to mutate.
typeArtifact;/// Propose a mutation given the current artifact and search history.
fnpropose(&self,
artifact:&Self::Artifact,
ledger:&Ledger,
)->Result<(Mutation, Self::Artifact)>;}