mistral_common rejects an assistant turn carrying neither content nor tool calls, while other chat templates ignore it, so an OpenAI-compatible request that works elsewhere failed on Mistral models. Drop those turns before templating; turns with tool_calls, multimodal content, or real text are untouched, and a trailing assistant message is already consumed upstream as the continue_final_message prefix.