DKR-R 1.0.9 - Spectator/online checkpoint repair playtest 11
========================================================

Use this complete fresh package on EVERY PC in the lobby. Do not mix playtests
or copy only the executable into an older folder. Existing saves/mods stay put.

The black "Syncing game" screen in Playtest 10 had a checkpoint timing bug.
An offer started the receiver with a fresh timestamp, but its expiry check used
the earlier timestamp from the start of that same update. The backwards-clock
safety check cancelled the brand-new transfer immediately. The client sent an
acknowledgement followed by a new-checkpoint request, repeating until timeout.

Packet handling and receiver expiry now use the SAME monotonic owner timestamp.
Duplicate offers preserve the transfer in progress. The existing transfer size,
30-second no-progress / five-minute maximum limits, 120-second racing admission
limit, authentication, integrity hashes and exact-state admission remain intact.
New logs identify offer acknowledgement, first data, and genuine transfer expiry.

The five-second countdown, original lobby design, spectators, swaps, invites,
Rollback connection check, mod compatibility and save protection are retained.
No graphics/gameplay/dependency changes are included in this repair.

PLEASE CHECK
1. Two ready racers: five-second countdown, then game/character/track select.
2. Start a race; return to the lobby and start again.
3. Repeat with three/four racers, and with spectators enabled/disabled.
4. Join a spectator, change views and try a safe racing-slot swap.

If anything stops, close normally and retain BOTH host and client runtime.log.
Look for [party][checkpoint] offer acknowledged / first chunk received / decoded
and [party][release]. No game, mod, test executable or AppImage was run here.
Compilation/linking and static checks only; gameplay acceptance remains yours.
Nothing was pushed, published or signed for automatic updating.
