Scorecards
A scorecard your team can actually read.
A scorecard is the bounded, readable claim of an EvalGlass run: one verdict, metric values, status counts, authority, baseline state, and what cannot yet be claimed.
Every run shows what was measured, what changed, what can be claimed, and what still needs review. It is the artifact your coding agent hands back — readable by an engineer, a product owner, or a manager, without confusing “measured” with “approved.”
An example scorecard
Verdict: informational — the new synthetic cases need review before they can gate CI. No threshold is approved yet, so nothing fails the build. This is an illustrative example, not a measured result.
the same run, as scorecard.json
{
"verdict": { "verdict": "informational", "ci_should_fail": false },
"metrics": [
{ "metric": "retrieval_faithfulness", "value": 0.91, "status": "scored", "validity": "valid" },
{ "metric": "workflow_policy", "value": 0.74, "status": "scored", "validity": "valid" }
],
"status_counts": { "scored": 2, "blocked": 0, "non_evaluable": 0, "skipped": 0, "error": 0 },
"authority": { "retrieval_faithfulness": "no_approved_threshold" },
"baseline_state": "comparable"
}
The verdict is informational because no threshold is approved — the
numbers are earned, the authority to gate on them has not been granted. That distinction is the
whole point. The precise, typed version →
The HTML report next
The same typed scorecard, rendered as a shareable report.html written into
your repo beside scorecard.json and report.md — a verdict hero, KPI tiles,
per-metric confidence-interval bands, a delta vs. the previous run, and a panel spelling out what the
run does not claim. It is a rendering of the record, never a second verdict.
report.html · customer-facing agent · nightly vs. last baseline
Measured — not approved.
What this run does not claim
Not that your AI is correct, safe, or production-ready. No gate is approved, so nothing here fails a build. Both metrics sit with a lower confidence bound under the 0.80 threshold — evidence still to gather, not a verdict.
Violet marks the 95% interval, the dot is the point value, the vertical tick is the approved threshold. A gate reads the lower end of the interval, not the point — why a perfect score can still miss the bar →. This is an illustrative example, not a measured result.
What a scorecard shows
- Metrics & values. Each project-specific check, its score, and the evidence behind it.
- Status & validity. Whether a metric scored, was blocked, was non-evaluable, skipped, or errored — a non-scored metric is never written as
0.0. - Deltas & baseline. What improved, regressed, or drifted since a run you promoted — shown only when the two runs are comparable.
- Authority & verdict. Whether a gate is approved, and the one typed outcome the build keys on.
Those project-specific checks come from metric discovery:
it reads your code, output schema, and prompts — across any agentic framework — to draft metrics
anchored to how your app fails, and can seed a structural floor straight from
your output schema, so a first scorecard shows real signal even before you have a single trace. That
floor is contract-tier: it catches a malformed output, never proof the answer is good. Discovered
metrics land proposed; you validate before any of them gate.
The four outcomes
A scorecard resolves to exactly one verdict. Green means a pass on an approved gate — nothing more. A fresh run is informational, never “passing.”
- informational. Measured and useful, but not an approved gate. The default for a fresh run.
- pass. An approved gate met its threshold — e.g. faithfulness ≥ 0.85, approved. Never a bare claim of correctness.
- fail. An approved gate was validly measured and missed its threshold.
- blocked. EvalGlass cannot make an honest quality claim — evidence, comparability, calibration, policy, or a required measurement is missing. It holds the gate open rather than guessing.
verdict → CI exit code
-
exit 0informationalpass
The build proceeds. Exit 0 does not mean a gate was enforced — a fresh run is informational, not a pass.
-
exit 1failblocked
The build stops. A gate either missed its approved threshold (fail) or could not be claimed honestly (blocked).
-
exit 2infrastructure error
The run itself could not complete — not a quality verdict, and no scorecard to enforce.
informational and pass share an exit code, so a green pipeline is not proof a gate ran. The claim boundary →Regression & comparison
A score change is a regression only when the two runs are comparable. If
they aren’t, EvalGlass says so and names the dimension that differs — it does not call the delta
a regression. That is what makes a model-switch or prompt-change verdict trustworthy. On the epistemic
core, a paired delta counts as a regression only when its interval clears zero; a change inside the
interval is within_noise, not a regression.
Confidence, not just a number experimental
A score is not a bare number. On the evolving epistemic core, each metric carries an
Estimate — a point value, a confidence interval, and an effective
sample size (n_effective), computed with Wilson or Student-t. A number with no sample
size and no interval is not evidence — it is an anecdote with a decimal point.
A Decision Policy gates on the lower confidence bound (LCB), not the hopeful point — the upper bound for lower-is-better metrics. It reads the edge of the interval that could hurt you.
A perfect 3/3 does not gate
Three-for-three is a point of 1.0 — but its 95% lower bound is ~0.44, so against a 0.8 threshold it fails the default gate. Not a bug: three lucky samples have not earned the claim. Gather more evidence and the interval tightens until the lower bound clears the bar. Illustrative example, not a measured result.
The escape hatch is explicit and named: a policy that sets
decision_statistic: point — a point-smoke check for dev — decides on the
point instead. A deliberate, recorded choice, never the silent default.
Authority is capability-typed: an uncalibrated or fake judge produces
evidence, not authority, so it can never move a gate. And the judge is content-addressed — a
swapped judge reads drifted until it is re-approved against the exact
rig. A pass you can trust is a pass the evidence actually earned.
The version the plugin installs today still gates on the point threshold (now); the interval / lower-bound rule here is the experimental layer being hardened in the framework — surfaced so the rule is legible before it ships, never presented as today’s default. A companion trust page, Statistical honesty, goes deeper.
Cluster the failures next
When a metric fails, the scorecard groups its failing and non-scored items by their
shared Diagnostic.code, per metric — so “workflow-policy 0.74” becomes an
actionable failure mode: the cases that failed share one cause. A non-scored item is grouped by cause,
never coerced to 0.0. This groups failure instances by cause — a
different axis from the still-planned metrics explorer’s call-identity view.
missing_citation7 casesrefused_in_scope3 casestool_arg_shape · non-scored2 grouped by causeThe cases that failed are mostly missing-citation — one fix, not twelve.
The two non-scored items are grouped by their cause, not written as 0.0. Illustrative
example, not a measured result.
What a scorecard cannot prove.
It is not a certificate. It is not “safe AI.” It is not proof every behavior was covered. And it is not a pass unless a gate is approved and validly measured. A scorecard makes AI behavior reviewable without overclaiming — you decide what counts. What green does not mean →
Where scorecards go
- Local report & repo artifact. A Markdown report and the typed
scorecard.json, written into your repo. now - Shareable HTML report. A rendered
report.html— verdict hero, KPI tiles, interval bands, and a “what this run does not claim” panel — written beside the Markdown and JSON. next - CI annotation. The verdict drives a green or red check on the threshold you approved. now
- Dashboard sink. An optional, outward export of the scorecard — local file export today; a hosted view is a deletable follow-up. No telemetry; the repo stays the source of truth. experimental
Related