Large traces and performance
Perseval is designed to keep trace size out of the UI’s retained-object count.

Bounded exploration
Section titled “Bounded exploration”- run pages: at most 200 rows;
- span pages: at most 500 rows;
- cached pages: at most 8 per list;
- UI delta application: at most 512 coalesced deltas per frame;
- finalized topology: persisted once rather than reconstructed during queries;
- child loading: lazy by direct parent;
- payload display: explicit and bounded.
Selection uses stable identities rather than vector indices. Loading a new batch does not reload the complete trace.
Development qualification
Section titled “Development qualification”The current development suite has streamed and explored deterministic 20,000- and 100,000-span fixtures without an observed crash or swap. In the recorded 100,000-span run, peak physical footprint was approximately 200 MiB and the UI retained about 1,001 visible/cached rows rather than all spans.
Recorded live release-profile ingestion on the qualification machine was approximately:
| Fixture | Ingest and projection time |
|---|---|
| 20,000 spans | 18.6 seconds |
| 100,000 spans | 150.8 seconds |
Warm summary and page queries remained within the development acceptance budget.
Dataset provenance
Section titled “Dataset provenance”The scale fixtures are deterministic expansions of real agent-trace shapes. They qualify paging, topology, storage, and responsiveness. They do not prove production prevalence, every vendor mapping, broken-trace reconstruction quality, or SpanLink behavior at the same scale.
Practical producer guidance
Section titled “Practical producer guidance”- send retryable batches instead of one maximum-size request;
- keep attributes bounded and externalize payload-like content;
- preserve parent IDs and SpanLinks;
- use explicit project/build/session identity;
- watch queue, journal, projection, and analysis counters separately.
If a trace is slow to explore, narrow the active project/build/session scope, expand only relevant branches, and use search on loaded pages. Full Trace intentionally avoids an unbounded “load all spans” operation.