Returns the ids of background shells owned by session_id that are still
running (issue #84, phase 2a). Mirrors the sync get_shell/remove_shell
helpers over the global registry — not async because the registry is a sync
DashMap and status() is a sync read. A shell is included only when its
stored session_id equals Some(session_id) and status() is "running",
so completed shells and shells belonging to another session (or none) are
excluded.