Trace CSV schema contract¶
This document defines the stable CSV schema contract for Gossipper trace files
used by automation and CI integrations.
If any column name or order changes, the contract has changed and downstream parsers may break.
Scope¶
-trace_statsibling_statsCSV file-trace_rttsibling_rttCSV file-trace_screensibling_screenCSV file
-trace_stat header (exact order)¶
timestamp,elapsed_ms,total_calls,success_calls,failed_calls,active_calls,success_ratio,calls_per_second,retransmits,timeouts,avg_call_ms,call_stddev_ms,avg_invite_ms,invite_stddev_ms,rtp_packets_sent,rtp_packets_received,rtcp_sender_reports,rtcp_receiver_reports,rtcp_packets_received,failure_timeout,failure_unexpected_sip,failure_transport_error,failure_parse_error,failure_scenario_error,failure_cancelled,interval_ms,interval_calls_per_second,delta_total_calls,delta_success_calls,delta_failed_calls,delta_retransmits,delta_timeouts,delta_rtp_packets_sent,delta_rtp_packets_received,delta_rtcp_sender_reports,delta_rtcp_receiver_reports,delta_rtcp_packets_received,delta_failure_timeout,delta_failure_unexpected_sip,delta_failure_transport_error,delta_failure_parse_error,delta_failure_scenario_error,delta_failure_cancelled
Notes:
- emission cadence is controlled by -fd (seconds)
- rows include both cumulative and per-interval (delta_*) values
-trace_rtt header (exact order)¶
timestamp,call,name,value_ms
Notes:
- flush cadence is controlled by -rtt_freq (completed calls)
- final buffered RTT rows are flushed on shutdown
-trace_screen header (exact order)¶
timestamp,total_calls,success_calls,failed_calls,active_calls,success_ratio,calls_per_second,interval_ms,interval_calls_per_second,avg_call_ms,avg_invite_ms,retransmits,timeouts,failure_timeout,failure_unexpected_sip
Notes:
- emission cadence is controlled by -fd (seconds)
- final snapshot row is flushed on shutdown
- rows include both cumulative and per-interval throughput fields
Change policy¶
When changing these headers:
- update this document
- update compatibility docs (
docs/compatibility.md,docs/statistics-mapping.md) - update/extend tests that enforce the schema contract
- call out the change in release notes for parser users
Backward-compatible alias policy¶
To keep parser behavior deterministic, Gossipper does not emit parallel
"legacy alias" CSV columns for old field names/order.
Policy:
- one canonical header contract is emitted for each trace file
- if a breaking rename/reorder is ever required, treat it as a contract change and communicate it explicitly in release notes
- parser migration should use a small external mapping/adapter layer rather than dual-writing multiple header variants in runtime traces