The fingerprint hashes the whole source tree, so ANY code difference
between the prefill and decode trees tripped it — and it raised inside
try_ensure_parallel_info on the DECODE scheduler's event loop, crashing
the decode cluster. In practice that means a prefill-only restart with
a one-line fix (today: the inflight liveness fix) kills decode.
The checks that actually guard the KV transfer contract (page size,
kv cache dtype) remain hard errors; the fingerprint is now a warning
that still surfaces both hashes and source roots.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>