Memory now carries only live tables — a sweep puts finished rooms to bed after 30 minutes and anything untouched after a day, and getRoom wakes a sleeping room from its ledger the moment anyone asks (the seed plus the log IS the game). The room cap counts ledgers on disk, not just rooms awake. Share-card PNGs render once per share id and cache immutable. Rate-limit kicks use terminate() so an abuser cannot hold the socket open by ignoring the closing handshake. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF