Diff Run Row
GET/runs/diff/row
Return the full content behind a single row of GET /runs/diff.
A diff row carries only per-scorer scores under an input_id whose underlying
join column — input_id for text runs, image_id for CV runs — is resolved
server-side and never exposed. This endpoint re-runs that same join narrowed to one
identifier and returns what is actually being compared: the golden-dataset input,
each run's own output, and the row's per-scorer scores and deltas.
The input/output split follows the Parquet layout's declared columns, so it is fixed
per run pair and every row of one diff comes back with the same shape. Each input
column carries both runs' values and a shared flag, true only where the two hold
the same value for this row — a column they disagree on (a user-invented passthrough,
or two runs staging the same image at different paths) stays under its own key with
both sides visible rather than moving to the outputs. Content is returned as stored,
with no CV-specific rendering, except that binary cells are reported as a size
descriptor rather than a lossy decode of the bytes.
Access rules are GET /runs/diff's: same workspace, both runs completed
evaluation runs. An input_id present in neither run is 404; one that matches
several rows — a run repeating an identifier the diff assumes is unique — is 409,
because no single row is the one behind the click.
A trace run pair is addressed by the scope_ref GET /runs/diff emits for it. An
occurrence has no golden-dataset input, so input is empty and output_a/output_b
carry the run's verdict — rationale, error and decoded metadata — one entry per
(metric, config variant), keyed as scores is.
Request
Responses
- 200
- 403
- 404
- 409
- 422
Successful Response
Forbidden
Not Found
Conflict
Unprocessable Entity