Under the hood
Sessions hitting max lifetime can now be released via a poll-loop instead of always hard-terminated.
When a session hits its max lifetime, the session runner now distinguishes three outcomes: releasing immediately if not mid-turn, waiting for the in-flight turn to "park or finish" and then releasing if a hook decided the release, or falling back to the old hard-terminate path. Hard termination now only happens if the in-flight turn's release isn't accepted within the grace window.