Key takeaway
A trace records what the instrumentation and collection path retained. Missing telemetry does not, by itself, prove an operation was absent.
Follow identity before drawing a complete execution
A trace view can look like a complete request because its boxes connect neatly. The archive may still omit an uninstrumented service, lose propagated context or retain only selected requests. Before using it as technical evidence, separate the recorded graph from the operations the graph is expected to describe.
OpenTelemetry describes traces as spans linked through trace identity, span identity and parent relationships. Context propagation lets spans from different processes be correlated. A root has no parent; a child refers to a parent span. Those structural meanings give the reviewer a concrete check before any claim about performance or failure rates.
A root and an unresolved parent are different cases
This hypothetical archive uses short symbolic IDs for readability; they are not literal OpenTelemetry wire identifiers. Trace T1 contains root R1 and child C1, whose parent is R1. Trace T2 contains C2 with a nonempty parent reference R2, but R2 is absent from the supplied archive. The second row must not be silently converted into a legitimate root.
The completed structural decision accepts the observed T1 parent/child link and flags T2’s missing parent as unresolved. The omission might relate to instrumentation, propagation, export, filtering, retention or incomplete extraction. The supplied rows do not determine which explanation is correct.
T3 adds another explicit gap: a log reference suggests a relevant trace existed, but no trace rows were supplied. That reference can motivate an authorized investigation; it cannot invent the missing spans, their durations or the success of the underlying operation.
| Synthetic evidence | Supported observation | Unsupported shortcut |
|---|---|---|
| T1: R1 has no parent; C1 points to R1 | One recorded root/child relationship | Every service call was recorded |
| T2: C2 points to absent R2 | Dangling parent in supplied scope | Treat C2 as a new root or say R2 never ran |
| T3: log reference; no supplied spans | Trace coverage question remains | Reconstruct a complete execution from the reference |
Record the sampling decision at its actual stage
OpenTelemetry distinguishes head and tail sampling. A head decision is made early without inspecting the whole trace. Its consistent probability approach is designed to choose whole traces using trace identity. Missing spans should not automatically be blamed on that mechanism; investigate the actual instrumentation and pipeline configuration.
Tail sampling considers all or most spans and can retain traces based on errors, latency or attributes. An archive deliberately enriched for errors may be useful for investigating those cases while being unsuitable for a raw production failure-rate claim. Record which policy/version acted at each stage, including any upstream head sampling and later filtering.
Consider a hypothetical retained set with ten error traces and ninety other traces, selected under an error-favoring policy. Ten divided by one hundred is a ten-percent retained-trace share. With the source request population and inclusion probabilities unresolved, that arithmetic is not an estimate that ten percent of production requests failed. Traces and requests also need an explicit counting relationship.
Return a coverage record with separate graph and population claims
A sampling policy document describes an intended selection rule. It does not prove that every chosen span reached the archive. OpenTelemetry notes operational constraints for stateful tail samplers, including resource pressure and possible fallback to simpler techniques. Inspect the actual configuration and relevant collection evidence for the period being described.
Build a coverage record from instrumented services, propagation configuration, collection/export stages, policy changes, known losses and supplied time boundaries. Keep late-arriving spans or corrections identifiable. A missing parent in a provisional extraction may need another check after the agreed closing procedure; it should not become a permanent execution assertion without that review.
Use a controlled synthetic request to exercise the declared instrumented path if an authorized technical check is needed. Compare expected emitted spans, observed collected spans and final exported spans separately. The proposed test is a way to locate a gap, not a reason for a prospective recipient to access production systems without separate authority.
The completed review describes one observed T1 relationship, a T2 parent gap, a T3 coverage question and a selected population whose production denominator is unknown. That is a more useful description than declaring the entire archive complete or dismissing it because one span is absent. An investigation task can use selected traces without needing a representative frequency estimate.
Return the graph exceptions and sampling periods with the result. State which claim needs complete parent relationships and which needs population evidence. Keep attributes and payloads within their approved handling scope, and retain the missing evidence as a specific question for the observability owner.