/// Late and cancelled run ownership cannot be reliably scheduled in E2E. import albedo/daemon/turn import gleam/erlang/process import gleam/option.{None, Some} import gleeunit/should fn run(id: String, work: turn.Work) -> turn.Run { let pid = process.spawn(fn() { Nil }) turn.Run(id, pid, process.monitor(pid), False, turn.latch(), work) } fn running(id: String) -> turn.Activity { turn.Running(run(id, turn.Turn(None))) } pub fn late_messages_from_an_old_run_are_not_owned_test() -> Nil { let activity = running("current") turn.owner(activity, "old") |> should.equal(None) turn.live(activity, "old") |> should.be_false turn.live(activity, "current") |> should.be_true turn.owner(turn.Resting, "current") |> should.equal(None) } // A cancelled run may still save completed tool results but may not publish // or take queued input. pub fn cancelled_run_still_owns_writes_but_is_not_live_test() -> Nil { let activity = turn.cancel(running("a")) turn.live(activity, "a") |> should.be_false let assert Some(owned) = turn.owner(activity, "a") owned.cancelled |> should.be_true turn.cancel(turn.Resting) |> should.equal(turn.Resting) }