Doc · 03 / Report
The report
The terminal output is the product. It must fit in one screenshot and communicate what was checked, whether the pipeline is behaving, and where to look if not.
Anatomy
Read the terminal report
┌─ Kelvin Report ──────────────────────────────────────────┐│ ││ Invariance 0.82 ││ Does your pipeline stay calm when nothing ││ important changes? ││ ████████░░ mostly — good ││ ││ Sensitivity 0.31 ││ Does your pipeline react when something ││ important changes? ││ ███░░░░░░░ barely — concerning ││ ││ ⚠ Gate rules are being ignored. ││ Swapping the governing gate_rule for a ││ different valid one didn't change the ││ recommendation in 4 of 5 cases. ││ ││ Diagnostic signals — not truth metrics. ││ → kelvin/report.html for per-case drill-down ││ │└──────────────────────────────────────────────────────────┘callout · 01
The two signals
Cross-case averages on the 0.00–1.00 scale. Cool fill = invariance, warm fill = sensitivity. The bar is what you remember.
callout · 02
The verdict line
Plain-English read: mostly — good · barely — concerning. The single line you'd quote in a stand-up.
callout · 03
Where to look
A targeted warning naming the failing perturbation kind and frequency. Not a stack trace — a hypothesis.
callout · 04
Honest framing
Diagnostic signals — not truth metrics. The footer always reminds you, then points to the HTML drill-down.
kelvin/report.html
A single self-contained file
The HTML report is one static file. Per-case drill-down, input/output diffs, and a stability heatmap by unit type. Open in any browser. Commit to a PR.
On disk · ./kelvin/
Everything inspectable with cat, diff, grep, git
After a run, ./kelvin/ contains the unperturbed baseline, every perturbation that was generated, the output your pipeline produced for each, and the rolled-up reports. Nothing magic.
The init wizard offers to add kelvin/ to .gitignore.