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
| Adapter | Port | Notes |
|---|---|---|
LocalJsonlDatasetStore | DatasetStore | Reads JSONL examples/references; a malformed line becomes a Diagnostic; absent output ⇒ non_evaluable. |
LocalJsonlTraceSource | TraceSource | Reads recorded behavior into TraceEnvelopes. |
OpenConventionTraceSource | TraceSource | Maps OpenTelemetry / OpenInference dict spans — no SDK; a missing id/output ⇒ trace_mapping_incomplete, not a low score. |
SubprocessTaskRunner | TaskRunner | shell=False; every failure becomes a typed Diagnostic with output=None. |
FakeJudgeModel | JudgeModel | The required-tier judge: deterministic fake evidence, no network. |
FilesystemResultStore | ResultStore | Writes runrecord.json + scorecard.json; never recomputes a verdict or promotes a baseline. |
CiAnnotationSink | ScoreSink | GitHub 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.