Check a changed AI feature against defined requirements and a reference run. See what failed, inspect the evidence, and bring a clearer result to the people making the release decision.
Synthetic example. The tickets and the router outputs are invented; the scores, the verdict and the exit code come from the released CLI. Run it yourself →
Synthetic regression check on a support-ticket router, reference run v1 against candidate v2 over the same 40 cases, scored by exact match. Result: did not meet the configured requirements. 2 of 6 rules failed. 4 of 40 cases changed and 0 were excluded.
redcrown check| Requirement | Observed | Status |
|---|---|---|
| pass: At least 40 cases | observed 40 | pass |
| pass: No case errored | observed 0.0 | pass |
| pass: No case left ungraded | observed 0.0 | pass |
| pass: Configuration declared | observed yes | pass |
| fail: Exact match at least 0.95 | observed 0.9 | fail |
| fail: Regression at most 0.05 | observed 0.1 | fail |
| Case | Label | v1 | v2 |
|---|---|---|---|
| case-07 | account | account | billing |
| case-18 | technical | technical | account |
| case-25 | billing | billing | technical |
| case-36 | shipping | shipping | account |
$ redcrown check evidence.json --candidate-id candidate-v2 --baseline evidence.json --baseline-candidate-id reference-v1 --policy policy.json
redcrown check: fail (exit 2)
- minimum_items: pass [requirement_met]; observed=40, threshold=40, count=40, denominator=40
- maximum_error_rate: pass [requirement_met]; observed=0.0, threshold=0.0, count=0, denominator=40
- maximum_ungraded_rate: pass [requirement_met]; observed=0.0, threshold=0.0, count=0, denominator=40
- require_known_config: pass [requirement_met]; observed=True, threshold=True, count=1, denominator=1
- quality.minimum: fail [threshold_breached]; observed=0.9, threshold=0.95, count=40, denominator=40
- quality.maximum_regression: fail [threshold_breached]; observed=0.1, threshold=0.05, count=40, denominator=40
$ echo $?
2Compare compatible results and inspect the checks or items that moved. Keep failures, ungraded items, and missing evidence visible so a clean-looking average does not hide the question you need to investigate.
What you can see depends on the evidence you bring. Scored outputs give per-case scores on both sides, so the changed cases and the excluded ones can be listed from the evidence file. A test harness journal gives per-check statuses, so redcrown harness compare lists what regressed, what was fixed, and what could not be measured, as in the run beside this. An aggregate import carries summary scores only, and nothing on the record pretends otherwise.
corpus drift: base 661d9f3c1725 vs head d978855c0393; shared cases only
cases: regressed 3, fixed 1, inconclusive 0, newly measured 6, unchanged 15, only in base 0, only in head 0
accurate regressed 4 fixed 1 inconclusive 0 newly measured 0
held_everything regressed 3 fixed 2 inconclusive 0 newly measured 0
persisted regressed 1 fixed 3 inconclusive 0 newly measured 0
recallable regressed 0 fixed 0 inconclusive 3 newly measured 1
regressed (8):
case-1 accurate: ok -> fail
case-2 accurate: ok -> fail
case-3 accurate: ok -> fail
case-4 accurate: ok -> fail
case-5 held_everything: ok -> fail
case-5 persisted: ok -> fail
case-6 held_everything: ok -> fail
case-7 held_everything: ok -> fail
[fixed (6), inconclusive (3) and newly measured (1) omitted here]
exit 1
Four steps. Each one is a command or a screen that exists today; the scope table below says which surface carries it.
Choose the cases, references, and requirements appropriate to the supported workflow. A policy is a JSON file with the thresholds written down before anyone looks at the candidate.
Use a reference run, or explicitly accept an eligible baseline in the app where that is supported. Nothing is accepted for you.
Evaluate the candidate and inspect unmet requirements or missing evidence. redcrown check exits 0 on pass and 2 on fail or insufficient evidence.
Share the supported report or export, keeping its limits attached. A shared report is a frozen copy of one run with the caveats it carried.
Score supplied outputs, compare supported harness runs, or run a supported evaluation with RedCrown. The input you bring determines which checks and evidence are available.
Inputs, correct answers, and the outputs your feature produced. Deterministic scoring, no provider key, no model call. RedCrown scored what you supplied; it did not see how the outputs were generated.
Quickstart, offline →A journal your test runner already writes: one directory per run, one line per case, named checks that are ok, fail, or unmeasured. RedCrown reports and compares; your runner executes.
Journal format and commands →Give the task, the cases and the references, and RedCrown calls the models on your keys, scores every output, and keeps the receipts. Repeat on demand against the same cases.
Native evaluation guide →Make the tested cases, scoring method, results, and limitations visible. Share the available evidence instead of asking someone to rely on a screenshot or an unexplained score. Three different things can happen to a result, and the product keeps them apart.
Checks run when you run them: on demand, or in the pipeline you configure. Passing the configured checks means the candidate met the requirements you wrote, on the cases you supplied. It is not a statement about production reliability. Each row below is a path that exists in the released product, with the surface that carries it.
| Path | You bring | You get | Where | Limits |
|---|---|---|---|---|
| Score supplied outputs | Cases with references and the outputs your feature produced (CSV and JSONL, or one request file) | A scored report per candidate with per-case receipts; a private evidence file for the offline check | CLI score, offline. App: Advanced → Upload. API. | Text in, text out, one step. Metrics: exact match, similarity, JSON field accuracy, F1. Declared configuration, not witnessed. In the app, pick a new feature or add a version to an existing one. |
| Offline policy check | Two evidence files for the same feature and cases, plus a policy JSON | pass, fail or indeterminate per rule; exit 0, 2 or 1; changed cases from the evidence file | CLI check, offline, no login | Evaluates existing evidence only. Cost and latency rules parse but stay indeterminate. Not a hosted acceptance. |
| Compare harness runs | A journal directory per run: meta.json and verdicts.jsonl with named checks | Per check: regressed, fixed, inconclusive, newly measured; exit 1 on a regression, 2 on corpus drift | CLI harness report, compare, export; pushed runs show their checks in the app | Your runner executes the cases. An unmeasured check is never a pass or a fail. |
| Run an evaluation | A task, cases, references or an incumbent, and your provider keys | A ranked report with receipts, cost and latency per candidate | App (Prove, Advanced), CLI eval, API, MCP | Calls go to the providers on your keys. Only label-referenced, single-step, single-pass text runs on the four metrics above can be accepted as a baseline. |
| Accept a baseline | An eligible completed run in your workspace | A stored acceptance with history; later runs of the same feature compared against it | App: Proofs → Baseline decisions. API. | Not in the CLI or MCP. Refused for runs with errors, ungraded items or a blocking caveat. A scored version needs a declared provider and model on each candidate to be compared or accepted. |
| Import a summary | Aggregate scores from another system | A run with summary scores and whatever receipts the payload carried | CLI push and import-results, MCP import_results | No evaluation identity, so no acceptance or comparison. Case-level evidence only if you supplied it. |
| Share a report | A completed run | A frozen public or unlisted page with the disclosure level you choose; revocable | App, CLI push --proof-link, MCP | Shares a run. A local policy result is not part of it. Revocation stops the link; it cannot recall a saved copy. |
| Proxy capture and replay | An endpoint you point at RedCrown's proxy | Captured calls you can replay through an evaluation | API and MCP setup; Growth and above | A separate advanced workflow. Nothing runs on a schedule. |
The same task across several models and providers, ranked on the quality bar you set, priced at your volume. The record beside this ran one extraction task across eleven frontier models and named the cheapest one that clears the bar. It is a public benchmark run, not a customer result. Open it and check the receipts.
Featured decision record RC-4627B127: SEC 10-Q extraction at a quality threshold of 0.99. deepseek · v4-flash is selected. It scores 0.9969 and costs $6.30 per 10,000 filings, 98% less than the incumbent openai · gpt-6-astra, which scores 0.9984 at $613.35. google · gemini-3.7-flash costs $53.57 but scores 0.9891, below the threshold, so it is ruled out. Methodology version 1, proven on 2026-09-10.
Each tile is a real run on synthetic or public data with its sample size and caveats stated on the record. The publish gate refuses a number it cannot stand behind; it exists because our own benchmark hit five configuration mistakes that looked like model failures.
Synthetic or public data, small samples, caveats on every record.
All example records →
Start with a supported example, then bring your own cases and outputs.