v0.6.0 — output scoping (--top / --min-severity)
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 1→0. 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