Carries bounded lifecycle-recorder state across mailbox transitions.
PID-bearing watch and pending-exit maps remain private. Public status and queries are derived into safe scalar and retained-event values.
Summary
Types
@type clock() :: (-> integer())
@type refresh_requester() :: (-> term()) | nil
@type t() :: %BeamConsole.Lifecycle.Recorder.State{ active?: boolean(), config: BeamConsole.Recorder.Config.t(), deferred: non_neg_integer(), demanded?: boolean(), eligible: non_neg_integer(), flush_scheduled?: boolean(), history: BeamConsole.Recorder.History.t(), missed_reconciliations: non_neg_integer(), monotonic_clock: clock(), omitted: non_neg_integer(), paused?: boolean(), pending_events: [BeamConsole.Lifecycle.Event.t()], pending_exits: %{ required(String.t()) => BeamConsole.Lifecycle.PendingExit.t() }, reconcile_scheduled?: boolean(), recording_started_at_ms: integer() | nil, recording_started_monotonic_ms: integer() | nil, refresh_pending?: boolean(), refresh_request: refresh_request() | nil, refresh_requester: refresh_requester(), refresh_timeout: pos_integer(), reset_pending?: boolean(), source_epoch: String.t() | nil, start_event_pending?: boolean(), system_clock: clock(), watches_by_pid: %{required(pid()) => BeamConsole.Lifecycle.Watch.t()}, watches_by_ref: %{required(reference()) => pid()} }