anda_brain 0.12.1

🧠 Anda Brain (大脑) — Autonomous Graph Memory for AI Agents
Documentation
use super::*;
use crate::consequence::*;

#[tokio::test]
async fn r6_paired_utility_reuses_native_verdict_and_cannot_make_revoked_skill_executable() {
    let store = Arc::new(object_store::memory::InMemory::new());
    let (space, rt, clock, cfg, plan, basis) = p4::fixture(store.clone()).await;
    rt.enroll("r6-paired".into(), plan.clone(), basis)
        .await
        .unwrap();
    p4::cohort(
        &rt,
        "r6-paired",
        Executor::new(&cfg, &plan, space.memory.nexus()),
        false,
        true,
    )
    .await;
    clock
        .advance_to(time_ms(&plan.execution.cutoff).unwrap())
        .unwrap();
    let settled = rt.settle("r6-paired".into()).await.unwrap();
    let mut config = UtilityConfig {
        version: "paired-utility-fixture-v1".into(),
        method: AttributionMethod::PairedRevisionV1,
        observer: cfg.observer.clone(),
        task_family: plan.task_family.clone(),
        metric: "success".into(),
        window: plan.observation_window.clone(),
        environment_digest: plan.environment_digest.clone(),
        tool_versions: plan.tool_versions.clone(),
        parameters: Some(UtilityParameters {
            step_cap: 0.1,
            minimum_independent_samples: 2,
            gain: 0.5,
            minimum_confidence: 0.9,
            initial_utility: Some(0.5),
        }),
        calibration: None,
        automatic: false,
        apply: true,
        rank: true,
    };
    config.calibration = Some(UtilityCalibration {
        reviewed_by: "kip:principal:fixture-reviewer".into(),
        contract_digest: config.contract_digest().unwrap(),
        approved: true,
        material: json!({"protocol_test_only":true}),
    });
    let utility = crate::consequence::utility::UtilityRuntime::new(
        space.memory.nexus(),
        store,
        space.recall_receipts(),
        Some(config.clone()),
        true,
        Some(Arc::downgrade(&rt)),
    );
    utility
        .enqueue(settled.evaluation_ref.clone().unwrap())
        .await
        .unwrap();
    let applied = utility
        .evaluate(plan.candidate_revision.clone())
        .await
        .unwrap();
    assert_eq!(applied.receipt.status, "applied", "{applied:?}");
    assert_eq!(applied.receipt.independent_samples, 8);
    assert_eq!(applied.receipt.new_value, Some(0.6));
    let revision = crate::runtime_api::full_read(
        &space.memory.nexus().system_session(),
        &plan.candidate_revision,
    )
    .await
    .unwrap();
    let ranked = utility
        .rank(&[crate::recall_receipt::pin(&revision).unwrap()])
        .await
        .unwrap();
    assert_eq!(
        ranked.get(&plan.candidate_revision),
        Some(&0.6),
        "revision={}, sample={:?}",
        revision["_system"],
        rt.utility_sample(settled.evaluation_ref.as_deref().unwrap(), &config)
            .await
    );
    let skill = p4::skill(&space.memory.nexus()).await;
    rt.submit_safety_signal(
        auth(),
        SafetySubmission {
            space_instance: settled.space_instance,
            job_id: "r6-paired".into(),
            signal_key: "r6-safety".into(),
            observed_at: anda_cognitive_nexus::time::now(),
            evidence_digest: content_digest(&json!("independent safety fixture")).unwrap(),
            reason: "unsafe action".into(),
        },
    )
    .await
    .unwrap();
    assert!(
        !rt.procedure_status(&skill)
            .await
            .unwrap()
            .recommendation_allowed
    );
    assert!(
        utility
            .rank(&[crate::recall_receipt::pin(&revision).unwrap()])
            .await
            .unwrap()
            .is_empty()
    );
    utility.shutdown().await;
    rt.shutdown().await;
    space.close().await.unwrap();
}