defmodule Skuld.Coroutine.InternalSuspended do @moduledoc """ Fiber suspended with an internal scheduler dependency (channel, batch, await). ## Env semantics `env.state` is *stale* — the scheduler extracts it into the shared pool state at suspension time. On resume, the scheduler injects fresh shared state from the pool, so `env.state` is overwritten before the continuation runs. The env is stored in full so `cancel/2` has access to `leave_scope` and any stale-but-useful state for cleanup (e.g. Writer logs). """ alias Skuld.Comp.Env alias Skuld.Comp.InternalSuspend alias Skuld.Comp.Types @type t :: %__MODULE__{ id: term(), k: Types.k(), suspend: InternalSuspend.t(), env: Env.t() } defstruct [:id, :k, :suspend, :env] end