diff --git a/crates/libsy/src/observability.rs b/crates/libsy/src/observability.rs index f972bd0c1..102212ea4 100644 --- a/crates/libsy/src/observability.rs +++ b/crates/libsy/src/observability.rs @@ -119,6 +119,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, @@ -132,6 +134,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 { diff --git a/crates/libsy/tests/observability.rs b/crates/libsy/tests/observability.rs index 64271716b..127e862e4 100644 --- a/crates/libsy/tests/observability.rs +++ b/crates/libsy/tests/observability.rs @@ -433,6 +433,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(), @@ -625,6 +627,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