Skip to content

Evidence and trajectories

Frameworks grade evidence. Softprobe’s job is to capture and correlate that evidence (native result bundles, logs, OTLP) — not to re-implement Softprobe scorers over trajectories.

OTLP is the observation boundary: Softprobe normalizes OpenTelemetry (and known framework attributes) into a canonical trajectory view for drill-down and optional projection.

Evidence pipeline

Evidence types

TypeExamples
Native framework resultsPromptfoo/DeepEval reports, assertion detail
Model outputAssistant text, structured JSON
TrajectoryTool calls, ordering, span attributes
ReferenceExpected answer, rubric, gold labels (framework-owned)
ContextRetrieved documents, fixture API responses
Environment stateDB snapshot, file tree, harness verify output
MediaScreenshots, audio

All Softprobe-stored material is an EvidenceArtifact with content digests and provenance. Softprobe does not require Softprobe “evidence selectors” as a Softprobe evaluator ABI.

Evidence before score

Projected measurements should cite evidence references so reviewers can answer: what did the grader see?

If required evidence is absent, FrameworkAttempt status is missing_evidence — never an implicit zero score.

Canonical trajectory

One shared trajectory library converts OTLP spans into ordered steps for correlation and UI:

  • generation, tool, retriever, guardrail, sub-agent spans
  • normalized tool names and arguments (per supported semconv profile)
  • diagnostics when conventions are partial or unknown

Frameworks may consume OTEL independently (e.g. Promptfoo tracing). Softprobe does not force Softprobe scorers to re-parse OTLP.

Outcomes beat transcripts

When an environment verifier (harness / framework oracle) can check final state, prefer that over trajectory-only or output-only judges — still inside the framework suite. Softprobe EnvironmentVersion provides isolation and mounts; Softprobe does not own Softprobe outcome-oracle scorers.

Runner vs subject spans

  • Subject spans — agent under test (traceparent from FrameworkAttempt)
  • Runner / eval-execution spans — Softprobe + framework runner (runner_version_id, native result digest)

Online policies exclude eval-execution traces by default to prevent recursive evaluation loops.

See Correlation and traces.

Zero code changes · Full-context visibility · Cost optimization