Skip to content

v0.8.0 — unified confidence calibration

Choose a tag to compare

@copyleftdev copyleftdev released this 01 Jun 19:03
· 11 commits to main since this release
add599d

A 0.9 now means the same thing on every detector — so severity ranks across detectors.

Changed

  • Unified confidence calibration. Confidence was computed three incompatible ways (1−p for distributional/multivariate; logistic-over-threshold for point/contextual/collective/PSI; linear for cadence). Now every detector routes through one shared ax_detect::calibrate: confidence is a logistic of how far the detector's statistic sits past its firing threshold, measured relatively so units cancel — 0.5 at the threshold, rising toward 1.0. A finding "2× past threshold" earns the same confidence whether it came from a modified z-score, a KS p-value, a PSI, or a cadence CV.
  • This makes severity (and --top / --min-severity) rank findings from different detectors on one scale — and replaces the old 1−p that saturated everything to "critical" with a real gradient.

Impact / contract

Recalibrates every published confidence and severity. config_version bumped (anomalyx-cfg/8) so the change is visible. Envelope shape and PROTOCOL unchanged. score remains the detector's raw statistic for drill-down.

Also

  • Parser robustness harness (fuzz-style property tests: no parser panics/hangs on arbitrary/magic-prefixed/truncated bytes; normalize is deterministic over fuzz inputs).

Gate

proptest + cargo-mutants 0 missed on calibrate.rs (32/32) and every touched detector file.

Install: cargo install anomalyx

Full changelog: v0.7.0...v0.8.0