Skip to content

Releases: PredictabilityAtScale/anomaly-detection

Anomalyzer v0.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 21:06
Immutable release. Only release title and notes can be modified.
1600e60

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.

Release and consumption guide.

Anomalyzer v0.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 23:42
Immutable release. Only release title and notes can be modified.
ea6e0dd

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_sequence ordinals consistent with nondecreasing original times. This
    is a caller assertion of order, not independence, causation or elapsed cadence.
  • SampleRevision.event_id addresses 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_samples makes 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.

Release and consumption guide.

Anomalyzer v0.2.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 18:00
Immutable release. Only release title and notes can be modified.
9920e42

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.

Release and consumption guide.