# 32-haskell-nonempty-waves This example shows intermediate Haskell rollout planning with `NonEmpty`. It includes: - a deployment job with rolling and canary modes, - a `NonEmpty` list of rollout waves that guarantees at least one step, - a CLI that renders a wave-by-wave plan, and - a test suite run by `nix flake check`. Useful commands: ```bash nix develop cabal run cabal run -- api:production:canary:20:6 cabal test nix build ./result/bin/mini-waves api:production:canary:20:6 nix run . -- api:production:canary:20:6 nix flake check ```