Runtime & Integrations · Runtime Harness
Ports
Where, exactly, effects enter.
Ports are
typing.Protocols — DatasetStore, TraceSource,
TaskRunner, JudgeModel, ResultStore,
ScoreSink — with typed request and result dataclasses. They are the narrow,
swappable, deletable seams that keep the core effect-free. The core never imports this module.
Because a port is just a protocol, a backend is “implement this interface,” and a result type constrains what can come back. Crucially, every port result carries diagnostics, never scores: a failed task or judge returns typed infrastructure evidence, not a low quality value.
The six ports
| Port | Returns |
|---|---|
DatasetStore | Examples, references, dataset status and version. |
TraceSource | Recorded host behavior as TraceEnvelopes. |
TaskRunner | Replayed outputs, or a typed failure diagnostic. |
JudgeModel | Judge evidence with a JudgeEvidenceStatus — never a score. |
ResultStore | Persisted RunRecords, Scorecards, reports, baselines. |
ScoreSink | A rendering of immutable results — it cannot mutate them. |
The line a port may not cross
A port carries evidence and data across the boundary and nothing else. It is the conceptual seam
described in Ports & Adapters; the
concrete implementations are Integrations.