v2.1.0
Aggregate state: stateless cohort summary
recon batch --summary emits one aggregate-only cohort summary over a batch:
observability-adjusted prevalence (observed rate, conservative lower bound, and
observability fraction, so missing-not-at-random absence is encoded honestly),
aggregated posterior mass with a separate high-confidence share, and provider and
cloud concentration (entropy and HHI). Add --json for machine output; the
default renders a compact panel. Stateless and compute-and-forget: it ships no
baselines, stores nothing, makes no baseline-relative anomaly score, infers no
unobserved services, and names no domain in its output.
- The summary carries its own record type (
cohort_summary,schema_version
2.1); the locked v2.0 per-domain schema is unchanged. - Caller-grouped analysis (grouping, distinctive-slug ranking, partial pooling)
stays in a downstream reducer undervalidation/aggregate/, which shares the
per-cohort math with core so the two never drift. Seedocs/aggregate-state.md
for the methodology and a fully synthetic worked example. --summarypairs with--jsonor stands alone; it does not combine with
--md,--csv, or--ndjson.
Gate: full pytest, ruff, pyright (0 errors), validate_fingerprint.