remem-ai 0.6.93

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
mod baselines;
mod diagnostics;
mod fixture;
mod production_pipeline;
mod runner;
#[cfg(test)]
mod tests;
pub mod types;

pub use runner::{run_memory_bench, MemoryBenchOptions};
pub use types::{MemoryBenchCondition, MemoryBenchSuiteFixture};

pub(crate) const SAFE_ABSTENTION_ANSWER: &str = "Insufficient benchmark evidence to answer.";
const PROJECT: &str = "/tmp/remem-memory-bench/repo";

#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct TrustedSecurityReplay {
    pub snapshot_identity: crate::eval::security_snapshot_identity::SnapshotIdentity,
    pub retrieved_event_ids: Vec<String>,
}

pub(crate) struct VerifiedSecurityPolicyState {
    pub active_claim_count: u32,
    pub candidate_count: u32,
    pub summary_input_count: u32,
    pub poisoning_source_scanner_matched: bool,
    pub poisoning_generated_surface_blocked: bool,
}

pub(crate) fn score_verified_security_policy(
    condition: MemoryBenchCondition,
    task: &types::MemoryBenchTask,
    retrieved_event_ids: &[String],
    abstained: bool,
    state: VerifiedSecurityPolicyState,
) -> types::MemoryBenchPolicyOutcome {
    let measurement = types::MemoryBenchPolicyMeasurement {
        verification_path: "capture_observation_candidate_promotion".to_string(),
        measurement_source: "sqlite_production_tables".to_string(),
        source_scanner_config: "scan_source_instruction_pattern(include_opaque_payload=false); generated_surfaces=scan_instruction_pattern(include_opaque_payload=true)".to_string(),
        active_claim_count: state.active_claim_count,
        candidate_count: state.candidate_count,
        summary_input_count: state.summary_input_count,
        poisoning_source_scanner_matched: state.poisoning_source_scanner_matched,
        poisoning_generated_surface_blocked: state.poisoning_generated_surface_blocked,
    };
    diagnostics::score_policy(
        condition,
        task,
        retrieved_event_ids,
        abstained,
        Some(&measurement),
    )
}

pub(crate) fn summarize_verified_security_policy(
    outcomes: &[types::MemoryBenchPolicyOutcome],
) -> types::MemoryBenchPolicySummary {
    types::summarize_policy_outcomes(outcomes)
}

pub(crate) fn replay_trusted_security_snapshot(
    task: &types::MemoryBenchTask,
) -> anyhow::Result<TrustedSecurityReplay> {
    #[cfg(test)]
    let replay_probe = production_pipeline::current_replay_probe();
    let task = task.clone();
    std::thread::spawn(move || {
        #[cfg(test)]
        let _replay_probe_guard = production_pipeline::attach_replay_probe(replay_probe);
        tokio::runtime::Builder::new_current_thread()
            .enable_all()
            .build()?
            .block_on(production_pipeline::trusted_snapshot_replay(&task))
    })
    .join()
    .map_err(|_| anyhow::anyhow!("trusted security snapshot worker panicked"))?
}