Traces are stored as compressed .jsonl.gz files, optionally with a .content.jsonl.zst sidecar for externalized large span inputs. The raw .jsonl buffer is deleted after compression. Last line is always traceend with summary stats. Start there.
For compressed traces, large spanstart inputs (>10 KB) are replaced with {"ref": " ", "size": N} stubs. The full input lives in the companion .content.jsonl.zst file. If you see a ref stub, use traqo ui (loads on click) or the Python readcontent() API to retrieve the original input.
| tracestart | tracerversion, input, metadata, tags, threadid | | spanstart | id, parentid, name, input, metadata, tags, kind | | spanend | id, parentid, name, durations, status, output, metadata, tags, kind | | event | name, data (arbitrary dict) | | traceend | durations, output, stats, children |