Scope
US6 — ingest agent traces from external observability backends: TraceProvider trait + always-on in-memory provider + feature-gated OTLP/Langfuse/OpenSearch/CloudWatch providers + three session mappers (OpenInference, LangChain, OTel GenAI) + trace extractors (including swarm/graph adapters for specs 040/039).
Priority: P2
Tasks
Core trace surface (feature trace-ingest)
Session mappers
Per-backend providers
Extractors
Acceptance
OtelInMemoryTraceProvider round-trips a recorded in-process run back into a scorable Invocation.
- All four backend providers compile + pass their wiremock tests under their respective feature flags.
OtelGenAiSessionMapper handles V1_27 and V1_30 attribute conventions without code changes beyond flipping the enum value.
- Missing attributes surface as
MappingError::MissingAttribute { name } — never panic.
- Disabled-feature backend access produces a clear error (not vague runtime failure).
References
- Spec FR-031 through FR-034
- Success criterion SC-008
- Research R-005
Depends on
#747 (foundational types).
Scope
US6 — ingest agent traces from external observability backends:
TraceProvidertrait + always-on in-memory provider + feature-gated OTLP/Langfuse/OpenSearch/CloudWatch providers + three session mappers (OpenInference, LangChain, OTel GenAI) + trace extractors (including swarm/graph adapters for specs 040/039).Priority: P2
Tasks
Core trace surface (feature
trace-ingest)eval/tests/trace_ingest_test.rs— in-memory round-trip, missing attribute → structured error, partial session →SessionInProgressTraceProvidertrait +TraceProviderError+RawSessionOtelInMemoryTraceProviderwrappingopentelemetry-sdk'sInMemorySpanExporterSession mappers
SessionMappertrait +MappingErrorOpenInferenceSessionMapperLangChainSessionMapperOtelGenAiSessionMapper+GenAIConventionVersionenum (V1_27, V1_30, Experimental) with per-version attribute mapping tablesPer-backend providers
OtlpHttpTraceProvider(featuretrace-otlp) with wiremock-backed testLangfuseTraceProvider(featuretrace-langfuse) with testOpenSearchTraceProvider(featuretrace-opensearch) with testCloudWatchTraceProvider(featuretrace-cloudwatch) with testExtractors
EvaluationLevelenum +TraceExtractortraitSwarmExtractorconsuming spec-040 result typesGraphExtractorconsuming spec-039 result typeseval/tests/us6_end_to_end_test.rs— record → re-load → score; bit-identical scores for deterministic evaluators (SC-008)Acceptance
OtelInMemoryTraceProviderround-trips a recorded in-process run back into a scorableInvocation.OtelGenAiSessionMapperhandles V1_27 and V1_30 attribute conventions without code changes beyond flipping the enum value.MappingError::MissingAttribute { name }— never panic.References
Depends on
#747 (foundational types).