## Context `serde_json::to_string(&m.parts)` called on every message, including common empty-parts case. ## Solution Short-circuit: `if m.parts.is_empty() { "[]".to_string() }`. **Epic:** #861 | **Effort:** XS | **Crate:** zeph-core