diff --git a/crates/libsy-llm-client/tests/observability.rs b/crates/libsy-llm-client/tests/observability.rs index aefae5bc2..fec486ca5 100644 --- a/crates/libsy-llm-client/tests/observability.rs +++ b/crates/libsy-llm-client/tests/observability.rs @@ -455,6 +455,8 @@ fn request_with_metadata(session_id: &str, correlation_id: &str) -> Request { metadata: Some(Metadata { session_id: Some(session_id.to_string()), correlation_id: Some(correlation_id.to_string()), + task_kind: Some("code_review".to_string()), + agent_role: Some("reviewer".to_string()), extra_metadata: Some(BTreeMap::from([( "tenant".to_string(), "obs-tenant-1".to_string(), @@ -723,6 +725,15 @@ async fn successful_run_records_metrics_spans_and_decision_log() -> switchyard_l run_span.fields.get("outcome").map(String::as_str), Some("ok") ); + // Semantic harness labels: bounded classes, distinct from the high-cardinality ids above. + assert_eq!( + run_span.fields.get("task_kind").map(String::as_str), + Some("code_review") + ); + assert_eq!( + run_span.fields.get("agent_role").map(String::as_str), + Some("reviewer") + ); // Host-defined labels ride in generically via Metadata.extra_metadata. assert!( run_span diff --git a/crates/libsy/src/observability.rs b/crates/libsy/src/observability.rs index e0f1f06c2..7eb7f3891 100644 --- a/crates/libsy/src/observability.rs +++ b/crates/libsy/src/observability.rs @@ -109,6 +109,8 @@ pub(crate) fn run_span(algorithm: &str, request: &Request) -> Span { session.id = tracing::field::Empty, agent_id = tracing::field::Empty, task_id = tracing::field::Empty, + task_kind = tracing::field::Empty, + agent_role = tracing::field::Empty, correlation_id = tracing::field::Empty, extra_metadata = tracing::field::Empty, outcome = tracing::field::Empty, @@ -122,6 +124,8 @@ pub(crate) fn run_span(algorithm: &str, request: &Request) -> Span { ("session_id", &metadata.session_id), ("agent_id", &metadata.agent_id), ("task_id", &metadata.task_id), + ("task_kind", &metadata.task_kind), + ("agent_role", &metadata.agent_role), ("correlation_id", &metadata.correlation_id), ] { if let Some(value) = value {