Skip to content

Add augurs time-series adapter (ETS forecasting + MAD outlier detection) - #408

Open
0-jake-0 wants to merge 4 commits into
mainfrom
claude/augurs-io-adapter-skill-glp4vx
Open

Add augurs time-series adapter (ETS forecasting + MAD outlier detection)#408
0-jake-0 wants to merge 4 commits into
mainfrom
claude/augurs-io-adapter-skill-glp4vx

Conversation

@0-jake-0

Copy link
Copy Markdown
Contributor

augurs (grafana/augurs) is a pure-Rust time-series toolkit rather than a
network service, so this adapter exposes on-graph transform nodes that buffer a
sliding window of an input stream and apply augurs models on the graph thread:

  • augurs_forecast — fits an AutoETS model over a window of an f64 stream and
    emits point forecasts with optional prediction intervals.
  • augurs_outlier — runs the MAD detector over a window of Vec<f64> readings
    (one value per series per tick) and flags outlying series.

Because there is no external service this follows the new-adapter skill's
"Option C": a single augurs feature (no integration-test feature/containers),
with coverage in #[cfg(test)] unit tests run under --features augurs.

Includes: Cargo feature + dep, module registration, runnable example with
README, adapter CLAUDE.md, README index tables + snippet, a containerless CI
workflow wired into the integration-tests hub, and Python bindings
(.augurs_forecast() / .augurs_outlier() PyStream methods) with tests.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01BNVUiX5S1JKMZUvduFqNsp

claude added 4 commits June 21, 2026 20:33
augurs (grafana/augurs) is a pure-Rust time-series toolkit rather than a
network service, so this adapter exposes on-graph transform nodes that buffer a
sliding window of an input stream and apply augurs models on the graph thread:

- `augurs_forecast` — fits an AutoETS model over a window of an `f64` stream and
  emits point forecasts with optional prediction intervals.
- `augurs_outlier` — runs the MAD detector over a window of `Vec<f64>` readings
  (one value per series per tick) and flags outlying series.

Because there is no external service this follows the new-adapter skill's
"Option C": a single `augurs` feature (no integration-test feature/containers),
with coverage in `#[cfg(test)]` unit tests run under `--features augurs`.

Includes: Cargo feature + dep, module registration, runnable example with
README, adapter CLAUDE.md, README index tables + snippet, a containerless CI
workflow wired into the integration-tests hub, and Python bindings
(`.augurs_forecast()` / `.augurs_outlier()` PyStream methods) with tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BNVUiX5S1JKMZUvduFqNsp
wingfoil-python enables the etcd feature unconditionally, so `maturin develop`
compiles etcd-client, whose build script requires protoc. The augurs workflow
was missing the protobuf-compiler install step (the Rust unit-test and example
steps use only --features augurs and were unaffected).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BNVUiX5S1JKMZUvduFqNsp
Add the workflow's own path to its push trigger so edits to the CI definition
re-run it, rather than only changes to the adapter sources.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BNVUiX5S1JKMZUvduFqNsp
Grow the adapter from two operators (ETS forecast, MAD outlier) to a broad,
coherent slice of the augurs toolkit — everything that maps cleanly onto
wingfoil's windowed-stream model:

- augurs_forecast — add an MSTL seasonal model alongside ETS, selected via
  AugursForecastConfig::mstl(periods). MSTL waits for >= 2 full periods.
- augurs_outlier — add a DBSCAN detector alongside MAD, selected via
  AugursOutlierConfig::dbscan(...). DBSCAN needs >= 3 series.
- augurs_changepoint (new) — Bayesian online changepoint detection (BOCPD)
  over a window, emitting changepoint indices (the index-0 window-start
  artifact is dropped).
- augurs_seasons (new) — periodogram seasonality detection, emitting the
  (approximate, Welch-binned) seasonal periods.
- augurs_dtw (new) — pairwise dynamic time warping distance matrix over a
  multi-series window.
- augurs_cluster (new) — DBSCAN clustering of the series via their DTW
  distances, emitting a per-series label (-1 = noise).

The multi-series operators share a transpose_window() helper. Model/detector
choice is expressed through the existing config structs rather than new
operators. Prophet is deliberately excluded (it needs a bundled Stan toolchain).

Includes Rust nodes + unit tests, Python bindings (six PyStream methods) with
tests, expanded example (adds seasonality + changepoint demos), and updated
CLAUDE.md / README tables and snippets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BNVUiX5S1JKMZUvduFqNsp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants