Runtime & Integrations · Integrations

Integrations

Which adapter implements which port.

Adapters are the concrete implementations of the six ports. They convert external shapes into EvalGlass contracts immediately and never emit scores, authority, or verdicts. The required set is local-only — no vendor SDKs.

An adapter’s whole job is to translate at the edge so vendor objects never travel inward. Keep the SDK import inside the adapter, off the required path, and the core stays effect-free.

The required adapters

AdapterPortNotes
LocalJsonlDatasetStoreDatasetStoreReads JSONL examples/references; a malformed line becomes a Diagnostic; absent output ⇒ non_evaluable.
LocalJsonlTraceSourceTraceSourceReads recorded behavior into TraceEnvelopes.
OpenConventionTraceSourceTraceSourceMaps OpenTelemetry / OpenInference dict spans — no SDK; a missing id/output ⇒ trace_mapping_incomplete, not a low score.
SubprocessTaskRunnerTaskRunnershell=False; every failure becomes a typed Diagnostic with output=None.
FakeJudgeModelJudgeModelThe required-tier judge: deterministic fake evidence, no network.
FilesystemResultStoreResultStoreWrites runrecord.json + scorecard.json; never recomputes a verdict or promotes a baseline.
CiAnnotationSinkScoreSinkGitHub annotations rendered from typed verdict/status data.
Shared internals adapters/_jsonl.py (UTF-8 JSONL reading) and adapters/_span_mapping.py (open-convention span mapping) are internal helpers shared across adapters — not ports, and not nodes in the boundary.

Next steps