NodeOTelService): Created at extension activation. Stores tracer ref. Serves foreground agent, CLI wrapper span, Claude synthetic spans.BasicTracerProvider): Created by SDK's OtelLifecycle.initializeOtelSdk(). Replaces A as global. Serves all SDK-native spans.this._tracer still works after override — OTel tracers are bound to their provider at creation time._spanProcessors.push()ReadableSpan → ICompletedSpanDatacopilot_chat.chat_session_id from traceId → sessionId mapIOTelService.injectCompletedSpan() → onDidCompleteSpantraceparent = 00-{traceId}-{spanId}-01otelLifecycle.updateParentTraceContext(sessionId, traceparent)_onDidCompleteSpan.fire()injectCompletedSpan() → _onDidCompleteSpan.fire()_onDidCompleteSpan.fire() (same as foreground)OTelChatDebugLogProvider (trajectory) and ChatDebugFileLoggerService (file)copilot-chat — Extension Provider A spans (foreground, CLI wrapper, Claude synthetic)github-copilot — SDK Provider B spans (CLI native), CLI terminalclaude-code — Claude subprocess metrics/eventsonDidCompleteSpan with copilot_chat.chat_session_id