a49ed51568
Buff timers read live through the call host seam, for #2168. `GetPlayerBuffTimeLeft` (`0x4e4930`) and the buff tooltip's time line (`0x532be3`) read the expiry stamps (`0xbc5f68`, written by `0x4e4390`, read by `0x4e4450`). They answer the expiry minus now, 0 once lapsed or unstamped, in seconds. A new `PlayerBuffExpiry` query answers from the world's `AuraDurations`, and the feed no longer joins durations into the pushed list. With no host, the pushed expiry stands. A buff with no catalog row keeps its flag unresolved, as `0x4e44b0` skips the write on a miss. The call resolves it from the expiry, so a server-sent timer still shows. Tests: stamps written in the world read through a lent host, with no push between, and so does the tooltip's time line. They fail on main. Part of #2217 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>