Async Spec Placeholder Discard
Prevent stale speculative frames from underflowing async scheduler placeholder accounting.
We run a Qwen3-0.6B completion service with asynchronous scheduling and ngram speculative decoding. During an RLHF evaluation loop, 24 concurrent requests generate long completions while the control plane calls /reset_prefix_cache?reset_running_requests=true after each weight refresh.
The reset endpoint reports success, but scheduler instrumentation sometimes records a negative output-placeholder count immediately afterward. In one 100-second run with 11 resets, this happened 9 times; a representative event had num_output_placeholders=-4 while stale async output was still pending. Once that invalid state reaches a normal output update, assert request.num_output_placeholders >= 0 can terminate EngineCore.
Could you make cache resets safe while these speculative requests are in flight? Repeating the reset must not leave resumed requests with invalid counters or stall their progress, and when no reset occurs, speculative tokens should still be accepted or rejected as they are today.