====== v7.3.5 — Mode preferences and safer updates ====== Published October 27 UTC on [[https://github.com/Aves-Knoot/poolrotater-v7-pilot/releases/tag/v7.3.5|GitHub]] and the signed pilot feed. Publication and download do not mean every host has installed it; check [[status:start|Live Lobbies]] for current room versions. ===== Player changes ===== * Preferred difficulty is kept separately by ruleset. Catch no longer shares Standard's preference; Standard, Taiko, Mania 4K and Mania 7K retain their separate scopes. Older mixed Standard/Catch records remain intact and are not guessed or copied into Catch. ===== Host and update changes ===== * Scheduled empty-room recreation waits while a maintenance drain is pending. A shared admission fence prevents an automatic refresh from replacing a room while an update is establishing its drain. * A proven controller failure after the affected rooms have closed can be retried by the staged update timer. Unknown ownership, partial transactions and unproven failures remain held for review. * Existing configurations, room intent, OAuth authorization, enrollment, catalogs, ratings and statistics are preserved. The preference database schema remains compatible with supported hosts on different versions. **First-transition limitation:** The scheduled-refresh fence takes effect after v7.3.5 is running. An outgoing v7.3.3 or v7.3.4 worker does not yet have it, so a scheduled room refresh during this upgrade can still make the drain stop for review. A hold is not an installed update; retain state and use supported recovery. Occupied rooms are not force-closed. The signed feed offers this controller update to supported v7.3.3 and v7.3.4 installations. Rooms drain independently at safe empty boundaries; the controller update waits for all required rooms and bookings to clear. Deliberately stopped slots remain stopped. A host with an uncertain operation retains its state for review. ===== Validation ===== The exact runtime was tested with full catalogs on a separate donor using synthetic providers and credentials. The tests covered active booking and occupied-room protection, a configuration edit while waiting, helper interruption and retry, an empty sibling draining, an injected controller failure followed by guarded automatic recovery, preserved settings and data, and recovery-helper pin refresh. Focused and broader regression suites passed. One donor test observer rejected its own receipt because it used the wrong field name; an independent supplemental check verified the recorded worker identity, empty/idle pre-close state, completed native proof and post-upgrade preservation. The observer did not retain its original in-memory leave-dispatch timestamp. No actual osu! room was used for donor testing. Runtime SHA-256: ''644f2cba96e720c06343b54fd7feb82ad2924e63d02c69260d8cfca5b32925f2''.