Skip to content

v0.4.0 — tunable cadence threshold

Choose a tag to compare

@copyleftdev copyleftdev released this 01 Jun 05:23
· 18 commits to main since this release
5c489d8

Catch jittered beacons — tune the cadence regularity bar from the CLI.

Added

  • scan / explain gain --cad-max-cv F — the maximum inter-arrival coefficient of variation below which cad.regularity flags a column as metronomic (automated) timing. Defaults to 0.05 (behavior unchanged when omitted).

Why

A perfectly periodic C2 beacon has CV ≈ 0; real channels add timing jitter to evade exactly this test. A deterministic jitter sweep showed the default 0.05 catches beacons up to CV ≈ 0.0494 and goes quiet by ≈ 0.0504 — so a ~10% jittered beacon slips through. Raise the bar to catch it:

CV~0.06 beacon   default(0.05): quiet      --cad-max-cv 0.15: FIRES
CV~0.10 beacon   default(0.05): quiet      --cad-max-cv 0.15: FIRES
CV~0.25 beacon   --cad-max-cv 0.15: quiet  --cad-max-cv 0.30: FIRES

Contract

The threshold is part of the config_version fingerprint (cdcv=), verified to shift 0.0500 → 0.1500 when overridden — so a non-default bar is a visible, versioned, reproducible choice, never a hidden knob. Same input + same config_version ⇒ byte-identical output.

Gates

proptest + cargo-mutants 0 missed on anomalyx/main.rs (50 mutants, 45 caught, 5 unviable), including the < 0.0 validation boundary.

Install: cargo install anomalyx

Full changelog: v0.3.0...v0.4.0