Skip to content

Portable OTLP export for eval measurement scores #6458

Description

@ascerra

What happens

Eval measurements write a portable local artifact (eval-measurements.jsonl) after each managed agent run, but remote score export is still planned in ADR 0087. When OTEL_EXPORTER_OTLP_* is set, agent spans already export live (ADR 0050); scores do not. Orgs that use MLflow, Phoenix, Jaeger, or another OTLP backend cannot see fitness / measurement results on the same remote trace without a vendor-specific Assessments API in core (which we rejected).

What should happen

When OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_TRACES_ENDPOINT is set (same env as agent traces):

  1. Newly written measurement rows also export over OTLP as GenAI evaluation events (gen_ai.evaluation.result) on the same trace_id, remote-parented to the scored span.
  2. Local eval-measurements.jsonl remains the derived source of truth beside telemetry; OTLP export must not rewrite run-telemetry.jsonl.
  3. Export is fail-open: OTLP failures warn and never fail the measure / agent job.
  4. No vendor score adapters (MLFLOW_*, Assessments REST, etc.) in core or managed workflows.

Vendor-specific UI surfaces (e.g. MLflow Assessments panels) can be a separate consumer that reads the OTLP evaluation event or the JSONL — out of scope for fullsend core.

Context

  • Decision: ADR 0087
  • Guide: Eval Measurements (still marks remote scores as planned)
  • Related: ADR 0050 distributed tracing; dogfood already exports agent spans to MLflow via OTEL_EXPORTER_OTLP_TRACES_*

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/runnerAgent runner behavior and lifecyclepr-openAn open PR already addresses this issuetype/featureNew capability request

    Type

    No type

    Projects

    Status
    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions