## Summary ## Type of change - [ ] Bug fix (Non-breaking change which fixes an issue) - [ ] New feature (Non-breaking change which adds functionality) - [ ] Breaking change (Fix or feature that changes existing public API) - [ ] Performance improvement - [ ] Refactor (No functional change) - [ ] Documentation only - [ ] CI / build / tooling ## Affected surfaces - [ ] Rust crate (`crates/wickra`) - [ ] Python binding (`bindings/python`) - [ ] Node.js binding (`bindings/node`) - [ ] WASM binding (`bindings/wasm`) - [ ] C ABI (`bindings/c`) - [ ] C# binding (`bindings/csharp`) - [ ] Go binding (`bindings/go`) - [ ] Java binding (`bindings/java`) - [ ] R binding (`bindings/r`) - [ ] Examples / docs ## Linked issues Closes # ## How was this tested? ## Numerical correctness (If you touched an indicator) - [ ] Output matches an existing reference (TA-Lib, paper, prior Wickra release) within documented tolerance - [ ] Streaming `update()` matches batch / `from_slice` output on the same input - [ ] Edge cases covered: empty input, single point, NaN, leading warm-up window ## Performance impact (If applicable) | Benchmark | Before | After | Δ | | --------- | ------ | ----- | - | | | | | | ## Checklist - [ ] `cargo fmt --all` and `cargo clippy --all-targets -- -D warnings` are clean - [ ] `cargo test --workspace` passes locally - [ ] Binding tests run (If a binding changed) - [ ] Public API changes are reflected in `CHANGELOG.md` - [ ] Public API changes are reflected in rustdoc / README / examples - [ ] No `todo*.md` or other local-only notes are staged - [ ] License header / `LICENSE` reference unchanged (MIT OR Apache-2.0) ## Notes for reviewers