Simplify traceparent extraction using span context directly
Build it from trace_id/span_id/trace_flags instead of round-tripping
through a HashMap carrier. Also drops the opentelemetry_sdk dep from
quire-server since TraceContextPropagator is no longer needed there.

https://claude.ai/code/session_01Tbgz29e8A9KS4Bh94skkFX
change
commit 0f09a8428fb6c5fdd657d04c0ccde2cc600f6e3a
author Claude <noreply@anthropic.com>
date
parent fb6309f9
diff --git a/Cargo.lock b/Cargo.lock
index 1fbda02..148e9d0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2611,7 +2611,6 @@ dependencies = [
  "miette",
  "mlua",
  "opentelemetry",
- "opentelemetry_sdk",
  "petgraph",
  "predicates",
  "quire-core",
diff --git a/quire-server/Cargo.toml b/quire-server/Cargo.toml
index 42fc8ce..953e502 100644
--- a/quire-server/Cargo.toml
+++ b/quire-server/Cargo.toml
@@ -29,7 +29,6 @@ serde_json = { workspace = true }
 tempfile = { workspace = true }
 thiserror = { workspace = true }
 opentelemetry = { workspace = true }
-opentelemetry_sdk = { workspace = true }
 tracing = { workspace = true }
 tracing-opentelemetry = { workspace = true }
 
diff --git a/quire-server/src/ci/mod.rs b/quire-server/src/ci/mod.rs
index 4b692d8..6c74b34 100644
--- a/quire-server/src/ci/mod.rs
+++ b/quire-server/src/ci/mod.rs
@@ -5,7 +5,7 @@ mod run;
 pub(crate) mod error;
 
 pub use error::{Error, Result};
-use opentelemetry::propagation::TextMapPropagator as _;
+use opentelemetry::trace::TraceContextExt as _;
 pub use quire_core::ci::pipeline::{
     DefinitionError, Diagnostic, Job, Pipeline, PipelineError, StructureError,
 };
@@ -169,12 +169,15 @@ fn run_ref(ctx: &TriggerContext<'_>, pushed_at: jiff::Timestamp, push_ref: &Push
     let session = ApiSession::new(ctx.port);
 
     let span = tracing::info_span!("quire.ci.run", repo = %ctx.event_repo);
-    let traceparent = {
-        let mut carrier = std::collections::HashMap::new();
-        opentelemetry_sdk::propagation::TraceContextPropagator::new()
-            .inject_context(&span.context(), &mut carrier);
-        carrier.remove("traceparent")
-    };
+    let sc = span.context().span().span_context().clone();
+    let traceparent = sc.is_valid().then(|| {
+        format!(
+            "00-{}-{}-{:02x}",
+            sc.trace_id(),
+            sc.span_id(),
+            sc.trace_flags()
+        )
+    });
     let _guard = span.enter();
 
     sentry::with_scope(