Add augurs time-series adapter (ETS forecasting + MAD outlier detection) - #408
Open
0-jake-0 wants to merge 4 commits into
Open
Add augurs time-series adapter (ETS forecasting + MAD outlier detection)#4080-jake-0 wants to merge 4 commits into
0-jake-0 wants to merge 4 commits into
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 anf64stream andemits point forecasts with optional prediction intervals.
augurs_outlier— runs the MAD detector over a window ofVec<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
augursfeature (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