Cadora · design spec
Everything needed to render or extend the two post-run reads — the exact tokens, the anatomy of the eval checklist and the compare diff, the six checks and which four gate the verdict, every state, and the number formats. The rendered components are live HTML; edit them here or lift the specs into Figma.
Semantic first · green passes, red fails a critical, amber warns without blocking
--scr-green · #16c784✓ · PASS · outcome held--scr-red · #fb7185✗ critical · FAIL · ok changed--scr-amber · #ffd08a(warn) · est. · ⚠ · Δ attention--scr-blue · #6ba5f0Models · paths--scr-bg · #0f172aCard ground--scr-canvas · #111c2fInset · table body--scr-panel2 · #162237Header · section rows--scr-line · #334158Borders · grid rules--scr-text · #f5f7fbPrimary · run id · values--scr-muted · #9aa8bcLabels · captionsMonospace is the instrument voice — both tools are read at the shell
| Role | Family | Size / weight | Notes |
|---|---|---|---|
| Check row | mono | 12.5px / 400 | ✓ <name>: <detail> — one per invariant |
| Verdict line | mono | 12.5px / 700 | score P/T (NN%) → PASS green · FAIL red |
| Node diff line | mono | 12.5px / 400 | A[✓ model $cost] B[✓ model $cost] |
| Cost / Δ | mono | amber | $%.4f; Δcost (B−A) attention accent |
| Value | mono | text | Run id, executor, tokens, per-node figures |
| Metric | Value | Metric | Value |
|---|---|---|---|
| Card radius | 10px | Verdict line-height | 1.85 |
| Card padding | 14px 16px | State padding | 11px 13px |
| Cost precision | 4 decimals | Missing value | — (em dash) |
| Header separator | · (spaced) | Verdict arrow | → (spaced) |
The one component a reviewer reads to accept or reject a run
Two manifests in, outcome + cost per node out
Four gate the verdict · two only warn
| Check | Gates verdict | Passes when | Fails when |
|---|---|---|---|
| run_ok | critical | manifest.ok=True | manifest.ok=<v> |
| all_nodes_ok | critical | all nodes ok | failed nodes: <ids> |
| gates_passed | critical | no failing gates | bad gates: <node:status> |
| integrity_clean | critical | no integrity findings | findings in: <ids> |
| cost_attributed | warn | all nodes have cost | missing cost: <ids> |
| aidlc_artifacts | warn | AI-DLC artifacts captured | no aidlc-docs artifacts found |
Verdict = pass iff all four critical checks pass. score is passed/total across all six — so a run can score 5/6 and still PASS (a warn missed), or score 4/6 and FAIL (a critical missed). The two warn checks add detail — (N estimated from price table), (N in credits) — but never change the outcome.
Every verdict the two tools produce
eval · PASS — all critical hold
eval · PASS with warnings — 5/6
eval · FAIL — a critical failed
compare · outcome held, price differs
compare · ok changed — regression
compare · node only / topology mismatch
Score is not the verdict. The percentage counts all six checks, but only the four critical rows decide PASS/FAIL — a green → PASS can sit above an amber warn row, and a single red critical turns the bottom line red. There is no partial pass on the critical set.
The exact strings both tools emit
| Element | Format | Example |
|---|---|---|
| Cost | $%.4f · — when None | $11.7842 · — |
| Cost delta | Δcost (B−A): [+]$%.4f | +$0.4481 · $-9.1319 |
| Pass ratio | pass=n/N · score P/T | pass=4/4 · 5/6 |
| Score % | (NN%) rounded | (83%) · (100%) |
| Outcome glyph | ✓ pass · ✗ fail | A[✓ …] B[✗ …] |
| Attention glyph | ⚠ ok changed · ⚠ different topologies | ⚠ ok changed |
| Verdict | → PASS · → FAIL | → PASS |
Two verbs · compare needs two runs, eval needs one · both add --json
| Command | Emits | Exit |
|---|---|---|
| cadora compare <a> <b> | Per-run summary + per-node outcome/cost diff + Δcost. --json = structured diff. | 0 |
| cadora eval <run> | Six-check checklist + score + verdict. --json = checks[] + passed/total/score/verdict. | 0 pass · 1 fail |
Both take --archive-dir (default runs). Both are pure functions over the manifests — no LLM, no network — so the text and JSON are byte-stable across runs. Only eval sets a non-zero exit, which is the CI gate.
The output is a measurement, not a grade
| Do | Not |
|---|---|
| Name the check — gates_passed: no failing gates | “Quality: good” |
| Show the delta with its sign — Δcost (B−A): $-9.1319 | “Codex is cheaper” |
| Mark estimates — (3 estimated from price table) · est. | Present est. figures as measured |
| Keep warn and fail distinct — amber (warn) vs red critical | Fail the run on a non-critical miss |
| Keep the exact verdict glyphs — → PASS / → FAIL | “Success!” / “Rejected” |