You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+53-4Lines changed: 53 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,9 +14,11 @@ until a customer complained.
14
14
15
15
Arsenic distinguishes **blocking behavioural regressions** (factual errors, schema breaks, instruction failures) from **presentation drift** (formatting, verbosity, markdown structure) and **telemetry drift** (latency, consistency). A model upgrade can look scary on raw dimension counts while still being safe to ship — the report tells you which is which.
16
16
17
+
Arsenic also generates a **behavioural fingerprint** for every comparison: an evidence-backed visual map of where the candidate retained baseline behaviour and where it changed. This is a compatibility fingerprint, not a global quality score or model personality profile.
-[Behavioural fingerprint demo](docs/fingerprint-demo.html) (re-rendered from the shipped fixture)
53
+
54
+
---
55
+
56
+
## Behavioural fingerprint
57
+
58
+
Every HTML/JSON report includes a **baseline-retention** fingerprint when enough dimensions were evaluated.
59
+
60
+
| Score | Meaning |
61
+
|------:|---------|
62
+
|**100**| No detected drift from the baseline in that dimension |
63
+
|**0**| Every applicable probe showed drift |
64
+
| Between | Share of applicable probes that stayed baseline-equivalent |
65
+
66
+
**Important:** a smaller polygon is not “a worse model”. Improvements count as drift (compatibility changed) but are labelled as improvements in the detail panel and table. Latency stays off the radar as telemetry; it appears as an adjacent summary card.
67
+
68
+
**Axes** (included only when Arsenic has applicable observations): Morphology, Tone, Factual, Schema, Instruction, Refusal, Consistency retention, Claim retention, Semantic retention. Omitted axes are listed outside the polygon with an explicit reason (no applicable probes, disabled, or unavailable).
69
+
70
+
**Consistency retention** uses multi-run mean pairwise embedding distance when `--consistency-runs` > 1. That “variance” is `mean(1 − cosine)` over L2-normalised non-negative hash-bag embeddings, so it is intrinsically in `[0, 1]`; clamping is a defensive float guard, not a rescale of unbounded statistical variance:
The axis measures similarity to baseline consistency (both increased and decreased consistency count as drift).
78
+
79
+
**Ordinary dimensions** use Arsenic’s existing materiality rules (same bands that drive Amber/Red in each dimension), not raw numeric inequality and not risk colour as a proxy for unchanged:
80
+
81
+
```
82
+
unchanged = applicable && !materially_changed
83
+
changed = applicable && materially_changed
84
+
retention = 100 × unchanged / applicable
85
+
```
86
+
87
+
Direction counts (regressions / improvements / neutral) apply only to materially changed probes. Risk/severity remains a separate deployment signal.
88
+
89
+
**Consistency retention** keeps an aggregate repeatability similarity score. Per-probe fingerprint drift counts only **band crossing** (`v1_consistent != v2_consistent`): both sides inconsistent with similar variance is absolute telemetry, not compatibility drift. Absolute inconsistency remains in the consistency dimension `probes_affected` count. Near-identical aggregate scores (retention ≥ 95%) appear under telemetry, not as high-impact compatibility drops.
90
+
91
+
Re-render old JSON (fingerprint is derived if missing):
92
+
93
+
```bash
94
+
arsenic report render ./report.json --format html --output ./report.html
95
+
```
96
+
97
+
Open [docs/fingerprint-demo.html](docs/fingerprint-demo.html) for a real-data example. The radar needs at least three valid axes; otherwise the retention table still renders.
50
98
51
99
---
52
100
@@ -282,7 +330,7 @@ arsenic probe list List standard probes
282
330
arsenic probe list --category tone Filter by category
283
331
arsenic probe show <name> Show one probe as JSON
284
332
arsenic probe validate <path> Validate user corpus TOML
285
-
arsenic report render <json> Re-render a saved JSON report
333
+
arsenic report render <json> Re-render a saved JSON report (derives fingerprint if absent)
286
334
arsenic report summary <json> Print summary to stdout
0 commit comments