It should not be possible to create a new trace without also creating a root span. The current API allows for an undefined gap between creating a trace, and opening a span. In this gap, a traceId is set on the thread (and logged messages) without occurring inside of an observed operation.