The in-poll release test from the last commit sent its later put on an
unreliable packet. The server never reads unreliable schema frames, so
that put was never offered and the test failed. The release it meant to
reach happens when an answer arrives from another thread while a poll
runs. The test clock now accepts a held reply at its next wall-clock
read, which models that. A Ping (unreliable) then gets exactly one
release ack and no Pong. Reliable data on a channel the server does not
read gets exactly its own end-of-poll ack.
Two answers queued in one poll, an acceptance for one session and a
refusal for another, each reach only their own session. This kills
take_answers' session guard replaced by false.
A session is kept at exactly its idle and lifetime limits and expires one
millisecond past them. The expiry comparisons moved into this cut's diff
when every removal went through remove_session.
cargo-mutants --in-diff over the cut: 57 mutants, 44 caught, 8 unviable,
5 timeouts (take_answers scan mutants that never terminate), 0 missed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>