- Cap the helper grace at 2.0 s (and ignore non-finite or <= 0 env
values) and wait only 0.5 s after SIGKILL, so a raised
HERMES_TUI_GATEWAY_SHUTDOWN_GRACE_S cannot push close_all() past the
backend SIGTERM -> SIGKILL budget.
- close_all() also awaits closes already running in the background
(dead remnants, capacity evictions); the registry now holds those
tasks, which also keeps them from being garbage-collected.
- _discard_output sleeps on EOF instead of spinning on a readable dead
master, and catches ValueError from select() like read() does.