Repository navigation
Releases: PredictabilityAtScale/anomaly-detection
Release list
Anomalyzer v0.5.0
Anomalyzer 0.5.0: explicit seasonal population matching
The additive compare_seasonal_distributions API selects earlier local-clock
populations before reusing the existing numeric or categorical distribution test.
UsageTap supplies genuine timestamped events, scope/unit, an available snapshot,
the explicit policy and its testing allocation. Anomalyzer records the selection.
- Daily, same-weekday and weekday/weekend policies use an IANA timezone,
bounded calendar lookback, per-window support and minimum distinct dates. - Partial current windows compare the same local-clock progress in historical
windows. Later calls and future dates never become priors. - Missing support stays insufficient by default. An optional predeclared daily
fallback uses support only and is visibly reported; no effect-based selection
or extra testing budget is created. - Historical DST gaps/folds and offset-transition windows are skipped explicitly.
Current ambiguous or transition-crossing windows and cross-midnight windows
are rejected, rather than guessing their intended comparison. - Python exports, canonical task dispatch, a JSON CLI command, read-only MCP,
method discovery, two schemas, README chapter 27 and a real-engine fixture
expose the same implementation. The UsageTap handoff
covers boundaries, sampling assumptions and caller-owned budgets.
This release deliberately excludes automatic season/schedule discovery, block
resampling, equal-day weighting, run-phase matching, persistent monitor state and
automatic fallback/reset. A date-support gate does not make calls independent.
Collection completeness and as-of record availability remain caller-owned;
calendar closure alone proves neither. Keep rate and overall mix checks so
conditioning on a schedule does not hide its disappearance or movement.
The 0.4.0 population APIs and older time-series contracts remain available.
Strict MCP tool-list consumers must accept the sixth tool,
compare_seasonal_distributions. The package remains alpha, supports Python
3.11–3.13, and adds no numerical dependency. The existing tzdata dependency
now applies on all supported platforms so minimal Linux runtimes have IANA
timezone data. This is a local source/build
candidate until the immutable release workflow completes; it does
not change or deploy UsageTap.
Anomalyzer 0.5.0 — local Python analysis library.
Source revision: 1600e60cf4737e9de31c19d8652264b7ce6c5719.
Wheel and source distribution tested on Python 3.11–3.13; Linux/Python 3.12 Lambda consumer verified offline. See SHA256SUMS and release-manifest.json for artifact identities.
Anomalyzer v0.3.0
Anomalyzer 0.3.0 — distinct events at the same original time
Schema 1.1 adds the optional event-identity-v1 contract for comparable event-index
measurements. DatasetV11.event_ids retain distinct same-time calls without
jitter, aggregation or lost values. Repeated logical IDs are rejected, including
identical retry deliveries; callers own trustworthy identity and upstream deduplication.
- Default
data_policy.event_order="timestamp"sorts time/ID for layout only.
Whole timestamp cohorts finish training/calibration before a later timestamp
uses the reference. Tied observations keep point and explicit range evidence,
break change comparisons, and cannot create sequence-pattern continuity. - Optional
event_order="trusted_sequence"requires aligned unique integer
event_sequenceordinals consistent with nondecreasing original times. This
is a caller assertion of order, not independence, causation or elapsed cadence. SampleRevision.event_idaddresses a correction to one existing event at its
original time. Availability/as-of selection is deterministic. Case and evidence
IDs use logical identity; relevant changes create a new case revision. Cases,
point episodes and rule findings can overlap and are not alert counts.- Assessments/cases expose
event_id; quality samples preserve original time,
original input index, initial value and selected revision provenance. MCP
get_evidence.source_samplesmakes distinct same-time calls inspectable. - Exact identified relationships require matching logical identities and order
contracts. Lineage exposes source event IDs and original timestamp strings.
Unordered tied events cannot feed a lagged relationship. - README chapters 23–24 continue the existing numbered progression with six
reproducible fixtures and two rendered charts. Source tests cover schemas,
Python, CLI, MCP, prefix/as-of/corrections and bounded result growth. Installed
artifact checks and the offline Linux x86_64/Python 3.12 consumer exercise IDs. - The standalone Linux benchmark includes 1,344 distinct calls with four per
timestamp. Its result sizes and warm timings are mechanics checks, not measured
production capacity, accuracy, memory consumption or cold-start cost. - Release staging retries reads after draft creation to tolerate GitHub's draft
index delay without creating or overwriting another release.
Calendar grids and legacy unique-time event inputs keep their existing numerical
semantics; schema 1.0 remains unchanged. Upgrade strict schema-1.1 readers/producers
together for the added fields. The package remains alpha, supports Python 3.11–3.13,
and is distributed as an immutable GitHub wheel/sdist with hash-pinned dependencies.
Limits: the engine cannot authenticate event IDs/order, detect aliases, maintain
a durable retry/arrival ledger, infer independence, or finalize an open same-time
cohort. Adding a newly available member/correction can revise later references;
explicit availability preserves earlier as-of snapshots. Event-index calendar
aggregation, multi-seasonality and business incident/notification policy remain
outside this contract. This release does not change or deploy UsageTap Guard.
See docs/sparse-data.md, README chapters 23–24 and docs/releases/README.md for
the exact API, replay boundaries, examples and Linux build-time installation.
Anomalyzer 0.3.0 — local Python analysis library.
Source revision: ea6e0dd157d8fc59c35382f1711240a15b8a9acd.
Wheel and source distribution tested on Python 3.11–3.13; Linux/Python 3.12 Lambda consumer verified offline. See SHA256SUMS and release-manifest.json for artifact identities.
Anomalyzer v0.2.1
Anomalyzer 0.2.1 — explicit sparse-data semantics
Applications can preserve unknown calendar periods, declare confirmed empty
additive volume, or use comparable event-index measurements without inventing
regular timestamps. Schema 1.0 remains unchanged; schema 1.1 gains per-source
policies, coverage, availability/revision inputs and inspectable transformations.
- Frozen sparse references retain actual calendar phase, count eligible
training/calibration observations and report unsupported phases. - Missing/incomplete/excluded positions and resets break patterns and change
comparisons. A measured range rule can operate before statistical learning. - Relationships preserve unavailable reasons, zero-denominator semantics,
original source lineage and model exclusions. - Sparse schema-1.1 multi-resolution retains native evidence and completed UTC
day views. Daily ratios divide sums; incomplete child periods cannot create a
completed total. Daily rules are explicit and cases survive policy replay. - README progression chapters 14–22 include reproducible fixtures, checked
results and rendered figures, published with the existing documentation site.
See the sparse-data API guide at docs/sparse-data.md and the release/consumer
guide at docs/releases/README.md. The installed-artifact checks cover the full
public API and an offline Linux x86_64/Python 3.12 Lambda-compatible bundle.
CI also records bounded 1,344-hour and event-index benchmark results and result
sizes. These are synthetic mechanics/performance checks, not abuse accuracy or
production cost claims.
Explicit limits: event-index timestamps must be unique; adaptive/explicit trend
recipes use complete contiguous spans; multi-resolution children are frozen and
use fixed UTC days. Daily lagged/normalized/joint relationships, local-calendar
DST aggregation, simultaneous multi-seasonality, episode quarantine and durable
incremental state/diffing remain separate work.
Guard continues to own collection contracts, profile compatibility, persistence,
scheduling, business impact/severity, incident lifecycle and opt-in notifications.
This release does not modify or deploy UsageTap Guard. Install the exact release
wheel and hash-pinned dependencies during the application's Linux build and
bundle them for offline runtime; no service, checkout, CLI or MCP process is
required. PyPI publication is not part of this release.
Release automation now finds unpublished drafts through the authenticated release
list, resumes existing drafts without duplicate creation, and checks publication
by release ID. Version 0.2.0 remains an unpublished candidate; its original tag
is retained. Version 0.2.1 is the first published release of these features.
Anomalyzer 0.2.1 — local Python analysis library.
Source revision: 9920e427d8f25caa628fc21ae469959f9f005100.
Wheel and source distribution tested on Python 3.11–3.13; Linux/Python 3.12 Lambda consumer verified offline. See SHA256SUMS and release-manifest.json for artifact identities.