Skip to content

v0.6.0 — output scoping (--top / --min-severity)

Choose a tag to compare

@copyleftdev copyleftdev released this 01 Jun 14:55
· 14 commits to main since this release
cc9affd

Make the findings list consumable — without ever hiding what was found.

Added

  • scan --top N — emit only the N most severe findings.
  • scan --min-severity S — emit only findings ≥ S (info/low/medium/high/critical).

On a real 127k-row parquet, --top 25 shrinks the envelope from ~3 MB to ~5.6 KB.

Honest truncation

summary (total, by_class, max_severity) and the exit code always describe everything detected, never the scoped view — so filtering can't make anomalies look absent or flip exit 10. When findings are withheld, the envelope gains a scope block recording the filter and detected / emitted / dropped counts; rows carries only the emitted subset. Absent when no scoping is applied (default output unchanged). A test pins that scoping to zero rows still exits 1.

The pairing

This is the volume complement to 0.5.0's --fdr (correctness): FDR makes findings statistically defensible; output scoping makes the list consumable. Compose them: --fdr 0.01 --min-severity high --top 25 = "the 25 most severe high+ findings, among the FDR-significant set."

Contract

Additive — new optional scope field + schema update; PROTOCOL unchanged. summary.total now reports the detected count (== emitted when unscoped).

Gate

proptest + cargo-mutants 0 missed on envelope.rs and main.rs+schema.rs.

Install: cargo install anomalyx

Full changelog: v0.5.0...v0.6.0