async fn dispatch_synthetic_goodbye(
ctx: &Arc<ServerCtx>,
conn_id: u64,
registered_pid: Option<u32>,
)Expand description
Phase E.1b — synthetic Goodbye dispatch for ungraceful disconnects (EOF / read error before the client sent an explicit Goodbye). Without this, the reducer’s process record stays Running and a reconnect from the same live PID hits AlreadyRegistered. Goodbye transitions the record to Exited so re-Register is accepted. (codex P1 #610.)
Idempotent: handle_goodbye is a no-op if no PID is registered or the record is already Exited. Errors during the synthetic dispatch are logged but non-fatal — we’re already on a disconnect path.