DKR-R v1.0.9 Lobby Stability Playtest 4
Version: 1.0.9-stability-playtest.4

WHAT CHANGED
Spectators now prepare the selected track's verified custom music while
staging a confirmed host checkpoint, before any guest RAM is restored.
Previously, a fresh spectator could reject every race checkpoint because
the track's music had not been prepared locally. Repeated downloads did not
fix the missing preparation. Video and audio could return at the results
screen, where that active music was no longer required.

Only the selected recording is decoded, with the existing size, decoded
shape and PCM SHA proof checks. The staged/active music owner retains its
samples. Ordinary rollback, speculative ticks, silent track previews and
audio mixing still cannot open a decoder. No checkpoint/wire layout changes.

The log now records spectator admission, first confirmed playback per scene
and concrete restore failures. Five consecutive failures without confirmed
playback stop the affected spectator with the reason, rather than silently
retrying forever. Successful playback clears that failure streak. Racers
do not wait for spectator preparation or retry completion.

All playtest.3 race-start, mod admission, retries, cache, offline-copy, music,
save and launcher layout fixes remain intact. The peer identifiers remain
unchanged because this repair changes observer resource preparation only.
Use matching playtest.4 builds on all test machines for a clear comparison.

INSTALL
Extract the complete Windows ZIP into a new folder and launch DKR-R.exe.
On Linux make the x86_64 AppImage executable and launch it normally. This
retains the existing Linux baseline: GLIBC 2.38 / GLIBCXX 3.4.32 or newer.

PLEASE TEST
1. Fully close and reopen the spectator launcher, to test a cold music cache.
2. Create a spectator-capable lobby with two racers and one spectator.
3. Start Koopa Troopa Beach with the same mods used in the failing test.
   Check the spectator sees the race and hears its audio throughout.
4. Finish the race, return through results/Track Select, select another
   custom track, race again, then return to Koopa Troopa Beach.
5. Join as a spectator during an active race. Check Follow and All Splits.
6. Test a stock track and a custom track with sequence music as well.
7. Keep downloaded mods for offline play enabled and retain the playtest.3
   test of repeated modded joins without duplicate copies/settings changes.
8. If a spectator fails, send that machine's full runtime.log plus the host
   log. Look for [spectator][music], [spectator][admission] and
   [spectator][playback] messages; keep the actual failure reason intact.

VALIDATION
The automated admission checks use actual production music code with tiny
synthetic WAVs and memory fields. A negative control using the old resident
code must reproduce the missing-loading-boundary error. The handler fixture
uses the actual party handler with a synthetic game owner. Retained race and
offline-copy checks run on both platforms. These do not execute a game, user
ROM, RSP or AppImage. Live multiplayer/Steam Deck testing remains necessary.
No website/API deployment, release publishing or updater signing is needed.
