---
title: "Compare Regression Row"
method: GET
path: "/internal/evals/rollout-consistency/sweeps/{sweep_id}/regressions/{regression_id}"
tags: ["internal"]
---

# Compare Regression Row

`GET /internal/evals/rollout-consistency/sweeps/{sweep_id}/regressions/{regression_id}`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/internal/evals/rollout-consistency/sweeps/{sweep_id}/regressions/{regression_id}`
- Auth: none declared

One baseline risk beside what the new path produced for it.

Both sides are resolved **live** from `document_risks` rather than read from the snapshot on the
regression row. The snapshot is what the sweep saw; a reader opening this panel wants the risk
as it stands, including any review that has happened since. The stored verdict rides along
unchanged so the two can be compared rather than silently reconciled.

## Path parameters

- `sweep_id` string, uuid, required
- `regression_id` string, uuid, required

## Response `200`

Successful Response

- RegressionComparison: One baseline risk beside whatever the new path produced for it. `after` is null for a lost flag or a correctly-dropped dismissal — that absence *is* the finding, so it is a null rather than an empty object. `before` is null on a net-new row, which is the same comparison read the other way round.
  - `regression_id` string, uuid, required
  - `outcome` 'flagged_carried' | 'flagged_lost' | 'dismissed_dropped' | 'dismissed_reintroduced' | 'unreviewed' | 'suppressed', required: What became of one baseline risk under the new path. The reviewer's verdict on the baseline risk decides which pair applies, and the two pairs are different questions. Losing a **flagged** risk is lost recall — a reviewer said it was real. Reproducing a **dismissed** one is a false positive the old path's validation pass caught and `dedupe_findings` does not, which is the number the rollout is expected to move.
  - `baseline_verdict` string, nullable, required
  - `best_match_score` number, nullable, required
  - `near_miss` boolean, required
  - `is_net_new` boolean, required
  - `before` RiskDetail, required: One `document_risks` row, in full, for side-by-side reading.
    - `risk_id` string, uuid, required
    - `short_text` string, required
    - `explanation` string, required
    - `remediation` string, nullable, required
    - `severity` string, nullable, required
    - `source_clause` string, nullable, required
    - `document_clause` string, nullable, required
    - `status` string, nullable, required
    - `dismiss_reason` string, nullable, required
    - `dismiss_note` string, nullable, required
    - `suppressed_by_rule_id` string, uuid, nullable, required
    - `filename` string, nullable, required
    - `run_id` string, uuid, required
    - `run_time` string, date-time, nullable, required
  - `after` RiskDetail, required: One `document_risks` row, in full, for side-by-side reading.
    - `risk_id` string, uuid, required
    - `short_text` string, required
    - `explanation` string, required
    - `remediation` string, nullable, required
    - `severity` string, nullable, required
    - `source_clause` string, nullable, required
    - `document_clause` string, nullable, required
    - `status` string, nullable, required
    - `dismiss_reason` string, nullable, required
    - `dismiss_note` string, nullable, required
    - `suppressed_by_rule_id` string, uuid, nullable, required
    - `filename` string, nullable, required
    - `run_id` string, uuid, required
    - `run_time` string, date-time, nullable, required
  - `near_miss_candidate` RiskDetail: One `document_risks` row, in full, for side-by-side reading.
    - `risk_id` string, uuid, required
    - `short_text` string, required
    - `explanation` string, required
    - `remediation` string, nullable, required
    - `severity` string, nullable, required
    - `source_clause` string, nullable, required
    - `document_clause` string, nullable, required
    - `status` string, nullable, required
    - `dismiss_reason` string, nullable, required
    - `dismiss_note` string, nullable, required
    - `suppressed_by_rule_id` string, uuid, nullable, required
    - `filename` string, nullable, required
    - `run_id` string, uuid, required
    - `run_time` string, date-time, nullable, required
  - `after_requirements` string[], required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) - [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/kobaltlabs/apis/fastapi/revisions/8587332d5e43?raw)
