Body field in traffic.ndjson / battle-traffic.ndjson is now a real nested
JSON object instead of an escaped JSON string. Parse-on-write is wrapped in
ParseBodyOrKeep with a string-fallback so a future non-JSON caller doesn't
crash the line write.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>