Verdicts & severity
A check result is designed to be read, not just thresholded.
Per-check severity
Each individual check reports its own CheckSeverity rather than collapsing to a
single scalar:
| Severity | Meaning |
|---|---|
NONE | The assertion holds. |
LOW | A soft concern — e.g. a convergence parameter near a limit. |
MEDIUM | A real problem worth a human’s attention. |
HIGH | A hard violation — e.g. dimensional inconsistency or a broken limit. |
Overall result
The OverallSeverity is the worst check, not a hidden average. The scoring model
makes this concrete: overall_score = functional_pass_rate × (1 − severity_penalty),
with penalties NONE = 0, LOW = 0.25, MEDIUM = 0.5, HIGH = 1.0. A
HIGH-severity physical check zeroes the score even when every functional
test passes — physical correctness gates functional correctness.
Provenance
A cards_get call returns the exact card a check resolved against, so a result
is auditable rather than a black box: you can see which principle, which limits,
and which envelopes were applied.