ROOT CAUSE FOUND: patch_ops.sh only deployed serving-layer files
(tool_parser, reasoning, protocol, serving_chat) but NEVER deployed:
- qwen3_5.py (1712 lines of NaN-safe DeltaNet + CCCL patterns)
- _custom_ops.py (MoE kernel fallback for BI-V100)
- model_runner.py (has_inner_state for DeltaNet MambaCacheManager)
- sampler.py, sequence.py, scheduler.py, arg_utils.py
- xformers.py, paged_attn.py, prefix_prefill.py
- logits_processor.py, mamba_cache.py
The container was running the BASE IMAGE's original qwen3_5.py which has:
- NO NaN clamping (g.clamp, cumsum.clamp, state.clamp)
- NO overflow_cast protection (CCCL pattern)
- NO forward substitution fallback (cuSOLVER unavailable on BI-V100)
- NO batched GEMM MoE decode (3 launches vs 16)
- NO sorted-segment MoE prefill (CCCL histogram pattern)
- NO GDN prefix-cache state save/restore
This explains why Docker logs showed 99.98% NaN in EVERY DeltaNet layer
despite our qwen3_5.py having comprehensive numerical guards.
Also fixes:
- serving_chat.py: n>1 returns 400 instead of clamping (prevents OOM cascade)
- serving_chat.py: improved d07 content fallback (multi-layer extraction)