705bcdcf37
An explicit X-Hermes-Session-Id client re-sending a pre-rotation id read the closed parent's stale history slice, bound the turn and the wake target to the closed parent, and — once the detached delivery writer adopted the live tip — could no longer consume a late delegation delivery row persisted on the tip, while still being granted wake_capable="1". Resolve the client-addressed id through the same canonical resolve_resume_session_id resolution the delivery writer (gateway/wake.py) and /v1/runs use, before loading history: the read, the turn, and the wake binding all select the live continuation tip. Response headers (SSE and JSON) keep echoing the client-provided id, so the external identity stays stable across rotations regardless of when a turn rotates relative to prepared response headers. Compression-tip read/write routing and the stable-echo identity contract originate from #13437 (manuelschipper), ported onto the post-refactor route owner with real-SessionDB regressions (JSON and streaming). Reported-and-investigated-by: shojikumaru (Sho + Alpha) via #98619 Co-authored-by: manuelschipper <11737902+manuelschipper@users.noreply.github.com>