DeepSeek v4 Flash returns finish_reason=length when reasoning uses all output tokens. Partial row extraction via regex recovers complete rows from truncated JSON instead of failing with 400 error. Also: extra_body reasoning_effort for Kilo/OpenRouter proxied providers