bamboo-engine 2026.10.22

Execution engine and orchestration for the Bamboo agent framework
Documentation
use super::*;

#[tokio::test]
async fn child_control_fence_survives_placeholder_adoption_and_resets_with_owner() {
    let router = SessionActivationRouter::new();
    router
        .install_owner_placeholder_for_test("parent", "run-a")
        .await;
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await,
        None
    );
    assert_eq!(
        router
            .child_completion_successor_run("parent", true, None)
            .await
            .as_deref(),
        Some("run-a")
    );
    let mut owner = router.register_run("parent", "run-a").await.unwrap();
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await
            .as_deref(),
        Some("run-a")
    );
    owner.begin_finalization().await;
    assert!(owner.finish(0).await.unwrap().is_none());

    let mut successor = router.register_run("parent", "run-b").await.unwrap();
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, Some("run-a"))
            .await,
        None
    );
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await,
        None
    );
    successor.begin_finalization().await;
    assert!(successor.finish(0).await.unwrap().is_none());
}

#[tokio::test]
async fn only_a_replayed_fence_for_this_owner_is_retained() {
    let router = SessionActivationRouter::new();
    let mut owner = router.register_run("parent", "run-a").await.unwrap();
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, Some("foreign-run"))
            .await,
        None
    );
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, Some("run-a"))
            .await
            .as_deref(),
        Some("run-a")
    );
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await
            .as_deref(),
        Some("run-a")
    );
    owner.begin_finalization().await;
    assert!(owner.finish(0).await.unwrap().is_none());
}

#[tokio::test]
async fn finalizing_completions_stay_deferred_and_absent_owners_are_not_created() {
    let router = SessionActivationRouter::new();
    assert_eq!(
        router
            .child_completion_successor_run("absent", true, Some("old-run"))
            .await,
        None
    );
    assert!(router.states.lock().await.is_empty());
    let mut owner = router.register_run("parent", "run-a").await.unwrap();
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await,
        None
    );
    owner.begin_finalization().await;
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await
            .as_deref(),
        Some("run-a")
    );
    assert!(owner.finish(0).await.unwrap().is_none());
    assert_eq!(
        router
            .child_completion_successor_run("parent", false, None)
            .await,
        None
    );
}