Tracking issue
Align otel-cli's environment-variable context propagation with the OpenTelemetry env-carriers specification, adopting the shared Go carrier rather than maintaining custom carrier behavior.
Mirrors upstream equinix-labs/otel-cli#390 (filed by @pellared). We're tracking our own decomposition here.
Spec / library
Decisions for our fork
- Adopt
envcar (not a from-scratch reimplementation). We already depend directly on go.opentelemetry.io/otel + otel/sdk + otel/semconv, so a contrib propagator is a natural extension, not a foreign dependency.
envcar@v0.69.0 requires otel core v1.44.0 and Go 1.25 — so the dependency bump is a real, separately-tracked prerequisite.
- TRACESTATE + BAGGAGE share the same composite-propagator plumbing, so they're folded into a single follow-up issue.
Already satisfied in our fork
exec already injects into a child env copy (otelcli/exec.go builds a separate childEnv; the parent environment is never mutated). The spec's "inject into the child process environment copy" ask needs no change beyond routing it through the carrier.
Sub-issues (do in order)
Out of scope (for now)
- Recording baggage as span attributes / setting tracestate on emitted spans — propagation passthrough only unless we decide otherwise.
- Replacing the otel-cli-specific
--tp-* flags or the shell-sourceable tp-carrier file format; those stay and must keep working (clear migration path required).
Tracking issue
Align otel-cli's environment-variable context propagation with the OpenTelemetry env-carriers specification, adopting the shared Go carrier rather than maintaining custom carrier behavior.
Mirrors upstream equinix-labs/otel-cli#390 (filed by @pellared). We're tracking our own decomposition here.
Spec / library
Decisions for our fork
envcar(not a from-scratch reimplementation). We already depend directly ongo.opentelemetry.io/otel+otel/sdk+otel/semconv, so a contrib propagator is a natural extension, not a foreign dependency.envcar@v0.69.0requires otel core v1.44.0 and Go 1.25 — so the dependency bump is a real, separately-tracked prerequisite.Already satisfied in our fork
execalready injects into a child env copy (otelcli/exec.gobuilds a separatechildEnv; the parent environment is never mutated). The spec's "inject into the child process environment copy" ask needs no change beyond routing it through the carrier.Sub-issues (do in order)
envcarcarrier for TRACEPARENTOut of scope (for now)
--tp-*flags or the shell-sourceabletp-carrierfile format; those stay and must keep working (clear migration path required).