# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.17.0-alpha.1 (2026-06-11)

### Chore

 - <csr-id-e70eab6a0c793ef095e2cd747220d5419f7bf1a4/> revert accidental `v1.0.0-alpha.0` releases of `dfir_lang` & `variadics`, update `cargo-smart-release` fork version

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 1 commit contributed to the release.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **Uncategorized**
    - Revert accidental `v1.0.0-alpha.0` releases of `dfir_lang` & `variadics`, update `cargo-smart-release` fork version ([`e70eab6`](https://github.com/hydro-project/hydro/commit/e70eab6a0c793ef095e2cd747220d5419f7bf1a4))
</details>

## 0.17.0-alpha.0 (2026-06-10)

### Chore

 - <csr-id-b318ff43a08094324396d4c7ae744fe1d1efa541/> update nightly snapshots
   [ci-full]
   
   This PR was automatically generated by the nightly CI run. Updated insta
   snapshots for nightly Rust builds. Please review the snapshot changes to
   ensure they are expected.
 - <csr-id-33a606afb3f123f01e4b9ce916c75cf9aa03e5fd/> update to rust 1.95.0
   - Bump `rust-toolchain.toml` from Rust 1.93.1 to 1.95.0.
   - Apply minor iterator/sort refactors to satisfy newer clippy lints and
   keep deterministic ordering where relevant.
   - Refresh trybuild compile-fail `.stderr` snapshots to match Rust 1.95
   diagnostic formatting.

### Documentation

 - <csr-id-31eb4ba0a541906e69425ba3eff3b0cb78a64941/> update bounded description and add regression test

### New Features

 - <csr-id-17143bf626687d78f3ad618a8b098d9de0b5d331/> add threshold_greater_or_equal for KeyedSingleton
   ## Summary
   
   Add per-key and uniform threshold detection methods to `KeyedSingleton`,
   analogous to `Singleton::threshold_greater_or_equal`.
   
   ## Changes
   
   - Add `IsKeyedMonotonic` sealed marker trait (implemented for
   `MonotonicValue` and `Bounded`)
   - Add `threshold_greater_or_equal` accepting `KeyedSingleton<K, V, L,
   BoundedValue>` for per-key thresholds that may arrive asynchronously
   - Add `threshold_greater_or_equal_uniform` accepting `Singleton<V, L,
   Bounded>` for a constant shared threshold across all keys
   - Per-key variant handles late-arriving thresholds by checking them
   against the current snapshot on arrival
   - Both variants avoid duplicate emissions (each key fires at most once)
   - Include exhaustive simulation tests for both variants
   
   ## Testing
   
   - `threshold_greater_or_equal_monotonic`: verifies per-key threshold
   detection with `BoundedValue` thresholds, asserts below-threshold keys
   are absent
   - `threshold_greater_or_equal_uniform`: verifies uniform threshold with
   keys that cross and keys that don't
 - <csr-id-35f8a3b758172fc09b3cf248f5df869c7250aa41/> Add mutable singleton references (`by_mut`) to `Stream::map`
   Adds support for `#{N} mut var` mutable singleton references in Hydro,
   building on the existing DFIR-level infrastructure.
   
   Key changes:
   
   1. hydro_lang/src/singleton_ref.rs:
   - Changed thread-local `SINGLETON_REFS` to track mutability:
   `Vec<(Ident, HydroNode, bool)>`
   - Added `IS_MUT: bool` const generic to `SingletonRef<'a, T, L, IS_MUT =
   false>`
   - Added `SingletonMut`alias to `SingletonRef<'a, T, L, IS_MUT = true>`
   
   2. hydro_lang/src/compile/ir/mod.rs:
   - Changed `ClosureExpr.singleton_refs` to `Vec<(Ident, HydroNode,
   bool)>`
   - Updated Clone, Serialize, deep_clone, transform_children accordingly
   - `emit_tokens` now accepts `&mut HashMap<*const RefCell<HydroNode>,
   u32>` for
   per-singleton access counters and generates `#{N} var` or `#{N} mut var`
   syntax
   - Access group assignment: immutable refs get current counter value;
   mutable refs
        increment before and after (ensuring isolation in their own group)
   - Added `singleton_access_counters` local in `emit_core`, threaded to
   all
   `emit_tokens` call sites (Map, FlatMap, Filter, FilterMap, Inspect,
   Fold,
        Scan, Reduce, ReduceKeyed, ReduceKeyedWatermark, Partition, etc.)
   
   3. hydro_lang/src/live_collections/singleton.rs:
   - Added `by_ref_mut()` method mirroring `by_ref()` but returning
   `SingletonRefMut`
 - <csr-id-341fb1475fc993666fcdf407f69d6da280bc2733/> add broadcast_closed for cluster-to-cluster streams
   ## Summary
   
   Adds `broadcast_closed` on `Stream<T, Cluster<..>, ..>` — the
   cluster-to-cluster counterpart to the existing process-to-cluster
   `broadcast_closed`.
   
   Stacked on #2917 (MinRetries for cross_product).
   
   ## Motivation
   
   The existing cluster-to-cluster `broadcast` uses dynamic membership
   tracking and requires a `NonDet` guard. For closed/static deployments
   (simulation, legacy Hydro Deploy), membership is fixed at deploy time,
   making a deterministic closed broadcast possible.
   
   This is needed to propagate `EventualConsistency` labels through
   cluster-to-cluster communication — e.g. broadcasting paxos-committed
   entries from proposers to replicas with the consistency guarantee
   preserved in the type system.
   
   ## Design
   
   - Gets static membership via `ClusterIds` (deploy-time metadata,
   identical on every member)
   - Asserts `EventualConsistency` on `member_ids` (same data on every node
   → consistent)
   - Cross-products data × members, demuxes to destination
   - Asserts `EventualConsistency` on the result (fixed membership + every
   source sends to every dest → all destinations receive the same set)
   
   ## Return type
   
   ```rust
   KeyedStream<MemberId<L>, T, Cluster<'a, L2, EventualConsistency>, Unbounded, ..., R>
   ```
   
   Keyed by source member, eventually consistent on the destination
   cluster.
   
   ---------
 - <csr-id-fc8add41380f856316b7b356ecc2c398740b5f58/> support singleton refs on all operators via `ClosureExpr`, fix #2713
   Replaces the ad-hoc `singleton_refs: Vec<(syn::Ident, HydroNode)>` field
   that was only on `HydroNode::Map` with a new `ClosureExpr` type that
   bundles
   a closure expression with its captured singleton references.
   
   Key changes:
   
   - New `ClosureExpr` struct in `compile/ir/mod.rs` with:
     - `expr: DebugExpr` — the closure's token stream
     - `singleton_refs: Vec<(syn::Ident, HydroNode)>` — captured singletons
   - Helper methods: `new()`, `deep_clone()`, `transform_children()`,
   `emit_tokens()`
   - Implements Clone, Hash, Serialize, Debug, Display, ToTokens,
   From<syn::Expr>, From<DebugExpr>
   
   - All closure-bearing HydroNode variants now use `ClosureExpr`:
     Map, FlatMap, FlatMapStreamBlocking, Filter, FilterMap, Inspect,
     Partition, Fold, Scan, ScanAsyncBlocking, FoldKeyed, Reduce,
     ReduceKeyed, ReduceKeyedWatermark
   
   - `HydroRoot::ForEach` also uses `ClosureExpr`
   
   - `with_singleton_capture()` now returns `ClosureExpr` directly instead
   of
     a tuple, simplifying all call sites
   
   - Added `with_singleton_capture` to Stream::filter, flat_map_ordered,
   flat_map_unordered, inspect, and partition (previously only map had it)
   
   - Code generation (`emit_tokens`) handles singleton ref rewriting for
   all
   operators: Map, FlatMap, FlatMapStreamBlocking, Filter, FilterMap,
   Inspect
   
   - Updated `transform_children` and `deep_clone` to properly
   traverse/clone
     singleton refs on all closure-bearing nodes
   
   - Updated viz/render.rs to extract `.expr` when passing to display
   functions
   
   - Updated all IR snapshot tests (hydro_lang serde_test, hydro_test IR
   snapshots)
 - <csr-id-447effd1b6bb9d8ae6600b282351b2fc9c1d0c2a/> implement singleton references for `map` closure
   Initial version only works with the `.map(q!(...))` closure, later PR
   will generalize
   
   #2713
   
   ---------
 - <csr-id-21873c89b83e192a382d3ae84e6f56fd35659b70/> Make base image and libc type configurable for Docker deployments
 - <csr-id-71a1a5e952dbff6c62914aaefda3204f85a593e4/> Add bidi_external_sidecar

### Bug Fixes

 - <csr-id-eaf2b3c7b462ed999f9e3c9400dbd4c1b6128785/> remove `SingletonRef` global counter causing codegen non-determinism
   The global `static SINGLETON_REF_COUNTER: AtomicUsize` was shared across
   all
   tests in a binary, causing `__hydro_singleton_ref_N` idents to shift
   depending
   on test execution order. For example, paxos snapshots expected IDs 0-6
   but got
   12-18 when singleton_ref tests ran first.
 - <csr-id-9eb3c987940b9c2055459ad2e3c7f0eba41fc5a4/> support MinRetries in cross_product
   ## Summary
   
   `cross_product` and `cross_product_nested_loop` previously required both
   input streams to have the same `Retries` type parameter. This forced
   callers to manually `weaken_retries()` when combining `ExactlyOnce`
   streams with `AtLeastOnce` streams — an unnecessary ergonomic friction
   since `join` (which `cross_product` delegates to) already handles this
   via `MinRetries`.
   
   ## Changes
   
   - **`cross_product`**: now accepts `R2: Retries` as a separate type
   parameter with `R: MinRetries<R2>`, outputting `<R as
   MinRetries<R2>>::Min`
   - **`cross_product_nested_loop`**: same treatment  
   - **`broadcast_closed` (Process)**: removed now-unnecessary
   `.weaken_retries()` on `member_ids`
   - **`repeat_with_keys`**: removed now-unnecessary `.weaken_retries()` on
   keys stream
   
   ## Motivation
   
   This aligns `cross_product` with `join`'s handling of retries and
   unblocks adding `broadcast_closed` for cluster-to-cluster streams (where
   the source has generic `R` and the member IDs are `ExactlyOnce`).
 - <csr-id-88556ac7a132283bd66fae7c277772758466e34e/> reduce state space for bounded-to-unbounded singleton conversion
 - <csr-id-a4ab5bdf847f09b25ee24bb541b0a5bf1e8475d9/> unify atomic ticks through Chain/MergeOrdered nodes
   The unify_atomic_ticks pass only unified tick IDs connected through
   Batch and
   YieldConcat nodes. When two streams were independently made .atomic()
   and then
   merged via merge_unordered (Chain), their tick IDs were never unified,
   causing
   codegen to reference missing identifiers across separate tick graphs.
   
   Extended the unification pass to also unify tick IDs through Chain,
   ChainFirst,
   and MergeOrdered nodes. Added a reproducing sim test.
 - <csr-id-099e36e44503320f7115c2ff0d1cc8ad2657969c/> resolve infinite hang when cross_singleton uses top-level bounded singleton
 - <csr-id-938cf91f4adff7b96f3f3536f4427f38f07f4ea6/> gate proc_macro_diagnostics behind codegen feature, remove several stabilized features. [ci-full]
 - <csr-id-617cf64a8004fd5e53de68736cf03d53b1ab16a7/> Remove redundant image_unique_tag from Docker image names
   for context, see:
   https://github.com/hydro-project/hydro/pull/2865#discussion_r3268963163
 - <csr-id-755469a79470adbc502a44e6bf9d67193a2b6582/> validate generated Docker image names against Docker naming rules
 - <csr-id-d8afd0bc71fa4e24ea2597d6b30b029911682219/> Skip ticks with unready singleton hooks instead of panicking
 - <csr-id-87b8e95ca50e6a30bcc7adb968530a5cd09ed44b/> Extract task-id from ECS metadata URI without runtime_id suffix
 - <csr-id-1ca3cd1def6f2e80d4a7536e542d3c48c84e1085/> remove cdk example, update ecs manifest format, add ecs manifest format test

### Performance

 - <csr-id-b0bdfe63f4b1d2e9c28c5e916e2330bbbb15755e/> create dedicated fold hook
 - <csr-id-d7d70ebcc90cc365b92402757e7821e8bb54be74/> Add MergeOrdered IR node with proper sim interleaving hooks

### Refactor

 - <csr-id-5caf0235cea8cf4e83614e0c31bbb3c8d5aa417e/> singleton `by_ref()` proper lifetime, update to stageleft 0.14.0
   Blocked on https://github.com/hydro-project/stageleft/pull/77/
   
   Also an improvement in that `by_ref()` is now a no-op if the
   `SingletonRef` is unused - only changes the IR at quoting time.
 - <csr-id-851640e3e6799cd178e51246f30e03df25aa3773/> replace raw usize counters in Hydro IR with newtype_counter! types
   Replaced two fragile raw `usize` counters with the existing
   `newtype_counter!`
   pattern that was already used for `ExternalPortId`, `CycleId`,
   `ClockId`, and
   `SidecarId`:
   
   1. `StmtId` — replaces `next_stmt_id: &mut usize` throughout the IR emit
   code
   in `hydro_lang/src/compile/ir/mod.rs`. This includes the `DfirBuilder`
   trait's
      `tag_id` parameter, the `BuildersOrCallback` type bounds, and the
      `traverse_dfir` public API.
   
   2. `HandoffId` — replaces `next_hoff_id: usize` in
   `hydro_lang/src/sim/builder.rs`
      for generating unique handoff channel identifiers in the simulator.
   
   Both types are defined via the `newtype_counter!` macro which provides
   `get_and_increment()`, `Display`, `Serialize`/`Deserialize`, and other
   standard
   traits. This makes the counters type-safe (can't accidentally mix a stmt
   ID with
   a handoff ID) and ensures they are always incremented through the proper
   API.
   
   Files changed:
   - `hydro_lang/src/compile/builder.rs` — added `StmtId` and `HandoffId`
   definitions
   - `hydro_lang/src/compile/ir/mod.rs` — replaced all `usize` counter
   usage with `StmtId`
   - `hydro_lang/src/sim/builder.rs` — replaced `usize` counter with
   `HandoffId`
   - `hydro_lang/src/sim/flow.rs` — updated initialization to use typed
   defaults
 - <csr-id-b9aca9b6e191e6b2d023e256088bbb269066fcb7/> use a single match case for node metadata
 - <csr-id-2c195832ef6940c1adc8beef18dcb1527515a229/> use slotmap SecondaryMap for metrics

### Test

 - <csr-id-ca69ab9031e16fd74e748b6acc535172ea7bcb81/> add reproducer for dropped singleton increasing simulation states
 - <csr-id-7161b32a4dca04ca7c163a974d792552308b3a13/> cleanup trybuild stable vs nightly handling
   Previous setup meant you had to wrangle symlinks every time you added
   more tests, and they were tracked in git. This has the test helper set
   up the symlinks, and they are no longer tracked in git.
   
   **Structure per crate:**
   ```
   tests/compile-fail/
   ├─ .gitignore    # ignores stable/*.rs and nightly/*.rs
   ├─ *.rs          # source test files (single canonical copy)
   ├─ stable/
   │  └─ *.stderr   # expected errors for stable rustc
   └─ nightly/
      └─ *.stderr   # expected errors for nightly rustc
   ```
   
   **Usage in each test file:**
   ```rust
   #[test]
   fn test_all() {
       hydro_build_utils::trybuild_compile_fail!("surface_*.rs"); // or "*.rs"
   }
   ```
   
   **How it works:**
   - The macro symlinks `.rs` files into the active channel's subdir at
   test time
   - Trybuild runs against the channel subdir, making `.rs` symlinks next
   to the `.stderr` files
   - `TRYBUILD=overwrite` writes updated `.stderr` directly into the
   correct committed directory

### New Features (BREAKING)

 - <csr-id-881a101cbf91011ab9262a6ba72c489d03197780/> replace `NoTick`/`NoAtomic` with `TopLevel`, track consistency in the type system
   Breaking Changes:
   - Removed `NoTick` and `NoAtomic`, enforcement of no nested ticks is now
   handled at staging time. Added `TopLevel` to restrict I/O operators to
   be outside a `Tick` / `Atomic`.
   - Added a type parameter to `Cluster` and a field to
   `LocationId::Cluster` that tracks the consistency guarantee of the live
   collection at that location
   - `Location::source_cluster_membership_stream` (renamed + deprecated
   from `Location::source_cluster_members`) now requires a `nondet!` since
   late-joiners will see a non-deterministic suffix of the stream. In a
   follow up PR, we will replace the now-deprecated
   `source_cluster_members` to instead offer an API that aggregates into a
   `KeyedSingleton`, which will be guaranteed deterministic and consistent
   - `Location::current_tick_instant` has been moved to be on `Tick`, since
   wall clock time can only be read in a tick context
 - <csr-id-d4ff79f02f6ab1981f671e364e02c089a4990735/> Make `source_interval` emit `()` and add `current_tick_instant`
   …for wall-clock time

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 32 commits contributed to the release over the course of 37 calendar days.
 - 40 days passed between releases.
 - 31 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 31 unique issues were worked on: [#2796](https://github.com/hydro-project/hydro/issues/2796), [#2810](https://github.com/hydro-project/hydro/issues/2810), [#2828](https://github.com/hydro-project/hydro/issues/2828), [#2833](https://github.com/hydro-project/hydro/issues/2833), [#2840](https://github.com/hydro-project/hydro/issues/2840), [#2848](https://github.com/hydro-project/hydro/issues/2848), [#2852](https://github.com/hydro-project/hydro/issues/2852), [#2858](https://github.com/hydro-project/hydro/issues/2858), [#2865](https://github.com/hydro-project/hydro/issues/2865), [#2866](https://github.com/hydro-project/hydro/issues/2866), [#2867](https://github.com/hydro-project/hydro/issues/2867), [#2868](https://github.com/hydro-project/hydro/issues/2868), [#2869](https://github.com/hydro-project/hydro/issues/2869), [#2870](https://github.com/hydro-project/hydro/issues/2870), [#2871](https://github.com/hydro-project/hydro/issues/2871), [#2872](https://github.com/hydro-project/hydro/issues/2872), [#2876](https://github.com/hydro-project/hydro/issues/2876), [#2877](https://github.com/hydro-project/hydro/issues/2877), [#2878](https://github.com/hydro-project/hydro/issues/2878), [#2892](https://github.com/hydro-project/hydro/issues/2892), [#2897](https://github.com/hydro-project/hydro/issues/2897), [#2898](https://github.com/hydro-project/hydro/issues/2898), [#2899](https://github.com/hydro-project/hydro/issues/2899), [#2904](https://github.com/hydro-project/hydro/issues/2904), [#2905](https://github.com/hydro-project/hydro/issues/2905), [#2907](https://github.com/hydro-project/hydro/issues/2907), [#2914](https://github.com/hydro-project/hydro/issues/2914), [#2917](https://github.com/hydro-project/hydro/issues/2917), [#2918](https://github.com/hydro-project/hydro/issues/2918), [#2929](https://github.com/hydro-project/hydro/issues/2929), [#2933](https://github.com/hydro-project/hydro/issues/2933)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#2796](https://github.com/hydro-project/hydro/issues/2796)**
    - Replace `NoTick`/`NoAtomic` with `TopLevel`, track consistency in the type system ([`881a101`](https://github.com/hydro-project/hydro/commit/881a101cbf91011ab9262a6ba72c489d03197780))
 * **[#2810](https://github.com/hydro-project/hydro/issues/2810)**
    - Use slotmap SecondaryMap for metrics ([`2c19583`](https://github.com/hydro-project/hydro/commit/2c195832ef6940c1adc8beef18dcb1527515a229))
 * **[#2828](https://github.com/hydro-project/hydro/issues/2828)**
    - Add MergeOrdered IR node with proper sim interleaving hooks ([`d7d70eb`](https://github.com/hydro-project/hydro/commit/d7d70ebcc90cc365b92402757e7821e8bb54be74))
 * **[#2833](https://github.com/hydro-project/hydro/issues/2833)**
    - Remove cdk example, update ecs manifest format, add ecs manifest format test ([`1ca3cd1`](https://github.com/hydro-project/hydro/commit/1ca3cd1def6f2e80d4a7536e542d3c48c84e1085))
 * **[#2840](https://github.com/hydro-project/hydro/issues/2840)**
    - Extract task-id from ECS metadata URI without runtime_id suffix ([`87b8e95`](https://github.com/hydro-project/hydro/commit/87b8e95ca50e6a30bcc7adb968530a5cd09ed44b))
 * **[#2848](https://github.com/hydro-project/hydro/issues/2848)**
    - Update bounded description and add regression test ([`31eb4ba`](https://github.com/hydro-project/hydro/commit/31eb4ba0a541906e69425ba3eff3b0cb78a64941))
 * **[#2852](https://github.com/hydro-project/hydro/issues/2852)**
    - Create dedicated fold hook ([`b0bdfe6`](https://github.com/hydro-project/hydro/commit/b0bdfe63f4b1d2e9c28c5e916e2330bbbb15755e))
 * **[#2858](https://github.com/hydro-project/hydro/issues/2858)**
    - Skip ticks with unready singleton hooks instead of panicking ([`d8afd0b`](https://github.com/hydro-project/hydro/commit/d8afd0bc71fa4e24ea2597d6b30b029911682219))
 * **[#2865](https://github.com/hydro-project/hydro/issues/2865)**
    - Validate generated Docker image names against Docker naming rules ([`755469a`](https://github.com/hydro-project/hydro/commit/755469a79470adbc502a44e6bf9d67193a2b6582))
 * **[#2866](https://github.com/hydro-project/hydro/issues/2866)**
    - Add bidi_external_sidecar ([`71a1a5e`](https://github.com/hydro-project/hydro/commit/71a1a5e952dbff6c62914aaefda3204f85a593e4))
 * **[#2867](https://github.com/hydro-project/hydro/issues/2867)**
    - Make `source_interval` emit `()` and add `current_tick_instant` ([`d4ff79f`](https://github.com/hydro-project/hydro/commit/d4ff79f02f6ab1981f671e364e02c089a4990735))
 * **[#2868](https://github.com/hydro-project/hydro/issues/2868)**
    - Implement singleton references for `map` closure ([`447effd`](https://github.com/hydro-project/hydro/commit/447effd1b6bb9d8ae6600b282351b2fc9c1d0c2a))
 * **[#2869](https://github.com/hydro-project/hydro/issues/2869)**
    - Cleanup trybuild stable vs nightly handling ([`7161b32`](https://github.com/hydro-project/hydro/commit/7161b32a4dca04ca7c163a974d792552308b3a13))
 * **[#2870](https://github.com/hydro-project/hydro/issues/2870)**
    - Update to rust 1.95.0 ([`33a606a`](https://github.com/hydro-project/hydro/commit/33a606afb3f123f01e4b9ce916c75cf9aa03e5fd))
 * **[#2871](https://github.com/hydro-project/hydro/issues/2871)**
    - Use a single match case for node metadata ([`b9aca9b`](https://github.com/hydro-project/hydro/commit/b9aca9b6e191e6b2d023e256088bbb269066fcb7))
 * **[#2872](https://github.com/hydro-project/hydro/issues/2872)**
    - Support singleton refs on all operators via `ClosureExpr`, fix #2713 ([`fc8add4`](https://github.com/hydro-project/hydro/commit/fc8add41380f856316b7b356ecc2c398740b5f58))
 * **[#2876](https://github.com/hydro-project/hydro/issues/2876)**
    - Make base image and libc type configurable for Docker deployments ([`21873c8`](https://github.com/hydro-project/hydro/commit/21873c89b83e192a382d3ae84e6f56fd35659b70))
 * **[#2877](https://github.com/hydro-project/hydro/issues/2877)**
    - Remove redundant image_unique_tag from Docker image names ([`617cf64`](https://github.com/hydro-project/hydro/commit/617cf64a8004fd5e53de68736cf03d53b1ab16a7))
 * **[#2878](https://github.com/hydro-project/hydro/issues/2878)**
    - Gate proc_macro_diagnostics behind codegen feature, remove several stabilized features. [ci-full] ([`938cf91`](https://github.com/hydro-project/hydro/commit/938cf91f4adff7b96f3f3536f4427f38f07f4ea6))
 * **[#2892](https://github.com/hydro-project/hydro/issues/2892)**
    - Resolve infinite hang when cross_singleton uses top-level bounded singleton ([`099e36e`](https://github.com/hydro-project/hydro/commit/099e36e44503320f7115c2ff0d1cc8ad2657969c))
 * **[#2897](https://github.com/hydro-project/hydro/issues/2897)**
    - Unify atomic ticks through Chain/MergeOrdered nodes ([`a4ab5bd`](https://github.com/hydro-project/hydro/commit/a4ab5bdf847f09b25ee24bb541b0a5bf1e8475d9))
 * **[#2898](https://github.com/hydro-project/hydro/issues/2898)**
    - Replace raw usize counters in Hydro IR with newtype_counter! types ([`851640e`](https://github.com/hydro-project/hydro/commit/851640e3e6799cd178e51246f30e03df25aa3773))
 * **[#2899](https://github.com/hydro-project/hydro/issues/2899)**
    - Add mutable singleton references (`by_mut`) to `Stream::map` ([`35f8a3b`](https://github.com/hydro-project/hydro/commit/35f8a3b758172fc09b3cf248f5df869c7250aa41))
 * **[#2904](https://github.com/hydro-project/hydro/issues/2904)**
    - Add reproducer for dropped singleton increasing simulation states ([`ca69ab9`](https://github.com/hydro-project/hydro/commit/ca69ab9031e16fd74e748b6acc535172ea7bcb81))
 * **[#2905](https://github.com/hydro-project/hydro/issues/2905)**
    - Reduce state space for bounded-to-unbounded singleton conversion ([`88556ac`](https://github.com/hydro-project/hydro/commit/88556ac7a132283bd66fae7c277772758466e34e))
 * **[#2907](https://github.com/hydro-project/hydro/issues/2907)**
    - Singleton `by_ref()` proper lifetime, update to stageleft 0.14.0 ([`5caf023`](https://github.com/hydro-project/hydro/commit/5caf0235cea8cf4e83614e0c31bbb3c8d5aa417e))
 * **[#2914](https://github.com/hydro-project/hydro/issues/2914)**
    - Add threshold_greater_or_equal for KeyedSingleton ([`17143bf`](https://github.com/hydro-project/hydro/commit/17143bf626687d78f3ad618a8b098d9de0b5d331))
 * **[#2917](https://github.com/hydro-project/hydro/issues/2917)**
    - Support MinRetries in cross_product ([`9eb3c98`](https://github.com/hydro-project/hydro/commit/9eb3c987940b9c2055459ad2e3c7f0eba41fc5a4))
 * **[#2918](https://github.com/hydro-project/hydro/issues/2918)**
    - Add broadcast_closed for cluster-to-cluster streams ([`341fb14`](https://github.com/hydro-project/hydro/commit/341fb1475fc993666fcdf407f69d6da280bc2733))
 * **[#2929](https://github.com/hydro-project/hydro/issues/2929)**
    - Remove `SingletonRef` global counter causing codegen non-determinism ([`eaf2b3c`](https://github.com/hydro-project/hydro/commit/eaf2b3c7b462ed999f9e3c9400dbd4c1b6128785))
 * **[#2933](https://github.com/hydro-project/hydro/issues/2933)**
    - Update nightly snapshots ([`b318ff4`](https://github.com/hydro-project/hydro/commit/b318ff43a08094324396d4c7ae744fe1d1efa541))
 * **Uncategorized**
    - Release hydro_build_utils v0.1.1-alpha.0, dfir_lang v1.0.0-alpha.0, dfir_macro v0.17.0-alpha.0, variadics v1.0.0-alpha.0, variadics_macro v0.8.0-alpha.0, lattices v0.8.0-alpha.0, dfir_pipes v0.1.0-alpha.0, sinktools v0.2.0-alpha.0, hydro_deploy_integration v0.17.0-alpha.0, dfir_rs v0.17.0-alpha.0, hydro_deploy v0.17.0-alpha.0, hydro_lang v0.17.0-alpha.0, hydro_std v0.17.0-alpha.0, safety bump 10 crates ([`12e7666`](https://github.com/hydro-project/hydro/commit/12e76666f7104f81b48de5ddf397b8e72c8a6711))
</details>

## 0.16.0 (2026-05-01)

<csr-id-6803fcdf57cf06ca9f76fda4bd98f194d38deecc/>
<csr-id-0f5a7378a845a419d629a3121ecc8a518d796071/>
<csr-id-2b32044d28b047d8f34c62a8cff6adfc52f21110/>
<csr-id-8246ab845905f888a8d70c6c19bfb79689b10c7e/>
<csr-id-cb06e6f2032d698afc66db30e0cd3be8607ddd15/>
<csr-id-c823479960a3823d6c2427faa949257f4ffdd152/>
<csr-id-5bccb09b69199639d3265dbbe90a96e02bad7f1d/>
<csr-id-a363dd38cdde318de33fd83e9387547275cf87a6/>
<csr-id-afa6e18a8c382f9ee9c7cda27544222eba492b92/>
<csr-id-9716e5bdd3a52d09d060fac1cdaaee98b1afc520/>
<csr-id-c6a22b8ba67ebc6b9caebf3ab79cd07f12633496/>
<csr-id-4b1bd5a0e62556882667b5914605f009fbddc81a/>
<csr-id-2a0c9b657f314ee6650785894105ff9af9d2917d/>
<csr-id-63e1e1ec76dbebf78b484617c4caa29e20b315b0/>
<csr-id-d17040d7caae6d704d058e5d94c3adcf473bd310/>
<csr-id-c1136c57a0fcb1611713f42df2027210ca14326b/>
<csr-id-23cc2e6d9590942af774cab3ec31cd5fed89ba84/>
<csr-id-acbefcdd44ea050507b06cba363e98725bce14e8/>
<csr-id-d56b580451970806a3b0e84bd71b34268398c613/>
<csr-id-6ead0cd2d1d89c393b0e5add7ceae5081c302077/>
<csr-id-481957007e984817b38a3beeb32ef34653dfa359/>
<csr-id-7dc2686c4a121c9137bb258257c17f04192fefe9/>
<csr-id-e4d184636e546f237238782d2c6cd8ebfb0124b0/>
<csr-id-adeb487b9e3ee22c5fe59675450a1c4388425223/>
<csr-id-5087df62b2cb00e7bb965e2ba8348cbb480f049b/>
<csr-id-2f38e7eddf0363f818aa4b204c7bf549c317428a/>
<csr-id-62e689e21c746b04b8c612370f0806494bc28f55/>
<csr-id-6c82e3a6b6ed39096a50381bd0d7fd2d01f2c43b/>
<csr-id-2d58215f99353e5b00066d66320fc54718e039c3/>
<csr-id-265d4ae23cf365be4b371ee1a7e91e70c34d155b/>
<csr-id-d60ebfb6fd5b935beb5fee9b72238a815553b88e/>
<csr-id-4984d6fc0434d6601123b97388fa41807a9840e4/>
<csr-id-59f5216642e3f08eae896ea67cfc5b213ad86e4a/>
<csr-id-f61efcc6a63fbf850e42ab019a265f663ee2bb22/>
<csr-id-54e7b84196e2a998f0651dae962aafb5296a9406/>
<csr-id-ed38dd72aaeec449e35c4324d96ffef55cedf0a4/>
<csr-id-f717ac95f8838f5281a5e617715c156f796d5997/>
<csr-id-216cc0ee14309994c4b706f9c109afa39a942a94/>
<csr-id-c500b4ac550c40808713f9757e612b2921d88c33/>
<csr-id-f04e3630eaa28bc0ffbd752f148586b389ce4ac3/>
<csr-id-16f1c0bf960c3b4238adb020a833f214bd3fd064/>
<csr-id-9cb780085e19197381653eb010d8abdaeb23729d/>
<csr-id-296a491c80546eb7f48327b48f9d50951abdf172/>
<csr-id-3e6e26c4cc87d6f7857591b10876074cba97caff/>
<csr-id-91866fc17d44ea936d8450fb8a8b4ab346fc2623/>
<csr-id-077ff8a25ea960e9dd8fd935344686e5f6c0f470/>
<csr-id-6738e4821acb6deac212099c2f0cb948eb6caaeb/>
<csr-id-1b947b3dab7a93fcb83b732eca968c3f2b049301/>
<csr-id-c1a03dfe61ea5ecaeb1b6766fdcdeb2f9ae02d38/>
<csr-id-08b7888315a49f0266b69a51e84e9c364f4a6dfa/>
<csr-id-5132ba75f14a4ed72d48b12077616f73031e761e/>
<csr-id-59d90ed7ea9830935b049cd848a0bc14ebd9afc5/>
<csr-id-7b468dfadc93e417ac632f2ccbfe4a383f9f00aa/>
<csr-id-4f77122f3988c6b1555c2de7f0cf857d4e9b257c/>
<csr-id-5cbf04e241727167b11ababbac35e108c76abc81/>
<csr-id-149e3e7af467ae3c4b16bc8122f4993b5164fcc5/>
<csr-id-5396e60d657b45e6fc090ba6c20f0007fa094da0/>
<csr-id-721edfbe74a48f5fd10f12a56898c5a53a5712a2/>
<csr-id-cb73aea75b6c5c5ec25caa121a04e261be290404/>
<csr-id-f5b0a12aac76778bdebe57629f8c16179be4c2e7/>
<csr-id-efaa8f61c124c4b3c691b92a58df1686751cf45c/>
<csr-id-b6cc1bc658d98d335cfad5d08dfda0023a8aa0b3/>
<csr-id-4f76b1f1fee7faa60c873f72afc4e43ef3b8d3b6/>
<csr-id-1c8f85366c592b2768df65ba1ee2e98d2c06d496/>

### Chore

 - <csr-id-27a69758b81159d3ecc064ca74c8d01d66025a0f/> fix hydro_lang/Cargo.toml wildcard deps for release

### Chore

 - <csr-id-27a69758b81159d3ecc064ca74c8d01d66025a0f/> fix hydro_lang/Cargo.toml wildcard deps for release

### Summary
   
   Removes browser-opening functionality from the viz module, simplifies
   the CLI and API surface, and makes graph output more uniform. Net -1,100
   lines.

### Changes
   
   **Uniform node rendering** — Mermaid and Graphviz renderers now use a
   single neutral node style (box shape, light gray fill) instead of 8
   different shapes/colors per node type. The interesting information in
   large graphs is the flow of edge properties (boundedness, ordering,
   keyedness, network), not node type differentiation. Edge styling is
   fully preserved.
   
   **Remove browser opening** — The `webbrowser`, `data-encoding`,
   `flate2`, and `urlencoding` dependencies are removed. `--graph` now
   always writes to a file. The mermaid.live free tier no longer supports
   large graphs, and GraphvizOnline has similar limits, so the browser path
   was broken in practice for real-world graphs.
   
   **Simplified CLI** — `--file` is replaced by `--output <path>` / `-o
   <path>`. Default output is `hydro_graph.<ext>` in the current directory.
   `--no-metadata` is preserved. `--no-location-groups` and `--no-tee-ids`
   are removed (these were rarely used and added API complexity).
   
   ```
   cargo run --example paxos -p hydro_test --graph dot
   cargo run --example paxos -p hydro_test -- --graph json -o paxos.json
   cargo run --example paxos -p hydro_test -- --graph mermaid --long-labels
   ```
   
   **Simplified API** — `GraphApi` goes from 12+ public methods to 3:
   `render()`, `write_to_file()`, `generate_graph()`. `BuiltFlow` similarly
   simplified. The old combinatorial explosion of
   `{format}_{to_string|to_file|to_browser}` methods is gone.
   
   **Backtrace hierarchy default** — JSON output now emits the
   backtrace-based hierarchy first, making it the default grouping in
   Hydroscope. Location hierarchy is still available as a secondary option.
   
   **Docs** — The hydroscope page now imports
   `@hydro-project/hydroscope/style.css`.

### All 13 examples updated
   
   Every example using `generate_graph_with_config` is updated to the new
   `generate_graph` pattern.

### Test

   - `cargo check -p hydro_lang --features viz` ✅
   - `cargo check -p hydro_test --examples` ✅
   - All 4 viz unit tests pass ✅
   - Snapshot tests unaffected (test graphs have no backtrace data)

### Bug Fixes (BREAKING)

 - <csr-id-f00cd91c3eed0446c05004c7d350c53e6e1e21bb/> fix compilation bug in `Singleton::zip`, require boundedness
   Breaking Change: `Singleton::zip` and `Optional::zip` now both require
   their inputs to be bounded, to avoid requiring a `Clone` bound on their
   value types. To handle unbounded inputs, you should manually use a
   `sliced!` region.
   
   Produced invalid Hydro IR which caused panics whenever the API is used.
   Fixes the compiler bug and adds simulator tests for their behavior.
 - <csr-id-589f1c979094b089ca41b050c2902551d166658d/> fix performance via proper `TaglessMemberId` variant feature-gating
   <img width="1400" height="1000" alt="Figure_100"
   src="https://github.com/user-attachments/assets/f4b663e9-4acb-447b-97cc-a5f3a4a4efb1"
   />
   
   Improves paxos benchmark performance by 40%. Will continue to look for
   any other regression to get back up to the ~450,000 in the graph
 - <csr-id-024cfd693b884f51b13dee5a0c51b1a2ce4e0a27/> fix & test sim DFIR codegen; DFIR use `Result` to force error handling

### New Features (BREAKING)

 - <csr-id-0a8ae174c0752eca16e13ca5ac9d40d4ae3ebd37/> refactor atomic() to generate tick IDs internally with union-find unification
   Breaking Change: Previously, `.atomic(&tick)` required passing an
   existing `Tick` reference. Now `.atomic()` takes no arguments and
   internally generates a fresh `ClockId`. When performing `batch_atomic`
   or `snapshot_atomic`, you must pass in a `Tick` where the output will be emitted.
   
   Before emitting DFIR, a union-find pass traverses the IR to unify tick
   IDs connected through `Batch` and `YieldConcat` nodes at atomic
   boundaries, then rewrites all `LocationId`s to use the representative
   tick ID.
   
   Key changes:
   
   1. **atomic() signatures** (Stream, Singleton, Optional, KeyedSingleton,
   KeyedStream): Removed `tick: &Tick<L>` parameter; each now calls
   `self.location.flow_state().borrow_mut().next_clock_id()` to generate a
   fresh tick internally.
   
   2. **Union-find pass** (`unify_atomic_ticks` in compile/ir/mod.rs):
   - Pass 1: traverses IR bottom-up, unifying tick IDs on both sides of
   `Batch` and `YieldConcat` nodes where both sides have ticks.
   - Pass 2: rewrites all `LocationId`s to use the representative tick ID.
   Called from both `ir::emit()` and `sim::flow` before DFIR generation.
   
   3. **Sliced macro** (sliced/style.rs): Removed `assert_eq!(tick.id(),
   ...)` assertions from all atomic `Slicable::slice()` impls since tick
   unification now handles matching.
   
   4. **Call site updates**: All `.atomic(&tick)` calls updated to
   `.atomic()`. Unused tick variables removed where they were only used for
   atomic().
   
   5. **Documentation updates**: Updated doc comments on `Atomic` struct,
   atomicity.mdx reference docs, single-counter.mdx quickstart, and
   slices-atomicity index. Removed references to `atomic(&tick)` pattern.
   
   6. **Compile-fail tests**: Updated source and regenerated stderr for
   `sliced_missing_arg` test (both nightly and stable variants).
 - <csr-id-e91d1584f29d04cf4778c911127f80bb53059ff8/> Refactor filter_is_some/none to filter_is_true/false, added boolean support operators (equals, and, or)
   Breaking Changes: All references to `filter_is_some` and
   `filter_is_none` replaced with `filter_if`. Use negation `!` to flip a
   singleton from true to false & vice versa.
 - <csr-id-a662ff38541e58bec801644b81b2bfc505779e7b/> use custom `dfir_pipes::Pull` trait [ci-bench]
   This is the pull-half of a big change from using other iterators
   (`std::iter::Iterator` or `futures_core::stream::Stream`) to our own
   `Pull` trait. Key to this more powerful iterator trait is the step enum:
   ```rust
   pub enum Step<Item, Meta, CanPend: Toggle, CanEnd: Toggle> {
   /// An item is ready with associated metadata.
   Ready(Item, Meta),
   /// The pull is not ready yet (only possible when `CanPend = Yes`).
   Pending(CanPend),
   /// The pull has ended (only possible when `CanEnd = Yes`).
   Ended(CanEnd),
   }
   ```
   This abstraction allows `Pull` to represent both synchronous `Iterator`s
   and asynchronous `Stream`s with zero cost. (As well as distinguishing
   between infinite vs finite iterators, which I guess is not actually that
   useful to us). In the future we will also add an `Error` variant
   (#2635). The `Meta` metadata field may be used for full record-level
   tracing (#2242).
   
   This trait has some pseudo-specialization around `Fuse`, and further
   performance improvements may come from true nightly
   `min_specialization`, as well as from converting from `Pusherator/Sink`
   to a new `Push` trait.
   
   Other changes:
   * Moves much of `dfir_rs::compiled::pull` into `dfir_pipes`, using new
   trait
   * Update itertools to `0.14`
 - <csr-id-05f777d36e77223647ccf7d9ec6654ed622b081a/> add `.partition()` operator for splitting streams without cloning
   Add a new `Stream::partition()` method that takes a `Fn(&T) -> bool`
   closure and returns two output streams — one for elements where the
   predicate is true, one for false — without ever cloning elements.
   
   Breaking Change: TeeNode / SeenTees / SeenTeeLocations have been renamed
   to SharedNode / SeenSharedNodes / SeenSharedNodeLocations
   
   Under the hood this is backed by a new `HydroNode::Partition` IR node
   that compiles to DFIR's `partition` operator. Both output streams share
   a single subtree via `SharedNode` (renamed from `TeeNode`), reusing the
   same deduplication pattern that `Tee` already uses for
   `seen_tees`/`built_tees`.
   
   The `Partition` IR node carries an `is_true: bool` field indicating
   which side of the partition it represents. Whichever side is encountered
   first during `emit_core` adds the DFIR `partition` operator to the graph
   and creates two `identity()` bridge nodes (one per output port). The
   second side simply looks up its ident from `built_tees`.
   
   To support multiple output idents per shared node, `built_tees` is
   changed from `HashMap<ptr, syn::Ident>` to `HashMap<ptr,
   Vec<syn::Ident>>` — Tee stores `[ident]` (both sides index 0), Partition
   stores `[true_ident, false_ident]`.
   
   Key changes:
   - Rename `TeeNode` to `SharedNode` (with backwards-compat type alias)
   - Add `HydroNode::Partition { inner, f, is_true, metadata }` variant
   - Add `Stream::partition()` returning `(Stream, Stream)` — no `T: Clone`
   bound
   - Update `transform_children`, `deep_clone`, `emit_core`, `metadata`,
   `metadata_mut`, `input`, `visit_debug_expr`, `print_root`, and viz
   rendering
   - Update all live collection files for the `SharedNode` rename
   - Add deploy integration test and doctest verifying correct element
   routing
 - <csr-id-4d628dc323c14a8ca08cc68ef782da515dc64150/> implement support for clusters and cluster networking in embedded mode
   Breaking Change: cluster networking APIs in `Deploy` trait now take the
   `InstantiateEnv`, and `cluster_membership_stream` takes the location
   where the stream is being materialized. Also eliminates `D: Deploy` type
   parameter for IR emit logic.
 - <csr-id-4efc69b547f081d568466cbb1fa857d02e1878c6/> implement o2o networking in embedded mode
   Breaking Change: add additional parameters to `Deploy::o2o_sink_source`
   to include instantiate env and network channel name (the latter will be
   needed for the multiversioned runtime anyways).
   
   Also fixes an issue with CSS for the research page being applied
   globally.
 - <csr-id-83a1221e04be1aad10679ae41ae041a247db44bb/> require explicit failure policy for TCP channels
   Currently, we only offer `fail_stop` as a policy, which was the implicit
   default TCP guarantees thus far.
 - <csr-id-30167649b29b1c199a14daabc796950d1a588297/> Join consistent naming
   Create operations to `join` and `lookup` between Stream, KeyedSingleton,
   and KeyedStream, and rename confusing operations.
   
   - `get_many`: Now `join_keyed_singleton`
   - `get_many_if_present`: Now `join_keyed_stream`
   - `get_from`: Now `lookup_keyed_singleton` (and also
   `lookup_keyed_stream`)
 - <csr-id-37769524360ef7368cd860881c513060bc7220e6/> initial support for top-level bounded live collections
   This PR introduces support for having bounded (finite, immediately
   complete) live collections at the top level of a Hydro program (outside
   a tick). This is useful for storing and manipulating static data. The
   most significant change is that top-level bounded singletons only emit
   their value once rather than replaying every DFIR tick. This requires a
   new DFIR operator `fold_no_replay` because `fold` unconditionally
   replays even when there are no new inputs.
   
   Because this involves many changes to the core compiler infrastructure,
   this PR focuses on enabling support for only some APIs. Follow up PRs
   will expand support, such as supporting `reduce` on bounded streams.
   
   Breaking Change: APIs like `Location::source_iter` and
   `Location::singleton` now return `Bounded` collections. In applications,
   this should not affect any runtime behavior, but in simulation the
   bounded semantics are now accurately enforced which eliminates
   simulation instances where the collection is partially observed.
 - <csr-id-d8ebb19948c65e13276539a3e6b99041407b64e9/> unify remaining stream / keyed stream APIs using properties
   Breaking Changes:
   - All `_commutative` and `_idempotent` APIs have been removed. You
   should now directly use `.fold` or `.reduce ` with property annotations
   - All deprecated `fold_keyed` / `reduce_keyed` APIs have been removed
 - <csr-id-101c7c70c3381d181241ce7c648e4f70e12f589b/> unify `fold` API by using Stageleft properties to track commutativity and idempotence
   With support for property annotations in Stageleft, we can now eliminate
   the `_commutative` and `_idempotent` variations of `fold` and instead
   require a `commutative = ...` or `idempotent = ...` annotation next to
   the UDF. This also paves the path for configurable verification methods
   such as Kani.

### Documentation

- Rewrote `forward_ref` doc comment: clarifies it's for forward
   references, points to `Tick::cycle()` for feedback, and documents the
   panic on synchronous cycles.
- Replaced the doctest with a valid DAG-style forward reference (no
   cycle).
 - <csr-id-c515ccef8b40054294558b1cb00ddc3d1416fc08/> docs for the `Location` trait
 - <csr-id-a65f6655cc51f75dab5f5a5c00d041cee0a5fab2/> add docs on network configuration
 - <csr-id-cbbf6b69849d4f13dca2f528b0eb7859ad2f1d5b/> add missing docs for remaining location modules
 - <csr-id-b393e4e81a97815ba15f89b79965d88c2db0e575/> document LaunchedSim struct and fields in simulator
   Add doc comments to the `LaunchedSim` struct explaining the three kinds
   of work the simulator scheduler manages:
   
   - **Async DFIRs**: long-running top-level dataflows that produce data
   - **Ticks**: tick-scoped DFIRs with hooks resolved before execution
   (e.g. `batch`)
   - **Observations**: top-level locations with `assume_ordering` hooks
   that need ordering decisions but have no tick DFIR to execute
   
   Also documents the distinction between `hooks` (resolved before tick
   runs or standalone for observations) and `inline_hooks` (resolved during
   tick execution for in-tick `assume_ordering`).

### Test

   - Fixed 7 sim tests that created synchronous cycles by routing
   cycled-back data through a second process via `.send(&node2,
   TCP.fail_stop().bincode()).send(&node, TCP.fail_stop().bincode())`.

### Simulator docs (`sim/runtime.rs`)
   
   - Added comments on `TopLevelStreamOrderHook` and
   `TopLevelKeyedStreamOrderHook` explaining why `assume_ordering` outside
   a tick gets special treatment: it's the only place where causality
   (cycled-back data interleaving with pending input) can be observed, so
   the simulator releases elements one at a time to explore all
   interleavings.

### Summary
   
   Removes browser-opening functionality from the viz module, simplifies
   the CLI and API surface, and makes graph output more uniform. Net -1,100
   lines.

### Changes
   
   **Uniform node rendering** — Mermaid and Graphviz renderers now use a
   single neutral node style (box shape, light gray fill) instead of 8
   different shapes/colors per node type. The interesting information in
   large graphs is the flow of edge properties (boundedness, ordering,
   keyedness, network), not node type differentiation. Edge styling is
   fully preserved.
   
   **Remove browser opening** — The `webbrowser`, `data-encoding`,
   `flate2`, and `urlencoding` dependencies are removed. `--graph` now
   always writes to a file. The mermaid.live free tier no longer supports
   large graphs, and GraphvizOnline has similar limits, so the browser path
   was broken in practice for real-world graphs.
   
   **Simplified CLI** — `--file` is replaced by `--output <path>` / `-o
   <path>`. Default output is `hydro_graph.<ext>` in the current directory.
   `--no-metadata` is preserved. `--no-location-groups` and `--no-tee-ids`
   are removed (these were rarely used and added API complexity).
   
   ```
   cargo run --example paxos -p hydro_test --graph dot
   cargo run --example paxos -p hydro_test -- --graph json -o paxos.json
   cargo run --example paxos -p hydro_test -- --graph mermaid --long-labels
   ```
   
   **Simplified API** — `GraphApi` goes from 12+ public methods to 3:
   `render()`, `write_to_file()`, `generate_graph()`. `BuiltFlow` similarly
   simplified. The old combinatorial explosion of
   `{format}_{to_string|to_file|to_browser}` methods is gone.
   
   **Backtrace hierarchy default** — JSON output now emits the
   backtrace-based hierarchy first, making it the default grouping in
   Hydroscope. Location hierarchy is still available as a secondary option.
   
   **Docs** — The hydroscope page now imports
   `@hydro-project/hydroscope/style.css`.

### All 13 examples updated
   
   Every example using `generate_graph_with_config` is updated to the new
   `generate_graph` pattern.

### Test

   - `cargo check -p hydro_lang --features viz` ✅
   - `cargo check -p hydro_test --examples` ✅
   - All 4 viz unit tests pass ✅
   - Snapshot tests unaffected (test graphs have no backtrace data)

### Documentation

 - <csr-id-b393e4e81a97815ba15f89b79965d88c2db0e575/> document LaunchedSim struct and fields in simulator
   Add doc comments to the `LaunchedSim` struct explaining the three kinds
   of work the simulator scheduler manages:
   
   - **Async DFIRs**: long-running top-level dataflows that produce data
   - **Ticks**: tick-scoped DFIRs with hooks resolved before execution
   (e.g. `batch`)
   - **Observations**: top-level locations with `assume_ordering` hooks
   that need ordering decisions but have no tick DFIR to execute
   
   Also documents the distinction between `hooks` (resolved before tick
   runs or standalone for observations) and `inline_hooks` (resolved during
   tick execution for in-tick `assume_ordering`).
 - <csr-id-cbbf6b69849d4f13dca2f528b0eb7859ad2f1d5b/> add missing docs for remaining location modules
 - <csr-id-a65f6655cc51f75dab5f5a5c00d041cee0a5fab2/> add docs on network configuration
 - <csr-id-c515ccef8b40054294558b1cb00ddc3d1416fc08/> docs for the `Location` trait

### New Features

 - <csr-id-ba2eee3633034e18ffb619954d3277ce69c9344b/> add broadcast_closed for fixed-membership clusters
   Adds `Stream::broadcast_closed`, a deterministic alternative to
   `broadcast` for clusters with fixed deploy-time membership.
   
   Unlike `broadcast`, this does not require a `NonDet` guard — the
   membership set is obtained via `source_iter` over `ClusterIds`,
   producing a `Bounded` stream. The cross-product of data × members is
   fully deterministic.
   
   Useful for prototyping and testing with fixed-size clusters.
   
   Depends on #2778 (mixed-boundedness `cross_product`).
 - <csr-id-5aa43241a504d73b4578ef4b552ed21630264f4e/> make IR types serializable via serde
 - <csr-id-35c2d95f080ce9438246d264b95d30f7c74b3a18/> make the number of fuzzing iterations configurable in unit tests
 - <csr-id-33dfda8a16ee7628c4cde0fcd1ecf833baba4cd3/> smart join that preserves ordering when right side is bounded
   ## Summary
   
   When the right-hand side of a `join` is `Bounded`, the join now
   accumulates the right side into a hash table and streams the left side
   through, **preserving the left side's ordering**. When both sides are
   `Unbounded`, the existing symmetric hash join (`NoOrder` output) is used
   unchanged.
   
   ## Motivation
 - <csr-id-a23b09b26c0c501254d82eb609a942cd1b21ab73/> pass through orderedness in KeyedStream::get
   Stack on #2753 and #2752
 - <csr-id-57a8a570187c0afe5204d8b71e8f29473aa915ba/> refactor keyed stream / singleton joins to allow unbounded source
 - <csr-id-fcb7513764312521d19ec69b087ce86344e380cb/> add entries_partially_ordered to KeyedStream
 - <csr-id-ab7840cf72e50586de34c54696e1e1ca91ac2e77/> demux from cluster directly goes to KeyedStream
 - <csr-id-91e02ee15fede232489f992a48419b5f170b329d/> add order_preserving property to MapFuncAlgebra for monotonicity propagation
   ## Summary
   
   Previously, `Singleton::map()` always dropped monotonicity (returning
   `B::UnderlyingBound`). This PR adds a new `MapFuncAlgebra` property type
   with an `order_preserving` annotation that, when proved, preserves
   monotonicity through map operations.
   
   ## Changes
   
   - **`properties/mod.rs`**: Added `OrderPreservingProof` sealed trait,
   `MapFuncAlgebra<OrderPreserving>` struct with `order_preserving()`
   builder, and `ApplyOrderPreservingSingleton` trait (preserves bound when
   `Proved`, drops to `UnderlyingBound` when `NotProved`)
   - **`singleton.rs`**: Changed `map()` to accept `MapFuncAlgebra<OP>`
   properties and use `ApplyOrderPreservingSingleton` for conditional
   monotonicity propagation
   - **`stream/mod.rs`**: Added `monotone_map_order_preserving_threshold`
   test showing that `map` with `order_preserving` preserves monotonicity
   through to `threshold_greater_or_equal`
   
   ## Backward Compatibility
   
   Existing callers of `map(q!(...))` without annotations continue to work
   — `MapFuncAlgebra` defaults to `NotProved`, which drops monotonicity as
   before.
 - <csr-id-eacc3cd85a0a9bdd70c9f6b9da4da312059f3c5a/> Add scan_async_blocking operator to hydro_lang and dfir
 - <csr-id-2633db89ef2768285219a0e5af18f5a971a9aa1c/> port runtime metrics to inline codegen path
   ### Summary
   
   Ports per-subgraph and per-handoff runtime metrics from the scheduled
   `Dfir<'_>` codegen path to the new `InlineDfir` inline codegen path, and
   updates the EMF telemetry sidecar to work with both.
   
   ### Changes
   
   **`dfir_rs/src/scheduled/context.rs`**
   - Added `Rc<DfirMetrics>` to `InlineDfir` with `metrics()` and
   `metrics_intervals()` accessors, threaded through `into_erased()`.
   
   **`dfir_rs/src/scheduled/metrics.rs`**
   - Made `InstrumentSubgraph` and its constructor `pub #[doc(hidden)]` for
   codegen access.
   - `define_metrics!` macro now hardcodes `pub #[doc(hidden)]` on fields
   internally instead of accepting a visibility specifier at the call site.
   
   **`dfir_lang/src/graph/meta_graph.rs`**
   - Inline codegen now builds `DfirMetrics` with pre-initialized entries
   for each subgraph and handoff, using slotmap raw indices
   (`KeyData::as_ffi() & 0xFFFF_FFFF`) so runtime metrics IDs match the
   meta graph for cross-referencing with Mermaid/Dot visualizations.
   - Recv port code instruments handoff metrics (`total_items_count`,
   `curr_items_count`) before draining, matching the scheduled path's
   "measure at recv" strategy.
   - Each subgraph async block is wrapped with `InstrumentSubgraph` for
   per-subgraph
   `total_poll_duration`/`total_poll_count`/`total_idle_duration`/`total_idle_count`
   tracking, with `total_run_count` incremented after each run.
   - Send-side `curr_items_count` updated after each subgraph completes.
   
   **`hydro_lang/src/telemetry/emf.rs`**
   - `record_metrics_sidecar` now takes `DfirMetricsIntervals` directly
   instead of `&Dfir<'_>`. The generated sidecar code calls
   `.metrics_intervals()` on the dfir instance, which works for both `Dfir`
   and `InlineDfir`.
   
   **`dfir_macro/src/lib.rs`**
   - Updated error fallback to pass default metrics `Rc` to
   `InlineDfir::new`.
   
   ---------
 - <csr-id-de0fa9767573e2968b7e7f6e271bf371c3207775/> switch all codegen paths to inline DFIR execution [ci-bench]
   Switches all three Hydro compilation paths (trybuild, embedded, sim)
   from the scheduler-based `Dfir` runtime to inline codegen, building on
   the `as_code_inline` infrastructure from the previous PR.
   
   ## Results
   
   - **35-50% throughput improvement on the Paxos benchmark** — zero
   application code changes
   - **All Hydro tests pass** — 51 sim, 6 embedded, deploy tests (paxos,
   two_pc, many_to_many, etc.)
   
   ## Changes
   
   ### Hydro compilation paths
   - **trybuild/generate.rs** — `as_code` → `as_code_inline`, generated
   binaries return `InlineFlow` instead of `Dfir`
   - **embedded.rs** — `generate_embedded` defaults to inline; removed
   redundant `generate_embedded_inline`
   - **sim/graph.rs** — `as_code` → `as_code_inline`, each location wrapped
   with `into_erased()` for `Vec` storage
   - **sim/compiled.rs** — `Dfir<'static>` → `ErasedInlineDfir` throughout
   
   ### Runtime support
   - **launch.rs** — Added `Runnable` trait with impls for both `Dfir` and
   `InlineFlow`, making `run_stdin_commands` generic
   - (likely will be removed in a future PR)
   - **InlineDfir** — A new wrapper around the tick closure provides an API
   which matches the existing `Dfir<'_>` API. Of note: `run_tick()` returns
   `bool` (whether subgraphs were run in a meaningful way, [see
   here](https://github.com/hydro-project/hydro/pull/2732#issuecomment-4240163682)),
   matching `Dfir::run_tick` semantics. First tick pre-set to true to match
   Dfir's pre-scheduling behavior. Necessary for the simulator to work
   properly.
   - **TickClosure** — `call_tick` returns `bool` directly; eliminated
   `work_done` shared state and `__mark_work_done`
   
   ### Type erasure for sim
   - **`ErasedTickFn`** / **`ErasedInlineFlow`** — enables storing multiple
   locations with different closure types in `Vec`. Uses object-safe inner
   trait (`ErasedTickFnInner`) since `AsyncFnMut` is not object-safe. Zero
   overhead on the concrete (trybuild/embedded) path.
   - **`into_erased()`** — converts concrete `InlineDfir` to
   `ErasedInlineDfir`, one box allocation per tick (for the `dyn Future`)
   
   ---------
 - <csr-id-bf0dc2d8d9675e0a31a3f2e8e148bdb6d02f9686/> Make new_node_metadata public
   So I can create metadata for new HydroNodes in hydro-optimize
 - <csr-id-b1b2c8f80d9033daf6019004fe9ba7f946396eba/> Early exit for first() and is_empty()
   Avoids reading entire stream when just the 1st element is needed
 - <csr-id-8f29a22d3b57ab5371ab56f421b279f5fe0da34f/> Allow getting the next ClockId and CycleId since those are crate private
   I need to be able to create these in the optimizer
 - <csr-id-caf0d2c9755eda76c46dae2496946777968d3e20/> add limit() for Stream and KeyedStream
   Adds a `limit(n)` method to both `Stream` and `KeyedStream`, similar to
   SQL `LIMIT`. Uses the existing `generator` infrastructure to count and
   yield elements, breaking after `n` items.
   
   - `Stream::limit(n)` — takes the first `n` elements total
   - `KeyedStream::limit(n)` — takes the first `n` values per key
   - Both require `TotalOrder` and `ExactlyOnce`
   - Includes a simulation test for `Stream::limit()`
 - <csr-id-4df9096626b1cd01905c2c4658125d70eb2e4c5f/> add support for monotone singletons with a `fold` property
   This first PR intentionally only wires the monotone property into
   `Stream::fold` and `KeyedStream::fold`, we will follow with other
   operators.
 - <csr-id-354ede54dc007131fe7adbb355017019cd39b13a/> add flatten_stream, flat_map_stream to Stream
   STACK PREV: #2688
   
   - Added FlatMapStream variant to HydroNode enum in compile/ir/mod.rs
   with
   the same shape as FlatMap (f, input, metadata).
   - Handled FlatMapStream in all match arms: traversal, deep_clone,
   lowering
   (emits flat_map_stream(#f)), expression refs, metadata/metadata_mut,
   input(), and print_root().
   - Updated viz/render.rs to handle FlatMapStream in the transform group.
   - Added flat_map_stream() and flatten_stream() methods to Stream in
   hydro_lang/src/live_collections/stream/mod.rs. flat_map_stream takes a
   closure mapping items to futures::Stream; flatten_stream flattens items
   that are already Streams.
   
   ---------
 - <csr-id-78e0afac3e02cfd3ba7c549bdcb4d4eac1a6026a/> add m2e/e2m external inputs for clusters in the simulator
   Add support for external-to-cluster (e2m) and cluster-to-external (m2e)
   connections in the simulation testing framework.
   
   ## Changes
   
   - Add `e2m_source`, `e2m_connect`, and `m2e_sink` methods to the
   `Deploy` trait with default `todo!()` implementations, and implement
   them for `SimDeploy`.
   - Update IR compilation in `compile_network` to handle cluster locations
   for `ExternalInput` and `SendExternal` nodes (previously `todo!()`).
   - Update the sim builder to handle cluster locations in
   `create_external_source` (using a process-level dispatch DFIR graph) and
   `create_external_output` (tagging with member ID).
   - Add `SimClusterSender` and `SimClusterReceiver` types that use a u32
   LE prefix wire format for member ID routing.
   - Add `Cluster::sim_input()` method that returns a `SimClusterSender`
   and a per-member `Stream<T>`.
   - Add `Stream::sim_cluster_output()` for cluster streams that returns a
   `SimClusterReceiver`.
   - Add test `sim_cluster_e2m_m2e` verifying end-to-end cluster sim I/O.
 - <csr-id-7a0e7095a862465fb23989ece3da7b918acc29ab/> is_empty to check if a stream has elements
 - <csr-id-fb2becff83586ea1db6ebbcca79d8f73dcbed01f/> improve TrybuildHost::features API ergonomics
   ## Summary
   
   Improves the `TrybuildHost` builder API to be more ergonomic:
   
   - `features()` now accepts `impl IntoIterator<Item = impl Into<String>>`
   instead of `Vec<String>`, matching the existing `RustCrate::features`
   API
   - Adds singular `feature()` method accepting `impl Into<String>`
   - Applies the same improvements to `additional_hydro_features()` and
   adds singular `additional_hydro_feature()` method
   - Adds integration tests verifying the new API accepts `&str` slices,
   `String` vecs, and chains correctly
 - <csr-id-fbcd09c3018dbd7b9b52b51317271d7488ed8fea/> add `singleton_future` convenience method
   Add `Location::singleton_future` that initializes a singleton by
   resolving an async future to completion.
   
   This is equivalent to `self.singleton(expr).resolve_future_blocking()`
   but provides a more ergonomic API for the common pattern of creating a
   singleton from an async computation.
   
   Includes a doctest demonstrating usage with
   `process.singleton_future(q!(async { 42 }))`.
 - <csr-id-128e85a7b6980f76575ad0e7306f34e7de0076c6/> resolve_future[s]_blocking for streams, singleton
 - <csr-id-7fddc970b30538f2373007fab080d35444178fa5/> rename `interleave` to `merge_unordered` for symmetry with `merge_ordered`
   Added `merge_unordered` as the new primary method name on both `Stream`
   and `KeyedStream`, and updated all internal call sites and doc
   references to use it.
   
   To avoid a breaking change, the old `interleave` method is preserved as
   a deprecated forwarding wrapper on both types, marked with
   `#[deprecated(note = "use `merge_unordered` instead")]`.
   
   Files changed:
   - hydro_lang/src/live_collections/stream/mod.rs: New method + deprecated
   wrapper, updated docs/examples/tests
   - hydro_lang/src/live_collections/keyed_stream/mod.rs: New method +
   deprecated wrapper, updated docs/examples/tests
   - hydro_lang/src/live_collections/keyed_singleton.rs: Doc example
   - hydro_lang/src/location/cluster.rs: Call site
   - hydro_lang/src/location/mod.rs: Doc example
   - hydro_std/src/bench_client/mod.rs: Call site
   - hydro_test/src/external_client/http_counter.rs: Call sites
   - hydro_test/src/maelstrom/broadcast.rs: Call sites
   - hydro_test/src/cluster/paxos.rs: Call sites
   
   Closes hydro-project/hydro#2392.
 - <csr-id-6b3a071020a12df1aa77027ec9bcf3821a7bc853/> add embedded singleton input support
   Added support for singleton inputs in embedded deployment mode. A
   singleton input becomes a plain `T` parameter on the generated function,
   rather than requiring a `Stream` wrapper. This is useful for passing
   configuration values, thresholds, or any fixed data into a dataflow.
 - <csr-id-8600c2e37203447da91fe220760ff20c5fed90e9/> add generator method to `Stream`, mirroring `KeyedStream::generator`
   Added `Stream::generator` which iteratively processes stream elements
   using a state machine that can yield elements via the `Generate` enum
   (Yield, Return, Break, Continue). This mirrors the existing
   `KeyedStream::generator` but for non-keyed streams.
   
   The implementation uses `Scan` + `FlatMap` with an `Option<Option<A>>`
   state to distinguish between uninitialized (None), active
   (Some(Some(a))), and terminated (Some(None)) states. Added imports for
   `Generate` from keyed_stream and `ManualExpr` to the stream module.
 - <csr-id-05c8849747ac45e80e20a8a9038549e7aaf54560/> add `lossy_delayed_forever()` fault-tolerance mode
   Unlike `.lossy()`, `.lossy_delayed_forever()` does not require a
   `nondet!` annotation because the output stream is always lower in the
   partial order than the ideal stream (per Gyatso). The tradeoff is a
   `NoOrder` output, imposing stricter conditions on downstream consumers.
   This mode can be easily simulated in exhaustive mode without fairness
   issues, unblocking simulator tests for Hydro agents that previously
   relied on `.lossy()`.
   
   - Add `LossyDelayedForever` marker type, `TcpFault::LossyDelayedForever`
   variant, and `TCP.lossy_delayed_forever()` builder
   - Add `OrderingGuarantee` associated type to `TransportKind` and
   `NetworkFor` traits (`FailStop`/`Lossy` → `TotalOrder`,
   `LossyDelayedForever` → `NoOrder`)
   - Network `send`/`broadcast`/`demux` return types now compute
   `MinOrder<O, N::OrderingGuarantee>` so `delayed()` automatically weakens
   to `NoOrder`
   - Accept `TcpFault::LossyDelayedForever` in simulator and Maelstrom
   deploy backends
   - Concrete deployment targets (deploy_graph, containerized, ECS) still
   only support `FailStop` since TCP reconnect is not yet implemented
 - <csr-id-988313771dc16147e2a94207b87d08a937290b5f/> connect any dropped live collections to an implicit Null sink
   When a live collection (Stream, Singleton, Optional, KeyedStream,
   KeyedSingleton) is dropped without its IR node being consumed — e.g.
   calling `.inspect()` without using the returned value — the upstream
   pipeline would silently never execute.
   
   Now, each live collection's `Drop` impl automatically adds the
   unconsumed IR node to the dataflow graph as a `HydroRoot::Null` root. In
   codegen, Null roots compile to `for_each(|_| {})`, a no-op sink that
   still drives the upstream pipeline so side effects like `inspect` and
   `println!` are preserved.
 - <csr-id-355c392452b25cdf103841ac7699cff6b11f7e12/> Pin cores
   Can yield up to 15% higher throughput. Only one core was effectively
   being used before pinning anyway.
   
   See y-axis label of graphs for throughput/latency. Each row is an
   increasing number of physical clients (from 1-10) and each column is a
   different cluster of Paxos. Runs are 90 seconds; throughput and latency
   are averages between 30 and 60 seconds.
   
   Before pinning
   <img width="7980" height="5890" alt="cpu"
   src="https://github.com/user-attachments/assets/196155d4-9926-48fc-ad45-6eb452c78ec3"
   />
   
   and after pinning
   <img width="7980" height="5890" alt="pinned_cpu"
   src="https://github.com/user-attachments/assets/87e011c8-8648-4c9e-a14c-7b9d2b6efd45"
   />
 - <csr-id-292743d6ba6e35ec0446b35098402df0d29a5fe6/> unwrap_or_default for optionals
 - <csr-id-a57e73fc649a73fba42ba51d551705f01c09dfe7/> Sliced supports up to 12 inputs and outputs
 - <csr-id-bff2e9267d815ea48c14befd46a13dc0078d2e18/> KeyedStream and KeyedSingleton get() supports Optional
 - <csr-id-9941c0ddbd5fb251cae0ac97e204a8ba3d4d9606/> implement support for `use::state` with a `source_iter` input
 - <csr-id-d5e523caacfc0b537218e69d83d406bfc2c58b32/> add named channels to docker/ecs
 - <csr-id-fad81f0f79bac3d7524165df515fd746af148bfb/> allow passing runtime environment variables and use for benchmarking
   Binaries no longer need to be recompiled & uploaded when the number of
   virtual clients change. Should greatly reduce testing time.
 - <csr-id-08cb0ed12b213bc9a6ef449095cb89a69adc84ab/> add `manual_proof!` macro that accepts doc comments
 - <csr-id-6027dfad9c3e59fc50e5dc9acf296e8ecd1cf8a5/> improve quality of error messages for ordered / retries
 - <csr-id-6a3ae3da98762b07e4d2a2ad6911cef6b6443df7/> add `TCP.lossy()` fault tolerance and fault-tolerant broadcast challenge
   Previously, the only available fault-tolerance option for TCP channels
   was fault-stop, which isn't very practical for long running distributed
   systems that can tolerate network failures.
   
   This adds a new mode `TCP.lossy(nondet!(/** ... */))` which
   non-deterministically drops packets. We thread this through into the
   compilation layer, where (currently) lossy mode is only supported on the
   Maelstrom backend (we will eventually wire up support in the production
   deployment backends with runtime TCP re-connect logic).
   
   For Maelstrom, we are able to use the fault-tolerance choice to validate
   that the Hydro code is correctly designed to handle the faults
   configured in Maelstrom. For example, if network partitions are enabled,
   the backend will require that all channels are lossy.
 - <csr-id-59de8b731832d5d351f21ae2dbf98fd0533f142b/> add `KeyedStream::{enumerate, sort, unique}`
   enumerate_keyed, sort_keyed, unique_keyed
 - <csr-id-16269f19d1e96232cefd6342817b98349f62c54f/> use marker trait to improve error messages for wrong ordering / retries
   Old Error Message:
   ```
   error[E0599]: the method `enumerate` exists for struct `hydro_lang::prelude::Stream<{integer}, hydro_lang::prelude::Process<'a, P1>, hydro_lang::prelude::Bounded, hydro_lang::live_collections::stream::NoOrder>`, but its trait bounds were not satisfied
   --> tests/compile-fail-stable/non_commutative.rs
   |
   |       let _ = p1.source_iter(q!(0..10)).weaken_ordering::<NoOrder>().enumerate();
   |                                                                      ^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
   |
   ::: src/live_collections/stream/mod.rs
   |
   | / pub struct Stream<
   | |     Type,
   | |     Loc,
   | |     Bound: Boundedness = Unbounded,
   | |     Order: Ordering = TotalOrder,
   | |     Retry: Retries = ExactlyOnce,
   | | > {
   | |_- doesn't satisfy `_: Iterator`
   |
   = note: the following trait bounds were not satisfied:
   `hydro_lang::prelude::Stream<{integer}, hydro_lang::prelude::Process<'a, P1>, hydro_lang::prelude::Bounded, hydro_lang::live_collections::stream::NoOrder>: Iterator`
   which is required by `&mut hydro_lang::prelude::Stream<{integer}, hydro_lang::prelude::Process<'a, P1>, hydro_lang::prelude::Bounded, hydro_lang::live_collections::stream::NoOrder>: Iterator`
   ```
   
   New Error Message:
   ```
   error[E0277]: The input stream must be totally-ordered (`TotalOrder`), but has order `hydro_lang::live_collections::stream::NoOrder`. Strengthen the order upstream or consider a different API.
   --> tests/compile-fail-stable/non_commutative_operator.rs:7:68
   |
   7 |     let _ = p1.source_iter(q!(0..10)).weaken_ordering::<NoOrder>().enumerate();
   |                                                                    ^^^^^^^^^ required for this call
   |
   = help: the trait `IsOrdered` is not implemented for `hydro_lang::live_collections::stream::NoOrder`
   = note: To intentionally process the stream with a non-deterministic (shuffled) order of elements, use `.assume_ordering`.
   note: required by a bound in `hydro_lang::prelude::Stream::<T, L, B, O, R>::enumerate`
   --> src/live_collections/stream/mod.rs
   |
   |     pub fn enumerate(self) -> Stream<(usize, T), L, B, O, R>
   |            --------- required by a bound in this associated function
   |     where O: IsOrdered, R: IsExactlyOnce {
   |              ^^^^^^^^^ required by this bound in `Stream::<T, L, B, O, R>::enumerate`
   ```
   
   Only implemented for `enumerate` for now because this is not a breaking
   change. Will follow-up to expand its usage to all other stream
   operators.
 - <csr-id-07caa28acbc0f235207d91bda54f4f58203273e0/> implement support for embedded outputs with callbacks
   Also fixes the handling of embedded inputs/outputs to be per-Location
   instead of global, to correctly handle multi-location embedded
   compilation.
 - <csr-id-e764772603d3516d6e8237b8c02bdec721205ef6/> support in-memory inputs for embedded Hydro programs
 - <csr-id-4af85cbd179974bd668ed04f3c152c8bb2e64182/> Convert Singleton<Option<T>> to Optional<T>
 - <csr-id-bc5fc3311c5b4ba7be7277e48d0a197707ce3ff1/> preliminary support for embedding Hydro programs in other Rust code
   When we got rid of the original macro-entrypoint approach to building
   Hydro programs (in favor of trybuild + Hydro Deploy), we also lost
   option to incrementally adopt Hydro in existing Rust codebases by
   manually instantiating the DFIR projections for each location.
   
   This is the first step towards restoring this incremental adoption path
   by using build scripts as a mechanism to pull generated DFIR projections
   into a regular Rust crate. For now, we do not support any external
   inputs or outputs or inter-location networking. In followup PRs, we will
   start with external in/out support and later support networking
   operators (which require more design work).
 - <csr-id-1866677da0a5b71e48d7b1cdf9442ee66d0f1e23/> improve quality of error spans in `sliced!` macro
 - <csr-id-43d41a3c69f02e76943df968c2bddcb872928193/> Jepsen / Maelstrom backend for Hydro
   This adds Jepsen's Maelstrom system as another deployment target for
   Hydro. This enables running Hydro programs with the Maelstrom harness,
   which tests distributed systems for consistency violations using the
   same techniques as Jepsen's database evaluations.
   
   The Hydro simulator remains the primary method for testing programs. It
   is order of magnitudes faster and tests *all* concurrent executions
   instead of randomizing. But Maelstrom provides a handy set of exercises
   that we can use to evaluate Hydro, provides carefully-specced verifiers
   for transaction semantics, and makes it possible to compare Hydro to
   other distributed systems.
 - <csr-id-16fdf7ae9b7aad0d563a194433d981492e220619/> update ecs deployment to emit a hydro manifest that can be used by cdk to deploy to ecs.
 - <csr-id-39913ea1ec7f3485d988eca11eab159e32f3d350/> add support for top-level `KeyedStream::assume_ordering`
   Follows the same pattern as support for `Stream`. Because cross-key
   cycles are possible, we can only emit one entry at a time.
 - <csr-id-7e92fecadaad532975f96171f19b75e44b9d8012/> enable automatic AWS CloudWatch metric reporting (DFIR, Tokio, cpu/mem/netstat)
   Tracking issue: https://github.com/hydro-project/hydro/issues/2228
   
   This enabled automatic reporting of DFIR, Tokio, and CloudWatch Agent
   metrics/integrations (cpu, mem, netstat, disk, many other things) to AWS
   CloudWatch for AWS deployments. (For available CWA built-in
   metrics/integrations see
   https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html#CloudWatch-Agent-Configuration-File-Metricssection
   _Metrics section_ -> _Linux section_)
   
   To use, you need to provide a `hydro_deploy` `iam_instance_profile` and
   `cloudwatch_log_group` to your deployment instances, see
   `perf_compute_pi` for usage example. In the future this may be done in
   CDK instead.
   
   A `user_data` script installs and starts the CloudWatch Agent daemon. A
   sidecar logs metrics in EMF JSON format into a file which is read by the
   CloudWatch Agent and uploaded to AWS CloudWatch.
   
   ---
   
   Also change the `perf_compute_pi` example to require the `--tracing`
   flag if CPU tracing is to enabled, for testing. The perf files are large
   and may fill up the disk or take a long time to download.
 - <csr-id-88f92fdb5a7a4b9a212b8115a88c06bc77372918/> support top-level `assume_ordering` in the simulator
   This resolves a major limitation of the simulator: the ability to handle
   `assume_ordering` for unbounded streams.
   
   Simulating this operator is quite tricky. We cannot simply shuffle all
   of the pending unordered elements into an ordered output because the
   `assume_ordering` may participate in a feedback cycle, in which case
   such a naive simulation would skip over cases where an ordered output is
   cycled back into the unordered input and beats the other unordered
   inputs to being processed.
   
   To handle it correctly, we only release one ordered element at a time
   and allow ticks to run in between ordering decisions. This currently
   results in somewhat verbose logs when the same `assume_ordering`
   releases several elements in a row. We will address this logging in a
   follow-up PR.
   
   Because top-level operations like `assume_ordering` have their inputs
   and outputs in the same (non-Tick) location, we need to also add support
   for hooks (non-determinism simulators) placed at a top-level location.
   We call these "observation" hooks and add state management for them to
   the top-level simulator scheduler. When no top-level locations (the
   deterministic portions) can make progress, the simulator can now choose
   to run *either* a tick or an observation.
 - <csr-id-0b31dbbb079f4c4a3dd6445a4ac92af98aaab6f9/> introduce `Weaker{Ordering/Retries}Than` to simplify stream weakening
   Previously, the `weaken_*` APIs required an asymmetric `MinX` trait
   implementation, which would cause trouble when trying to weaken the
   `Other` stream to the same weaker guarantee. We introduce a
   `WeakerXThan` pair of traits which are implemented in both directions
   automatically if there is a `MinX` implementation in one direction,
   which allows weakening all streams explicitly to `MinX::Min`.
 - <csr-id-376011d789c98aa5f736ef3357ce149336dfadd4/> re-add type-erased deploy methods, `with_(process|cluster)_erased`, unstable
   For `hydro_optimize` @davidchuyaya
 - <csr-id-97d32af9c7cbd15882a9b4103baa9bb29491c2ed/> add bidi support for docker containers
   - add a new implementation of multi source/multi sink specificially just
   for TCP. I couldn't find a neat way to unfiy the two implementations so
   they're basically identical unfortunately. I suspect this code will
   change in the near future so I think it's fine to just leave it
   duplicated for now.
   - rejig the distributed_echo test to use bidi connections. The old style
   external connections are very jank and I had to remove it from the
   distributed echo test to actually get it working.
   
   ---------
 - <csr-id-418bf232dc5b172ef1d9e518df703cac86a1b872/> add `.name` to configure channel names and prepare for multiversioning
 - <csr-id-60c45036a7f5923bfa52e6804b2598d64d980957/> Add sidecar API
   This API allows us to add "sidecars" which run asynchronously alongside
   DFIR in the localset. This will primarily be used for telemetry/metrics.
   The `Sidecar` trait takes in info about the node and returns code which
   may inspect the DFIR instance before returning a future to run.
 - <csr-id-098621ef4d5b51101fd35a89dc7b0934c0e2af53/> set up skeleton for registering expressions with proof providers
 - <csr-id-7239f1d4ba7a40b06458cccc77ebd2aee8f418d5/> Sliced atomic keyed stream
 - <csr-id-b9dd20b72a6dbea0ac200ea5f1c8ee1c1e9990a5/> bump Stageleft to reduce Trybuild prep latency
   Avoids double-loading the crate tree and includes several fixes and
   optimizations to how the `__staged` module is generated.
 - <csr-id-530cfbdcdd5b405813320cc436d5d00d818081e2/> statically link projected DFIR for fuzzing
   This improves build performance, since now the RUSTFLAGS for `cargo sim`
   and the inner trybuild are identical, and also improves fuzzing
   performance since now the entire fuzzing dylib is compiled with
   optimizations instead of just the generated DFIR part.
   
   This *technically* can lead to an increase in disk usage if running
   _several_ fuzzing targets from the same crate (we will no share the base
   crate as a dylib). But given that fuzzing is used relatively
   infrequently (definitely not in a development loop), this seems like a
   good tradeoff for the significant increase in fuzzing performance.
 - <csr-id-44cc4e0a02e0727b60f6725486ebb3a3a287a141/> share target dir between main and trybuild
   This dramatically reduces disk usage (~50%) as well as first-test
   compilation latency since the vast majority (all crates outside this
   repo) of crate compilations are entirely shared between compiling the
   outer (regular) crate and the generated trybuild crate.
 - <csr-id-7c1b423d1feb11ca81fc0d54d1f3e3e8efb063f7/> use a dylib helper crate to avoid global RUSTFLAGS for trybuild [ci-full]
   Previously, we enabled a global `-Cprefer-dynamic` flag when compiling a
   projected DFIR program using dynamic linking to save on disk space. This
   was necessary globally because otherwise Cargo would get confused on
   which crates to consume statically versus dynamically.
   
   This PR introduces a new trybuild structure where we have a
   statically-linked "base crate" which contains the `__staged` module and
   is shared across all DFIR projections. To statically link a DFIR
   program, we generate the code into the `examples` dir of the base crate
   and compile it statically there. For dynamic linking, we introduce a
   "dylib crate" which has `crate-type = ["dylib"]` which forces dynamic
   linking whenever it is a dependency. And finally, we have a "dylib
   examples crate" which has a dependency on the dylib crate and examples
   to be compiled with dynamic linking are placed in its examples
   directory.
   
   With these changes, we no longer need any global `RUSTFLAGS` which
   dramatically improves the caching hit rate and sets us up to share the
   target directory between the outer build and trybuild (future PR).
 - <csr-id-c2fc7771c1c523e9844c15b5047ef66475e66fea/> add ecs deployment support [ci-full]
 - <csr-id-609dad2a558236b77b3858f59f975ff6a605f526/> Add across_ticks() API to KeyedStream
   Also refactor doctests to be order independent
 - <csr-id-1a769e1c0a5a8bbe7930b8f7224de5c661642147/> Create rewritten_ir_builder from BuiltFlow instead of FlowBuilder
   Lmk if I'm using recreating the RefCells correctly
 - <csr-id-708e835452958120edce77cd693bd8fb1cb6c48c/> make network channels configurable with a generic `Stream::send` API
   This eliminates the hardcoding of networking APIs to specific
   serialzation formats, transport protocols, etc. Includes similar
   refactors across `demux` / `round_robin` / etc APIs.
 - <csr-id-9e1f9f08ee4ebce1abe814dddcdad8979fb050e3/> add local containerized deployments
 - <csr-id-c374bd6a1085a8516c174cab441cc92e47573f8a/> support atomic yield in `sliced!`, use in Paxos
 - <csr-id-853db69e4487ae9c097fe838f05e9447c736ec98/> add `use::state` syntax for stateful `sliced!`
 - <csr-id-3d22c9a3d72e2b3b5c8b00d38f6d86bbf4ba6b9f/> add `across_ticks` API for operations inside a tick that retain memory
 - <csr-id-3f65882e04633cb92a2e6ac52edff81a26b35320/> add tagless member ids, add docker member id
 - <csr-id-72afebe17d1c4431c6322c76dd7a96a829c855e9/> Mark nodes with nondet blocks as NonDeterministic type
   Add a new NonDeterministic node type to the visualization system and
   mark nodes that require nondet! parameters with this type. This
   includes:
   
   - Batch nodes (used by batch(), snapshot(), sample_every())
   - ObserveNonDet nodes (used by assume_ordering(), assume_retries())
   
   The NonDeterministic node type is now included in all visualization
   formats: JSON, Graphviz and Mermaid
   
   This allows visualizers to style non-deterministic operations
   differently to highlight them in the dataflow.
   
   ---------
 - <csr-id-26659dc6750f87f4aa9642c0fa80273dbaafd995/> add round_robin_bincode to Stream<_, Cluster<_>>
 - <csr-id-cda8c3cfc51a732a75a751ade229da791cfedc39/> add get_many method for outer join on KeyedSingleton
   Add `get_many()` method that returns `Option<V>` for all request keys,
   providing a clean outer join operation. This eliminates the need to
   manually combine `get_many_if_present` with anti-joins.
   
   The implementation composes existing operators:
   - `get_many_if_present` for matches
   - `filter_key_not_in` for missing keys  
   - chain to combine results
   
   Returns `KeyedStream<K, (Option<V>, V2), ...>` where:
   - Found keys get `Some(value)`
   - Missing keys get `None`

### Bug Fixes

 - <csr-id-31b2161962e10f5828dab33b6c67fa2edb3db314/> normalize backtrace outputs further due to windows not emitting column numbers [ci-full]
 - <csr-id-9a94b266ad7d4c123bd148da1920e2dca455a7eb/> Skip meta graph JSON embedding to avoid proc-macro2 Span overflow
 - <csr-id-1855bcd4b8e212bf74f2036c1b5a3802c31a20a7/> ReduceKeyedWatermark generated DFIR was broken for non-Copy watermarks
 - <csr-id-34893c20c53499dd4c4de0a99d6d15778af7825d/> drop message in round_robin if there are no members, rather than panic
 - <csr-id-2b33b73b996837c0492ef260ebb826f75a24e5fd/> Use Display instead of Debug for TaglessMemberId formatting
 - <csr-id-6e3c8d20abb5d07b8a265cbbbb8648398581e637/> sim scheduler no longer terminates on quiescence
 - <csr-id-a675af6236dbc0d9bac22cb08b787d5085f299b9/> fix simulator hole for Stream::merge_ordered
   Previously, `Stream::merge_ordered` simply emitted a `Chain` IR node
   that would not trigger any simulation of different interleavings. Now,
   we use `sliced!` to ensure that the state space is explored; using
   `sliced!` does result in unnecessary states but we leave performance
   optimization to a later PR.
 - <csr-id-48febffe0869454fe721ecd878ac157e7eae76a2/> disable backtrace tests on all non-Linux platforms
   macOS backtrace format has also drifted from Linux
 - <csr-id-057783a8f89b3af0d8554cb4c9eaf00ed18a0065/> sanitize `{` and `}` in crate name prefix
   When a Location type is defined inside a closure or `#[tokio::main]`,
   `std::any::type_name` returns a path containing `{{closure}}`. The
   `clean_bin_name_prefix` function did not strip curly braces, resulting
   in invalid crate names.
   
   Adds `.replace("{", "_").replace("}", "_")` to `clean_bin_name_prefix`.
   
   Also adds a test (`closure_location_name`) with a Location enum defined
   inside `#[tokio::test]` to verify the fix.
 - <csr-id-2a45e64a9067e6df3c039025772a61b800b7845f/> singleton/optional flatten operators require `B: IsBounded`, fix #2694
 - <csr-id-9891a9373ff9de46dcf97b93a898c88e9ecc87f3/> remove singleton T: Clone bound on top-level locations, fix #2679
 - <csr-id-62afd62b1eb90d26bb4d13a4e2bcb290db43b9a0/> add explanatory messages to empty todo!() in IR compiler and simulator
 - <csr-id-45bf796c34c5f3a7d9b05ad9b80ca3d3d59d85a2/> bump `slotmap` minimum version to `1.1.0`
   `slotmap` introduced `const fn from_ffi` in `1.1.0`, but all three
   crates were pinned to `1.0.0`, causing compilation failures when that
   API is used.
   
   ## Changes
   - Bumped `slotmap` from `1.0.0` → `1.1.0` in:
   - `dfir_rs/Cargo.toml`
   - `dfir_lang/Cargo.toml`
   - `hydro_lang/Cargo.toml`
   
   The resolved version in `Cargo.lock` is already `1.1.1`, so no lock file
   churn is expected.
   
   ---------
 - <csr-id-4b6f21e11b43b31f51befd5bec7e7c532ff290bb/> Reduce keyed watermark no longer deletes items equal to the watermark
   Documentation for
   [reduce_watermark](https://github.com/hydro-project/hydro/blob/main/hydro_lang/src/live_collections/keyed_stream/mod.rs#L1764)
   suggest that keys equal to the watermark value are not deleted. The
   implementation in DFIR, however, deletes those keys. We could either fix
   it by modifying the documentation or the implementation.
   
   For 0-indexed logs that use unsigned integers, the watermark naturally
   defaults to 0, which semantically means "do not delete items from the
   log". The documentation's interpretation is more ergonomic; I modified
   the implementation to match.
 - <csr-id-676ca45da47281aca0d0a19155601b6edc81acec/> correctly handle non-debug types in `__maybe_debug__`
 - <csr-id-bf569f43dcc71e11a8a520709374ca2271775556/> fix diagnostics path rewriting in Hydro Deploy
 - <csr-id-3742f68e6a82cd1100d7cbc97ba425f6a6b8ee81/> support `assume_ordering` in atomic locations and block top-level bounded
   Will address top-level bounded collections in a later PR, but we need to
   disable support for now to avoid soundness bugs.
 - <csr-id-c9016c90937354abe6dd28558cd52e1e37a6389d/> allow additional crates to be downloaded for the trybuild
 - <csr-id-c16e13a8bdae3b099d498f9b7f1f43872cfdc939/> flag non-determinstic hashmap iterators, fix hydro_lang codegen nondeterminism fix #2464
   Out of an abundance of caution, the `hydro_lang` IR `Demux` variants
   containing `HashMap<u32 ...>` have been replaced with `BTreeMap`
 - <csr-id-59404f14a097fba8029a05c5f369c755e6fbabc0/> remove unused `DeployNode::id` location field
 - <csr-id-25e69c85365e54578aa8830d895267ed9ff4f114/> fix local docker race conditions around membership stream and multiple containers starting up at the same time
   depends on https://github.com/hydro-project/hydro/pull/2426
   will rebase this PR when the above is checked in
 - <csr-id-631ff49939b27f96f6b127733ea23b0ed595251c/> make backtrace resolution lazy to reduce graph compilation overhead
   Reduces latency of compiling a simulation graph (for
   `sim_batch_unordered_shuffles_count`) from ~270ms to ~200ms
 - <csr-id-e6bbad80fe63b44c717f1147203963e4a1629ce9/> mutate Stageleft `gen_staged` in-place to avoid AST copies during pretty-print
   Reduces time to pretty-print from ~350ms to ~80ms for `hydro_lang`
   crate.
 - <csr-id-f6c8bdfcbd563a6f3b94b7b51ff2a272b2c93637/> re-enable tests that previously had stack overflow on Windows [ci-full]
 - <csr-id-74f1b936265c4fdd436073b6dec260a74739627e/> update Trybuild fork to inherit workspace profiles
 - <csr-id-22d10a22aa3c55eea0ae41c96be464a9f306cb43/> ensure `source_iter` always drains on first tick
 - <csr-id-0f2e7768f2677752258bc4edf64992368e56b97c/> detect workspace `Cargo.lock` changes to trigger trybuild setup
 - <csr-id-38d25bdcc0d68fd813707407e76ac0a302ae1069/> don't print color codes if they are disabled
 - <csr-id-a7a470234e163c08a9e6dfd1cc6c9b4372024e22/> move hydro_deploy tests to hydro_test, add rust-lld back in as musl c linker, fix ci nightly tests, fix snapshots [ci-full]
 - <csr-id-81e4d2df32e86f4f2ce70af896f7afb5c547b4bd/> work around Windows stack overflow in doctests [ci-full]
   The main thread in Windows has a smaller stack size than spanwed
   threads. This is a hack, will create an issue for reducing stack blowup
   in IR traversals.

### Refactor

1. Double-check that this macro is no longer used anywhere
2. Remove it</issue_description>
   >
1. Double-check that this macro is no longer used anywhere
2. Remove it</issue_description>
   >
   - Fixes hydro-project/hydro#2497
1. Double-check that this macro is no longer used anywhere
2. Remove it</issue_description>
   >
1. Double-check that this macro is no longer used anywhere
2. Remove it</issue_description>
   >
1. Double-check that this macro is no longer used anywhere
2. Remove it</issue_description>
   >
   - Fixes hydro-project/hydro#2497

### Changed

<csr-id-1c8f85366c592b2768df65ba1ee2e98d2c06d496/>

- **rustfmt.toml** — `hex_literal_case = "Lower"` → `"Upper"`
- **benches/benches/cross_join_multiset.rs** — hex bitmasks uppercased
- **dfir_lang/src/graph/meta_graph.rs** — slotmap key mask uppercased
- **hydro_lang/src/deploy/deploy_runtime_containerized.rs** —
   `CHANNEL_MAGIC` constant uppercased
- **hydro_lang/src/location/mod.rs** — test key constants uppercased
- **hydro_lang/src/viz/render.rs** — test key constants uppercased

### Changed

<csr-id-1c8f85366c592b2768df65ba1ee2e98d2c06d496/>

- **rustfmt.toml** — `hex_literal_case = "Lower"` → `"Upper"`
- **benches/benches/cross_join_multiset.rs** — hex bitmasks uppercased
- **dfir_lang/src/graph/meta_graph.rs** — slotmap key mask uppercased
- **hydro_lang/src/deploy/deploy_runtime_containerized.rs** —
   `CHANNEL_MAGIC` constant uppercased
- **hydro_lang/src/location/mod.rs** — test key constants uppercased
- **hydro_lang/src/viz/render.rs** — test key constants uppercased
 - 187 commits contributed to the release over the course of 156 calendar days.
 - 156 days passed between releases.
 - 185 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 185 unique issues were worked on: [#2179](https://github.com/hydro-project/hydro/issues/2179), [#2251](https://github.com/hydro-project/hydro/issues/2251), [#2297](https://github.com/hydro-project/hydro/issues/2297), [#2308](https://github.com/hydro-project/hydro/issues/2308), [#2323](https://github.com/hydro-project/hydro/issues/2323), [#2330](https://github.com/hydro-project/hydro/issues/2330), [#2338](https://github.com/hydro-project/hydro/issues/2338), [#2340](https://github.com/hydro-project/hydro/issues/2340), [#2346](https://github.com/hydro-project/hydro/issues/2346), [#2347](https://github.com/hydro-project/hydro/issues/2347), [#2349](https://github.com/hydro-project/hydro/issues/2349), [#2352](https://github.com/hydro-project/hydro/issues/2352), [#2360](https://github.com/hydro-project/hydro/issues/2360), [#2363](https://github.com/hydro-project/hydro/issues/2363), [#2372](https://github.com/hydro-project/hydro/issues/2372), [#2373](https://github.com/hydro-project/hydro/issues/2373), [#2378](https://github.com/hydro-project/hydro/issues/2378), [#2385](https://github.com/hydro-project/hydro/issues/2385), [#2386](https://github.com/hydro-project/hydro/issues/2386), [#2387](https://github.com/hydro-project/hydro/issues/2387), [#2390](https://github.com/hydro-project/hydro/issues/2390), [#2394](https://github.com/hydro-project/hydro/issues/2394), [#2400](https://github.com/hydro-project/hydro/issues/2400), [#2405](https://github.com/hydro-project/hydro/issues/2405), [#2406](https://github.com/hydro-project/hydro/issues/2406), [#2409](https://github.com/hydro-project/hydro/issues/2409), [#2412](https://github.com/hydro-project/hydro/issues/2412), [#2413](https://github.com/hydro-project/hydro/issues/2413), [#2414](https://github.com/hydro-project/hydro/issues/2414), [#2420](https://github.com/hydro-project/hydro/issues/2420), [#2422](https://github.com/hydro-project/hydro/issues/2422), [#2423](https://github.com/hydro-project/hydro/issues/2423), [#2425](https://github.com/hydro-project/hydro/issues/2425), [#2426](https://github.com/hydro-project/hydro/issues/2426), [#2429](https://github.com/hydro-project/hydro/issues/2429), [#2430](https://github.com/hydro-project/hydro/issues/2430), [#2431](https://github.com/hydro-project/hydro/issues/2431), [#2432](https://github.com/hydro-project/hydro/issues/2432), [#2433](https://github.com/hydro-project/hydro/issues/2433), [#2435](https://github.com/hydro-project/hydro/issues/2435), [#2439](https://github.com/hydro-project/hydro/issues/2439), [#2440](https://github.com/hydro-project/hydro/issues/2440), [#2441](https://github.com/hydro-project/hydro/issues/2441), [#2442](https://github.com/hydro-project/hydro/issues/2442), [#2443](https://github.com/hydro-project/hydro/issues/2443), [#2446](https://github.com/hydro-project/hydro/issues/2446), [#2447](https://github.com/hydro-project/hydro/issues/2447), [#2452](https://github.com/hydro-project/hydro/issues/2452), [#2453](https://github.com/hydro-project/hydro/issues/2453), [#2457](https://github.com/hydro-project/hydro/issues/2457), [#2462](https://github.com/hydro-project/hydro/issues/2462), [#2465](https://github.com/hydro-project/hydro/issues/2465), [#2466](https://github.com/hydro-project/hydro/issues/2466), [#2468](https://github.com/hydro-project/hydro/issues/2468), [#2469](https://github.com/hydro-project/hydro/issues/2469), [#2470](https://github.com/hydro-project/hydro/issues/2470), [#2471](https://github.com/hydro-project/hydro/issues/2471), [#2473](https://github.com/hydro-project/hydro/issues/2473), [#2474](https://github.com/hydro-project/hydro/issues/2474), [#2479](https://github.com/hydro-project/hydro/issues/2479), [#2481](https://github.com/hydro-project/hydro/issues/2481), [#2482](https://github.com/hydro-project/hydro/issues/2482), [#2485](https://github.com/hydro-project/hydro/issues/2485), [#2488](https://github.com/hydro-project/hydro/issues/2488), [#2492](https://github.com/hydro-project/hydro/issues/2492), [#2493](https://github.com/hydro-project/hydro/issues/2493), [#2495](https://github.com/hydro-project/hydro/issues/2495), [#2496](https://github.com/hydro-project/hydro/issues/2496), [#2498](https://github.com/hydro-project/hydro/issues/2498), [#2499](https://github.com/hydro-project/hydro/issues/2499), [#2506](https://github.com/hydro-project/hydro/issues/2506), [#2507](https://github.com/hydro-project/hydro/issues/2507), [#2508](https://github.com/hydro-project/hydro/issues/2508), [#2511](https://github.com/hydro-project/hydro/issues/2511), [#2513](https://github.com/hydro-project/hydro/issues/2513), [#2514](https://github.com/hydro-project/hydro/issues/2514), [#2515](https://github.com/hydro-project/hydro/issues/2515), [#2517](https://github.com/hydro-project/hydro/issues/2517), [#2523](https://github.com/hydro-project/hydro/issues/2523), [#2525](https://github.com/hydro-project/hydro/issues/2525), [#2526](https://github.com/hydro-project/hydro/issues/2526), [#2530](https://github.com/hydro-project/hydro/issues/2530), [#2531](https://github.com/hydro-project/hydro/issues/2531), [#2532](https://github.com/hydro-project/hydro/issues/2532), [#2538](https://github.com/hydro-project/hydro/issues/2538), [#2541](https://github.com/hydro-project/hydro/issues/2541), [#2542](https://github.com/hydro-project/hydro/issues/2542), [#2546](https://github.com/hydro-project/hydro/issues/2546), [#2549](https://github.com/hydro-project/hydro/issues/2549), [#2550](https://github.com/hydro-project/hydro/issues/2550), [#2557](https://github.com/hydro-project/hydro/issues/2557), [#2559](https://github.com/hydro-project/hydro/issues/2559), [#2560](https://github.com/hydro-project/hydro/issues/2560), [#2562](https://github.com/hydro-project/hydro/issues/2562), [#2564](https://github.com/hydro-project/hydro/issues/2564), [#2565](https://github.com/hydro-project/hydro/issues/2565), [#2568](https://github.com/hydro-project/hydro/issues/2568), [#2570](https://github.com/hydro-project/hydro/issues/2570), [#2577](https://github.com/hydro-project/hydro/issues/2577), [#2578](https://github.com/hydro-project/hydro/issues/2578), [#2581](https://github.com/hydro-project/hydro/issues/2581), [#2582](https://github.com/hydro-project/hydro/issues/2582), [#2583](https://github.com/hydro-project/hydro/issues/2583), [#2593](https://github.com/hydro-project/hydro/issues/2593), [#2595](https://github.com/hydro-project/hydro/issues/2595), [#2597](https://github.com/hydro-project/hydro/issues/2597), [#2599](https://github.com/hydro-project/hydro/issues/2599), [#2600](https://github.com/hydro-project/hydro/issues/2600), [#2607](https://github.com/hydro-project/hydro/issues/2607), [#2609](https://github.com/hydro-project/hydro/issues/2609), [#2610](https://github.com/hydro-project/hydro/issues/2610), [#2611](https://github.com/hydro-project/hydro/issues/2611), [#2612](https://github.com/hydro-project/hydro/issues/2612), [#2613](https://github.com/hydro-project/hydro/issues/2613), [#2614](https://github.com/hydro-project/hydro/issues/2614), [#2617](https://github.com/hydro-project/hydro/issues/2617), [#2618](https://github.com/hydro-project/hydro/issues/2618), [#2619](https://github.com/hydro-project/hydro/issues/2619), [#2622](https://github.com/hydro-project/hydro/issues/2622), [#2623](https://github.com/hydro-project/hydro/issues/2623), [#2624](https://github.com/hydro-project/hydro/issues/2624), [#2628](https://github.com/hydro-project/hydro/issues/2628), [#2632](https://github.com/hydro-project/hydro/issues/2632), [#2636](https://github.com/hydro-project/hydro/issues/2636), [#2640](https://github.com/hydro-project/hydro/issues/2640), [#2641](https://github.com/hydro-project/hydro/issues/2641), [#2643](https://github.com/hydro-project/hydro/issues/2643), [#2644](https://github.com/hydro-project/hydro/issues/2644), [#2645](https://github.com/hydro-project/hydro/issues/2645), [#2647](https://github.com/hydro-project/hydro/issues/2647), [#2648](https://github.com/hydro-project/hydro/issues/2648), [#2654](https://github.com/hydro-project/hydro/issues/2654), [#2655](https://github.com/hydro-project/hydro/issues/2655), [#2668](https://github.com/hydro-project/hydro/issues/2668), [#2669](https://github.com/hydro-project/hydro/issues/2669), [#2670](https://github.com/hydro-project/hydro/issues/2670), [#2686](https://github.com/hydro-project/hydro/issues/2686), [#2687](https://github.com/hydro-project/hydro/issues/2687), [#2689](https://github.com/hydro-project/hydro/issues/2689), [#2692](https://github.com/hydro-project/hydro/issues/2692), [#2693](https://github.com/hydro-project/hydro/issues/2693), [#2695](https://github.com/hydro-project/hydro/issues/2695), [#2698](https://github.com/hydro-project/hydro/issues/2698), [#2699](https://github.com/hydro-project/hydro/issues/2699), [#2701](https://github.com/hydro-project/hydro/issues/2701), [#2702](https://github.com/hydro-project/hydro/issues/2702), [#2703](https://github.com/hydro-project/hydro/issues/2703), [#2707](https://github.com/hydro-project/hydro/issues/2707), [#2709](https://github.com/hydro-project/hydro/issues/2709), [#2710](https://github.com/hydro-project/hydro/issues/2710), [#2711](https://github.com/hydro-project/hydro/issues/2711), [#2715](https://github.com/hydro-project/hydro/issues/2715), [#2723](https://github.com/hydro-project/hydro/issues/2723), [#2724](https://github.com/hydro-project/hydro/issues/2724), [#2729](https://github.com/hydro-project/hydro/issues/2729), [#2731](https://github.com/hydro-project/hydro/issues/2731), [#2732](https://github.com/hydro-project/hydro/issues/2732), [#2733](https://github.com/hydro-project/hydro/issues/2733), [#2736](https://github.com/hydro-project/hydro/issues/2736), [#2740](https://github.com/hydro-project/hydro/issues/2740), [#2742](https://github.com/hydro-project/hydro/issues/2742), [#2744](https://github.com/hydro-project/hydro/issues/2744), [#2750](https://github.com/hydro-project/hydro/issues/2750), [#2752](https://github.com/hydro-project/hydro/issues/2752), [#2753](https://github.com/hydro-project/hydro/issues/2753), [#2755](https://github.com/hydro-project/hydro/issues/2755), [#2757](https://github.com/hydro-project/hydro/issues/2757), [#2758](https://github.com/hydro-project/hydro/issues/2758), [#2759](https://github.com/hydro-project/hydro/issues/2759), [#2760](https://github.com/hydro-project/hydro/issues/2760), [#2766](https://github.com/hydro-project/hydro/issues/2766), [#2778](https://github.com/hydro-project/hydro/issues/2778), [#2779](https://github.com/hydro-project/hydro/issues/2779), [#2782](https://github.com/hydro-project/hydro/issues/2782), [#2795](https://github.com/hydro-project/hydro/issues/2795), [#2807](https://github.com/hydro-project/hydro/issues/2807), [#2808](https://github.com/hydro-project/hydro/issues/2808), [#2819](https://github.com/hydro-project/hydro/issues/2819), [#2820](https://github.com/hydro-project/hydro/issues/2820), [#2821](https://github.com/hydro-project/hydro/issues/2821), [#2823](https://github.com/hydro-project/hydro/issues/2823), [#2824](https://github.com/hydro-project/hydro/issues/2824), [#2825](https://github.com/hydro-project/hydro/issues/2825), [#2826](https://github.com/hydro-project/hydro/issues/2826), [#2832](https://github.com/hydro-project/hydro/issues/2832)
 * **[#2179](https://github.com/hydro-project/hydro/issues/2179)**
    - Add local containerized deployments ([`9e1f9f0`](https://github.com/hydro-project/hydro/commit/9e1f9f08ee4ebce1abe814dddcdad8979fb050e3))
 * **[#2251](https://github.com/hydro-project/hydro/issues/2251)**
    - Enable automatic AWS CloudWatch metric reporting (DFIR, Tokio, cpu/mem/netstat) ([`7e92fec`](https://github.com/hydro-project/hydro/commit/7e92fecadaad532975f96171f19b75e44b9d8012))
 * **[#2297](https://github.com/hydro-project/hydro/issues/2297)**
    - Add round_robin_bincode to Stream<_, Cluster<_>> ([`26659dc`](https://github.com/hydro-project/hydro/commit/26659dc6750f87f4aa9642c0fa80273dbaafd995))
 * **[#2308](https://github.com/hydro-project/hydro/issues/2308)**
    - Add get_many method for outer join on KeyedSingleton ([`cda8c3c`](https://github.com/hydro-project/hydro/commit/cda8c3cfc51a732a75a751ade229da791cfedc39))
 * **[#2323](https://github.com/hydro-project/hydro/issues/2323)**
    - Mark nodes with nondet blocks as NonDeterministic type ([`72afebe`](https://github.com/hydro-project/hydro/commit/72afebe17d1c4431c6322c76dd7a96a829c855e9))
 * **[#2330](https://github.com/hydro-project/hydro/issues/2330)**
    - Add tagless member ids, add docker member id ([`3f65882`](https://github.com/hydro-project/hydro/commit/3f65882e04633cb92a2e6ac52edff81a26b35320))
 * **[#2338](https://github.com/hydro-project/hydro/issues/2338)**
    - Convert pull from Iterator to Stream to support async yielding [ci-bench] ([`ed38dd7`](https://github.com/hydro-project/hydro/commit/ed38dd72aaeec449e35c4324d96ffef55cedf0a4))
 * **[#2340](https://github.com/hydro-project/hydro/issues/2340)**
    - Separate rust crates and hosts to allow the rust crate code to be reused ([`c500b4a`](https://github.com/hydro-project/hydro/commit/c500b4ac550c40808713f9757e612b2921d88c33))
 * **[#2346](https://github.com/hydro-project/hydro/issues/2346)**
    - Remove unused CompileEnv ([`216cc0e`](https://github.com/hydro-project/hydro/commit/216cc0ee14309994c4b706f9c109afa39a942a94))
 * **[#2347](https://github.com/hydro-project/hydro/issues/2347)**
    - Eliminate use of `Persist` node from non-`persist` APIs ([`f717ac9`](https://github.com/hydro-project/hydro/commit/f717ac95f8838f5281a5e617715c156f796d5997))
 * **[#2349](https://github.com/hydro-project/hydro/issues/2349)**
    - Remove `persist` APIs and its IR node ([`f5b0a12`](https://github.com/hydro-project/hydro/commit/f5b0a12aac76778bdebe57629f8c16179be4c2e7))
 * **[#2352](https://github.com/hydro-project/hydro/issues/2352)**
    - Add `across_ticks` API for operations inside a tick that retain memory ([`3d22c9a`](https://github.com/hydro-project/hydro/commit/3d22c9a3d72e2b3b5c8b00d38f6d86bbf4ba6b9f))
 * **[#2360](https://github.com/hydro-project/hydro/issues/2360)**
    - Use `sliced!` in more places ([`54e7b84`](https://github.com/hydro-project/hydro/commit/54e7b84196e2a998f0651dae962aafb5296a9406))
 * **[#2363](https://github.com/hydro-project/hydro/issues/2363)**
    - Work around Windows stack overflow in doctests [ci-full] ([`81e4d2d`](https://github.com/hydro-project/hydro/commit/81e4d2df32e86f4f2ce70af896f7afb5c547b4bd))
 * **[#2372](https://github.com/hydro-project/hydro/issues/2372)**
    - Use `&self` to avoid `RwLock` where possible ([`cb73aea`](https://github.com/hydro-project/hydro/commit/cb73aea75b6c5c5ec25caa121a04e261be290404))
 * **[#2373](https://github.com/hydro-project/hydro/issues/2373)**
    - Add `use::state` syntax for stateful `sliced!` ([`853db69`](https://github.com/hydro-project/hydro/commit/853db69e4487ae9c097fe838f05e9447c736ec98))
 * **[#2378](https://github.com/hydro-project/hydro/issues/2378)**
    - Support atomic yield in `sliced!`, use in Paxos ([`c374bd6`](https://github.com/hydro-project/hydro/commit/c374bd6a1085a8516c174cab441cc92e47573f8a))
 * **[#2385](https://github.com/hydro-project/hydro/issues/2385)**
    - Fix `&self, self_arc: &Arc<Self>` methods, `RustCratePortConfig::merge` ([`721edfb`](https://github.com/hydro-project/hydro/commit/721edfbe74a48f5fd10f12a56898c5a53a5712a2))
 * **[#2386](https://github.com/hydro-project/hydro/issues/2386)**
    - Remove `RwLock` wrapping of `AwsNetwork`, `GcpNetwork` ([`5396e60`](https://github.com/hydro-project/hydro/commit/5396e60d657b45e6fc090ba6c20f0007fa094da0))
 * **[#2387](https://github.com/hydro-project/hydro/issues/2387)**
    - Remove 2 unnecessary clones ([`f61efcc`](https://github.com/hydro-project/hydro/commit/f61efcc6a63fbf850e42ab019a265f663ee2bb22))
 * **[#2390](https://github.com/hydro-project/hydro/issues/2390)**
    - Move deploy_integration from dfir to hydro_lang, rename `mod resource_measurement` to `launch` ([`149e3e7`](https://github.com/hydro-project/hydro/commit/149e3e7af467ae3c4b16bc8122f4993b5164fcc5))
 * **[#2394](https://github.com/hydro-project/hydro/issues/2394)**
    - Port `bench_client` to use sliced!, introduce `Stream::merge_ordered` ([`59f5216`](https://github.com/hydro-project/hydro/commit/59f5216642e3f08eae896ea67cfc5b213ad86e4a))
 * **[#2400](https://github.com/hydro-project/hydro/issues/2400)**
    - Make network channels configurable with a generic `Stream::send` API ([`708e835`](https://github.com/hydro-project/hydro/commit/708e835452958120edce77cd693bd8fb1cb6c48c))
 * **[#2405](https://github.com/hydro-project/hydro/issues/2405)**
    - Unify `fold` API by using Stageleft properties to track commutativity and idempotence ([`101c7c7`](https://github.com/hydro-project/hydro/commit/101c7c70c3381d181241ce7c648e4f70e12f589b))
 * **[#2406](https://github.com/hydro-project/hydro/issues/2406)**
    - Move hydro_deploy tests to hydro_test, add rust-lld back in as musl c linker, fix ci nightly tests, fix snapshots [ci-full] ([`a7a4702`](https://github.com/hydro-project/hydro/commit/a7a470234e163c08a9e6dfd1cc6c9b4372024e22))
 * **[#2409](https://github.com/hydro-project/hydro/issues/2409)**
    - Remove `compile_no_network`, remove interior mutability from `preview_compile` for simplicity ([`5cbf04e`](https://github.com/hydro-project/hydro/commit/5cbf04e241727167b11ababbac35e108c76abc81))
 * **[#2412](https://github.com/hydro-project/hydro/issues/2412)**
    - Unify remaining stream / keyed stream APIs using properties ([`d8ebb19`](https://github.com/hydro-project/hydro/commit/d8ebb19948c65e13276539a3e6b99041407b64e9))
 * **[#2413](https://github.com/hydro-project/hydro/issues/2413)**
    - Create rewritten_ir_builder from BuiltFlow instead of FlowBuilder ([`1a769e1`](https://github.com/hydro-project/hydro/commit/1a769e1c0a5a8bbe7930b8f7224de5c661642147))
 * **[#2414](https://github.com/hydro-project/hydro/issues/2414)**
    - Initial support for top-level bounded live collections ([`3776952`](https://github.com/hydro-project/hydro/commit/37769524360ef7368cd860881c513060bc7220e6))
 * **[#2420](https://github.com/hydro-project/hydro/issues/2420)**
    - Add across_ticks() API to KeyedStream ([`609dad2`](https://github.com/hydro-project/hydro/commit/609dad2a558236b77b3858f59f975ff6a605f526))
 * **[#2422](https://github.com/hydro-project/hydro/issues/2422)**
    - Remove unused buffered_lazy_sink_source ([`d60ebfb`](https://github.com/hydro-project/hydro/commit/d60ebfb6fd5b935beb5fee9b72238a815553b88e))
 * **[#2423](https://github.com/hydro-project/hydro/issues/2423)**
    - Don't print color codes if they are disabled ([`38d25bd`](https://github.com/hydro-project/hydro/commit/38d25bdcc0d68fd813707407e76ac0a302ae1069))
 * **[#2425](https://github.com/hydro-project/hydro/issues/2425)**
    - `viz` use `slotmap` custom key (instead of `usize`) ([`4984d6f`](https://github.com/hydro-project/hydro/commit/4984d6fc0434d6601123b97388fa41807a9840e4))
 * **[#2426](https://github.com/hydro-project/hydro/issues/2426)**
    - Add ecs deployment support [ci-full] ([`c2fc777`](https://github.com/hydro-project/hydro/commit/c2fc7771c1c523e9844c15b5047ef66475e66fea))
 * **[#2429](https://github.com/hydro-project/hydro/issues/2429)**
    - Detect workspace `Cargo.lock` changes to trigger trybuild setup ([`0f2e776`](https://github.com/hydro-project/hydro/commit/0f2e7768f2677752258bc4edf64992368e56b97c))
 * **[#2430](https://github.com/hydro-project/hydro/issues/2430)**
    - Fix local docker race conditions around membership stream and multiple containers starting up at the same time ([`25e69c8`](https://github.com/hydro-project/hydro/commit/25e69c85365e54578aa8830d895267ed9ff4f114))
 * **[#2431](https://github.com/hydro-project/hydro/issues/2431)**
    - [re]move mostly-unused `raw_port()` APIs ([`4f77122`](https://github.com/hydro-project/hydro/commit/4f77122f3988c6b1555c2de7f0cf857d4e9b257c))
 * **[#2432](https://github.com/hydro-project/hydro/issues/2432)**
    - Ensure `source_iter` always drains on first tick ([`22d10a2`](https://github.com/hydro-project/hydro/commit/22d10a22aa3c55eea0ae41c96be464a9f306cb43))
 * **[#2433](https://github.com/hydro-project/hydro/issues/2433)**
    - Use `ExternalPortId` instead of `usize` ([`7b468df`](https://github.com/hydro-project/hydro/commit/7b468dfadc93e417ac632f2ccbfe4a383f9f00aa))
 * **[#2435](https://github.com/hydro-project/hydro/issues/2435)**
    - Generalize bench_client ([`2f38e7e`](https://github.com/hydro-project/hydro/commit/2f38e7eddf0363f818aa4b204c7bf549c317428a))
 * **[#2439](https://github.com/hydro-project/hydro/issues/2439)**
    - Cleanup port handling with newtypes, trait changes ([`5132ba7`](https://github.com/hydro-project/hydro/commit/5132ba75f14a4ed72d48b12077616f73031e761e))
 * **[#2440](https://github.com/hydro-project/hydro/issues/2440)**
    - Unify `forward_ref` implementation between `Location` and `Tick` ([`265d4ae`](https://github.com/hydro-project/hydro/commit/265d4ae23cf365be4b371ee1a7e91e70c34d155b))
 * **[#2441](https://github.com/hydro-project/hydro/issues/2441)**
    - Update Trybuild fork to inherit workspace profiles ([`74f1b93`](https://github.com/hydro-project/hydro/commit/74f1b936265c4fdd436073b6dec260a74739627e))
 * **[#2442](https://github.com/hydro-project/hydro/issues/2442)**
    - Convert `HydroNode::emit_core` to use `HydroNode::transform_bottom_up` ([`6c82e3a`](https://github.com/hydro-project/hydro/commit/6c82e3a6b6ed39096a50381bd0d7fd2d01f2c43b))
 * **[#2443](https://github.com/hydro-project/hydro/issues/2443)**
    - Re-enable tests that previously had stack overflow on Windows [ci-full] ([`f6c8bdf`](https://github.com/hydro-project/hydro/commit/f6c8bdfcbd563a6f3b94b7b51ff2a272b2c93637))
 * **[#2446](https://github.com/hydro-project/hydro/issues/2446)**
    - Drop unnecessary dependencies ([`2d58215`](https://github.com/hydro-project/hydro/commit/2d58215f99353e5b00066d66320fc54718e039c3))
 * **[#2447](https://github.com/hydro-project/hydro/issues/2447)**
    - Extract profile folding into a feature ([`59d90ed`](https://github.com/hydro-project/hydro/commit/59d90ed7ea9830935b049cd848a0bc14ebd9afc5))
 * **[#2452](https://github.com/hydro-project/hydro/issues/2452)**
    - Mutate Stageleft `gen_staged` in-place to avoid AST copies during pretty-print ([`e6bbad8`](https://github.com/hydro-project/hydro/commit/e6bbad80fe63b44c717f1147203963e4a1629ce9))
 * **[#2453](https://github.com/hydro-project/hydro/issues/2453)**
    - Bump Stageleft to reduce Trybuild prep latency ([`b9dd20b`](https://github.com/hydro-project/hydro/commit/b9dd20b72a6dbea0ac200ea5f1c8ee1c1e9990a5))
 * **[#2457](https://github.com/hydro-project/hydro/issues/2457)**
    - Make backtrace resolution lazy to reduce graph compilation overhead ([`631ff49`](https://github.com/hydro-project/hydro/commit/631ff49939b27f96f6b127733ea23b0ed595251c))
 * **[#2462](https://github.com/hydro-project/hydro/issues/2462)**
    - Use a dylib helper crate to avoid global RUSTFLAGS for trybuild [ci-full] ([`7c1b423`](https://github.com/hydro-project/hydro/commit/7c1b423d1feb11ca81fc0d54d1f3e3e8efb063f7))
 * **[#2465](https://github.com/hydro-project/hydro/issues/2465)**
    - Convert locations (Cluster/Process/External) to use slotmaps, new key type ([`1b947b3`](https://github.com/hydro-project/hydro/commit/1b947b3dab7a93fcb83b732eca968c3f2b049301))
 * **[#2466](https://github.com/hydro-project/hydro/issues/2466)**
    - Update nightly snapshots ([`d17040d`](https://github.com/hydro-project/hydro/commit/d17040d7caae6d704d058e5d94c3adcf473bd310))
 * **[#2468](https://github.com/hydro-project/hydro/issues/2468)**
    - Remove trivial locations from `Deploy` trait ([`08b7888`](https://github.com/hydro-project/hydro/commit/08b7888315a49f0266b69a51e84e9c364f4a6dfa))
 * **[#2469](https://github.com/hydro-project/hydro/issues/2469)**
    - Remove unused `HydroMeta::subgraph_id` location field ([`62e689e`](https://github.com/hydro-project/hydro/commit/62e689e21c746b04b8c612370f0806494bc28f55))
 * **[#2470](https://github.com/hydro-project/hydro/issues/2470)**
    - Remove unused `Deploy::GraphId` type, `CompiledFlow` param (always `()`) ([`c1a03df`](https://github.com/hydro-project/hydro/commit/c1a03dfe61ea5ecaeb1b6766fdcdeb2f9ae02d38))
 * **[#2471](https://github.com/hydro-project/hydro/issues/2471)**
    - Share target dir between main and trybuild ([`44cc4e0`](https://github.com/hydro-project/hydro/commit/44cc4e0a02e0727b60f6725486ebb3a3a287a141))
 * **[#2473](https://github.com/hydro-project/hydro/issues/2473)**
    - Remove unused `DeployNode::id` location field ([`59404f1`](https://github.com/hydro-project/hydro/commit/59404f14a097fba8029a05c5f369c755e6fbabc0))
 * **[#2474](https://github.com/hydro-project/hydro/issues/2474)**
    - Statically link projected DFIR for fuzzing ([`530cfbd`](https://github.com/hydro-project/hydro/commit/530cfbdcdd5b405813320cc436d5d00d818081e2))
 * **[#2479](https://github.com/hydro-project/hydro/issues/2479)**
    - Add `.name` to configure channel names and prepare for multiversioning ([`418bf23`](https://github.com/hydro-project/hydro/commit/418bf232dc5b172ef1d9e518df703cac86a1b872))
 * **[#2481](https://github.com/hydro-project/hydro/issues/2481)**
    - Set up skeleton for registering expressions with proof providers ([`098621e`](https://github.com/hydro-project/hydro/commit/098621ef4d5b51101fd35a89dc7b0934c0e2af53))
 * **[#2482](https://github.com/hydro-project/hydro/issues/2482)**
    - Disable `aws-sdk-*` default features to avoid [re-]compiling `ring` ([`5087df6`](https://github.com/hydro-project/hydro/commit/5087df62b2cb00e7bb965e2ba8348cbb480f049b))
 * **[#2485](https://github.com/hydro-project/hydro/issues/2485)**
    - Sliced atomic keyed stream ([`7239f1d`](https://github.com/hydro-project/hydro/commit/7239f1d4ba7a40b06458cccc77ebd2aee8f418d5))
 * **[#2488](https://github.com/hydro-project/hydro/issues/2488)**
    - Stageleft cleanup, remove a `pub`, fix #2477 ([`adeb487`](https://github.com/hydro-project/hydro/commit/adeb487b9e3ee22c5fe59675450a1c4388425223))
 * **[#2492](https://github.com/hydro-project/hydro/issues/2492)**
    - Join consistent naming ([`3016764`](https://github.com/hydro-project/hydro/commit/30167649b29b1c199a14daabc796950d1a588297))
 * **[#2493](https://github.com/hydro-project/hydro/issues/2493)**
    - Cleanup str cloning, rename `name_hint` ->  `bin_name_prefix`, fix #2491 ([`e4d1846`](https://github.com/hydro-project/hydro/commit/e4d184636e546f237238782d2c6cd8ebfb0124b0))
 * **[#2495](https://github.com/hydro-project/hydro/issues/2495)**
    - Add sidecar API ([`60c4503`](https://github.com/hydro-project/hydro/commit/60c45036a7f5923bfa52e6804b2598d64d980957))
 * **[#2496](https://github.com/hydro-project/hydro/issues/2496)**
    - Remove `maximize-build-space` action ([`c1136c5`](https://github.com/hydro-project/hydro/commit/c1136c57a0fcb1611713f42df2027210ca14326b))
 * **[#2498](https://github.com/hydro-project/hydro/issues/2498)**
    - Remove unused `launch!` macro ([`7dc2686`](https://github.com/hydro-project/hydro/commit/7dc2686c4a121c9137bb258257c17f04192fefe9))
 * **[#2499](https://github.com/hydro-project/hydro/issues/2499)**
    - Add bidi support for docker containers ([`97d32af`](https://github.com/hydro-project/hydro/commit/97d32af9c7cbd15882a9b4103baa9bb29491c2ed))
 * **[#2506](https://github.com/hydro-project/hydro/issues/2506)**
    - Remove RewriteIrFlowBuilder ([`4819570`](https://github.com/hydro-project/hydro/commit/481957007e984817b38a3beeb32ef34653dfa359))
 * **[#2507](https://github.com/hydro-project/hydro/issues/2507)**
    - Re-add type-erased deploy methods, `with_(process|cluster)_erased`, unstable ([`376011d`](https://github.com/hydro-project/hydro/commit/376011d789c98aa5f736ef3357ce149336dfadd4))
 * **[#2508](https://github.com/hydro-project/hydro/issues/2508)**
    - Introduce `Weaker{Ordering/Retries}Than` to simplify stream weakening ([`0b31dbb`](https://github.com/hydro-project/hydro/commit/0b31dbbb079f4c4a3dd6445a4ac92af98aaab6f9))
 * **[#2511](https://github.com/hydro-project/hydro/issues/2511)**
    - Flag non-determinstic hashmap iterators, fix hydro_lang codegen nondeterminism fix #2464 ([`c16e13a`](https://github.com/hydro-project/hydro/commit/c16e13a8bdae3b099d498f9b7f1f43872cfdc939))
 * **[#2513](https://github.com/hydro-project/hydro/issues/2513)**
    - Support top-level `assume_ordering` in the simulator ([`88f92fd`](https://github.com/hydro-project/hydro/commit/88f92fdb5a7a4b9a212b8115a88c06bc77372918))
 * **[#2514](https://github.com/hydro-project/hydro/issues/2514)**
    - Update nightly snapshots ([`63e1e1e`](https://github.com/hydro-project/hydro/commit/63e1e1ec76dbebf78b484617c4caa29e20b315b0))
 * **[#2515](https://github.com/hydro-project/hydro/issues/2515)**
    - Update ecs deployment to emit a hydro manifest that can be used by cdk to deploy to ecs. ([`16fdf7a`](https://github.com/hydro-project/hydro/commit/16fdf7ae9b7aad0d563a194433d981492e220619))
 * **[#2517](https://github.com/hydro-project/hydro/issues/2517)**
    - Allow additional crates to be downloaded for the trybuild ([`c9016c9`](https://github.com/hydro-project/hydro/commit/c9016c90937354abe6dd28558cd52e1e37a6389d))
 * **[#2523](https://github.com/hydro-project/hydro/issues/2523)**
    - Add support for top-level `KeyedStream::assume_ordering` ([`39913ea`](https://github.com/hydro-project/hydro/commit/39913ea1ec7f3485d988eca11eab159e32f3d350))
 * **[#2525](https://github.com/hydro-project/hydro/issues/2525)**
    - Update pinned rust to 1.92, add lints/fixes for redundant cloning, string handling ([`efaa8f6`](https://github.com/hydro-project/hydro/commit/efaa8f61c124c4b3c691b92a58df1686751cf45c))
 * **[#2526](https://github.com/hydro-project/hydro/issues/2526)**
    - Support `assume_ordering` in atomic locations and block top-level bounded ([`3742f68`](https://github.com/hydro-project/hydro/commit/3742f68e6a82cd1100d7cbc97ba425f6a6b8ee81))
 * **[#2530](https://github.com/hydro-project/hydro/issues/2530)**
    - Remove assumption that `use` always has two parameters ([`6ead0cd`](https://github.com/hydro-project/hydro/commit/6ead0cd2d1d89c393b0e5add7ceae5081c302077))
 * **[#2531](https://github.com/hydro-project/hydro/issues/2531)**
    - Improve quality of error spans in `sliced!` macro ([`1866677`](https://github.com/hydro-project/hydro/commit/1866677da0a5b71e48d7b1cdf9442ee66d0f1e23))
 * **[#2532](https://github.com/hydro-project/hydro/issues/2532)**
    - Jepsen / Maelstrom backend for Hydro ([`43d41a3`](https://github.com/hydro-project/hydro/commit/43d41a3c69f02e76943df968c2bddcb872928193))
 * **[#2538](https://github.com/hydro-project/hydro/issues/2538)**
    - Docs for the `Location` trait ([`c515cce`](https://github.com/hydro-project/hydro/commit/c515ccef8b40054294558b1cb00ddc3d1416fc08))
 * **[#2541](https://github.com/hydro-project/hydro/issues/2541)**
    - Fix & test sim DFIR codegen; DFIR use `Result` to force error handling ([`024cfd6`](https://github.com/hydro-project/hydro/commit/024cfd693b884f51b13dee5a0c51b1a2ce4e0a27))
 * **[#2542](https://github.com/hydro-project/hydro/issues/2542)**
    - Place some unused APIs back behind feature gates ([`2a0c9b6`](https://github.com/hydro-project/hydro/commit/2a0c9b657f314ee6650785894105ff9af9d2917d))
 * **[#2546](https://github.com/hydro-project/hydro/issues/2546)**
    - Update nightly snapshots ([`4b1bd5a`](https://github.com/hydro-project/hydro/commit/4b1bd5a0e62556882667b5914605f009fbddc81a))
 * **[#2549](https://github.com/hydro-project/hydro/issues/2549)**
    - Add `TCP.lossy()` fault tolerance and fault-tolerant broadcast challenge ([`6a3ae3d`](https://github.com/hydro-project/hydro/commit/6a3ae3da98762b07e4d2a2ad6911cef6b6443df7))
 * **[#2550](https://github.com/hydro-project/hydro/issues/2550)**
    - Require explicit failure policy for TCP channels ([`83a1221`](https://github.com/hydro-project/hydro/commit/83a1221e04be1aad10679ae41ae041a247db44bb))
 * **[#2557](https://github.com/hydro-project/hydro/issues/2557)**
    - Preliminary support for embedding Hydro programs in other Rust code ([`bc5fc33`](https://github.com/hydro-project/hydro/commit/bc5fc3311c5b4ba7be7277e48d0a197707ce3ff1))
 * **[#2559](https://github.com/hydro-project/hydro/issues/2559)**
    - Support in-memory inputs for embedded Hydro programs ([`e764772`](https://github.com/hydro-project/hydro/commit/e764772603d3516d6e8237b8c02bdec721205ef6))
 * **[#2560](https://github.com/hydro-project/hydro/issues/2560)**
    - Update nightly snapshots ([`c6a22b8`](https://github.com/hydro-project/hydro/commit/c6a22b8ba67ebc6b9caebf3ab79cd07f12633496))
 * **[#2562](https://github.com/hydro-project/hydro/issues/2562)**
    - Have `_counter` take in a single (now-combined) prefix arg ([`6738e48`](https://github.com/hydro-project/hydro/commit/6738e4821acb6deac212099c2f0cb948eb6caaeb))
 * **[#2564](https://github.com/hydro-project/hydro/issues/2564)**
    - Fixup! fix(hydro_lang)!: fix performance via proper `TaglessMemberId` variant feature-gating ([`87e0807`](https://github.com/hydro-project/hydro/commit/87e0807a45286ee4159861059eecd0622cd3e8e8))
    - Fix performance via proper `TaglessMemberId` variant feature-gating ([`589f1c9`](https://github.com/hydro-project/hydro/commit/589f1c979094b089ca41b050c2902551d166658d))
 * **[#2565](https://github.com/hydro-project/hydro/issues/2565)**
    - Convert Singleton<Option<T>> to Optional<T> ([`4af85cb`](https://github.com/hydro-project/hydro/commit/4af85cbd179974bd668ed04f3c152c8bb2e64182))
 * **[#2568](https://github.com/hydro-project/hydro/issues/2568)**
    - Implement support for embedded outputs with callbacks ([`07caa28`](https://github.com/hydro-project/hydro/commit/07caa28acbc0f235207d91bda54f4f58203273e0))
 * **[#2570](https://github.com/hydro-project/hydro/issues/2570)**
    - Add `KeyedStream::{enumerate, sort, unique}` ([`59de8b7`](https://github.com/hydro-project/hydro/commit/59de8b731832d5d351f21ae2dbf98fd0533f142b))
 * **[#2577](https://github.com/hydro-project/hydro/issues/2577)**
    - Implement o2o networking in embedded mode ([`4efc69b`](https://github.com/hydro-project/hydro/commit/4efc69b547f081d568466cbb1fa857d02e1878c6))
 * **[#2578](https://github.com/hydro-project/hydro/issues/2578)**
    - Implement support for clusters and cluster networking in embedded mode ([`4d628dc`](https://github.com/hydro-project/hydro/commit/4d628dc323c14a8ca08cc68ef782da515dc64150))
 * **[#2581](https://github.com/hydro-project/hydro/issues/2581)**
    - Use newtype counters for `CycleId`, `ClockId` ([`077ff8a`](https://github.com/hydro-project/hydro/commit/077ff8a25ea960e9dd8fd935344686e5f6c0f470))
 * **[#2582](https://github.com/hydro-project/hydro/issues/2582)**
    - Cleanup `ForwardHandle` privacy ([`d56b580`](https://github.com/hydro-project/hydro/commit/d56b580451970806a3b0e84bd71b34268398c613))
 * **[#2583](https://github.com/hydro-project/hydro/issues/2583)**
    - Fixup! refactor(hydro_lang)!: Use `CycleId` in IR instead of `Ident`-IDs ([`08e4ad7`](https://github.com/hydro-project/hydro/commit/08e4ad73c1c74a3b7398c3b8fddd92bb865c025a))
    - Use `CycleId` in IR instead of `Ident`-IDs ([`91866fc`](https://github.com/hydro-project/hydro/commit/91866fc17d44ea936d8450fb8a8b4ab346fc2623))
 * **[#2593](https://github.com/hydro-project/hydro/issues/2593)**
    - Fix diagnostics path rewriting in Hydro Deploy ([`bf569f4`](https://github.com/hydro-project/hydro/commit/bf569f43dcc71e11a8a520709374ca2271775556))
 * **[#2595](https://github.com/hydro-project/hydro/issues/2595)**
    - Use marker trait to improve error messages for wrong ordering / retries ([`16269f1`](https://github.com/hydro-project/hydro/commit/16269f19d1e96232cefd6342817b98349f62c54f))
 * **[#2597](https://github.com/hydro-project/hydro/issues/2597)**
    - Correctly handle non-debug types in `__maybe_debug__` ([`676ca45`](https://github.com/hydro-project/hydro/commit/676ca45da47281aca0d0a19155601b6edc81acec))
 * **[#2599](https://github.com/hydro-project/hydro/issues/2599)**
    - Add `IsBounded` marker trait and migrate most live collection APIs to marker trait approach ([`acbefcd`](https://github.com/hydro-project/hydro/commit/acbefcdd44ea050507b06cba363e98725bce14e8))
 * **[#2600](https://github.com/hydro-project/hydro/issues/2600)**
    - Update nightly snapshots ([`9716e5b`](https://github.com/hydro-project/hydro/commit/9716e5bdd3a52d09d060fac1cdaaee98b1afc520))
 * **[#2607](https://github.com/hydro-project/hydro/issues/2607)**
    - Add `manual_proof!` macro that accepts doc comments ([`08cb0ed`](https://github.com/hydro-project/hydro/commit/08cb0ed12b213bc9a6ef449095cb89a69adc84ab))
 * **[#2609](https://github.com/hydro-project/hydro/issues/2609)**
    - Add docs on network configuration ([`a65f665`](https://github.com/hydro-project/hydro/commit/a65f6655cc51f75dab5f5a5c00d041cee0a5fab2))
 * **[#2610](https://github.com/hydro-project/hydro/issues/2610)**
    - Fix compilation bug in `Singleton::zip`, require boundedness ([`f00cd91`](https://github.com/hydro-project/hydro/commit/f00cd91c3eed0446c05004c7d350c53e6e1e21bb))
 * **[#2611](https://github.com/hydro-project/hydro/issues/2611)**
    - Update nightly snapshots ([`afa6e18`](https://github.com/hydro-project/hydro/commit/afa6e18a8c382f9ee9c7cda27544222eba492b92))
 * **[#2612](https://github.com/hydro-project/hydro/issues/2612)**
    - Improve quality of error messages for ordered / retries ([`6027dfa`](https://github.com/hydro-project/hydro/commit/6027dfad9c3e59fc50e5dc9acf296e8ecd1cf8a5))
 * **[#2613](https://github.com/hydro-project/hydro/issues/2613)**
    - Update nightly snapshots ([`a363dd3`](https://github.com/hydro-project/hydro/commit/a363dd38cdde318de33fd83e9387547275cf87a6))
 * **[#2614](https://github.com/hydro-project/hydro/issues/2614)**
    - Allow passing runtime environment variables and use for benchmarking ([`fad81f0`](https://github.com/hydro-project/hydro/commit/fad81f0f79bac3d7524165df515fd746af148bfb))
 * **[#2617](https://github.com/hydro-project/hydro/issues/2617)**
    - KeyedStream and KeyedSingleton get() supports Optional ([`bff2e92`](https://github.com/hydro-project/hydro/commit/bff2e9267d815ea48c14befd46a13dc0078d2e18))
 * **[#2618](https://github.com/hydro-project/hydro/issues/2618)**
    - Use custom `dfir_pipes::Pull` trait [ci-bench] ([`a662ff3`](https://github.com/hydro-project/hydro/commit/a662ff38541e58bec801644b81b2bfc505779e7b))
 * **[#2619](https://github.com/hydro-project/hydro/issues/2619)**
    - Refactor filter_is_some/none to filter_is_true/false, added boolean support operators (equals, and, or) ([`e91d158`](https://github.com/hydro-project/hydro/commit/e91d1584f29d04cf4778c911127f80bb53059ff8))
 * **[#2622](https://github.com/hydro-project/hydro/issues/2622)**
    - Add missing docs for remaining location modules ([`cbbf6b6`](https://github.com/hydro-project/hydro/commit/cbbf6b69849d4f13dca2f528b0eb7859ad2f1d5b))
 * **[#2623](https://github.com/hydro-project/hydro/issues/2623)**
    - Leading colons to workaround rustfmt change ([`1c8f853`](https://github.com/hydro-project/hydro/commit/1c8f85366c592b2768df65ba1ee2e98d2c06d496))
 * **[#2624](https://github.com/hydro-project/hydro/issues/2624)**
    - Add named channels to docker/ecs ([`d5e523c`](https://github.com/hydro-project/hydro/commit/d5e523caacfc0b537218e69d83d406bfc2c58b32))
 * **[#2628](https://github.com/hydro-project/hydro/issues/2628)**
    - Implement support for `use::state` with a `source_iter` input ([`9941c0d`](https://github.com/hydro-project/hydro/commit/9941c0ddbd5fb251cae0ac97e204a8ba3d4d9606))
 * **[#2632](https://github.com/hydro-project/hydro/issues/2632)**
    - Reduce keyed watermark no longer deletes items equal to the watermark ([`4b6f21e`](https://github.com/hydro-project/hydro/commit/4b6f21e11b43b31f51befd5bec7e7c532ff290bb))
 * **[#2636](https://github.com/hydro-project/hydro/issues/2636)**
    - Add `.partition()` operator for splitting streams without cloning ([`05f777d`](https://github.com/hydro-project/hydro/commit/05f777d36e77223647ccf7d9ec6654ed622b081a))
 * **[#2640](https://github.com/hydro-project/hydro/issues/2640)**
    - Bump `slotmap` minimum version to `1.1.0` ([`45bf796`](https://github.com/hydro-project/hydro/commit/45bf796c34c5f3a7d9b05ad9b80ca3d3d59d85a2))
 * **[#2641](https://github.com/hydro-project/hydro/issues/2641)**
    - Pin cores ([`355c392`](https://github.com/hydro-project/hydro/commit/355c392452b25cdf103841ac7699cff6b11f7e12))
 * **[#2643](https://github.com/hydro-project/hydro/issues/2643)**
    - Sliced supports up to 12 inputs and outputs ([`a57e73f`](https://github.com/hydro-project/hydro/commit/a57e73fc649a73fba42ba51d551705f01c09dfe7))
 * **[#2644](https://github.com/hydro-project/hydro/issues/2644)**
    - Use custom `dfir_pipes::Push` trait instead of `Sink` [ci-bench] ([`3e6e26c`](https://github.com/hydro-project/hydro/commit/3e6e26c4cc87d6f7857591b10876074cba97caff))
 * **[#2645](https://github.com/hydro-project/hydro/issues/2645)**
    - Unwrap_or_default for optionals ([`292743d`](https://github.com/hydro-project/hydro/commit/292743d6ba6e35ec0446b35098402df0d29a5fe6))
 * **[#2647](https://github.com/hydro-project/hydro/issues/2647)**
    - Add `lossy_delayed_forever()` fault-tolerance mode ([`05c8849`](https://github.com/hydro-project/hydro/commit/05c8849747ac45e80e20a8a9038549e7aaf54560))
 * **[#2648](https://github.com/hydro-project/hydro/issues/2648)**
    - Connect any dropped live collections to an implicit Null sink ([`9883137`](https://github.com/hydro-project/hydro/commit/988313771dc16147e2a94207b87d08a937290b5f))
 * **[#2654](https://github.com/hydro-project/hydro/issues/2654)**
    - Add generator method to `Stream`, mirroring `KeyedStream::generator` ([`8600c2e`](https://github.com/hydro-project/hydro/commit/8600c2e37203447da91fe220760ff20c5fed90e9))
 * **[#2655](https://github.com/hydro-project/hydro/issues/2655)**
    - Add embedded singleton input support ([`6b3a071`](https://github.com/hydro-project/hydro/commit/6b3a071020a12df1aa77027ec9bcf3821a7bc853))
 * **[#2668](https://github.com/hydro-project/hydro/issues/2668)**
    - Update pinned Rust stable version from 1.92.0 to 1.93.1 ([`5bccb09`](https://github.com/hydro-project/hydro/commit/5bccb09b69199639d3265dbbe90a96e02bad7f1d))
 * **[#2669](https://github.com/hydro-project/hydro/issues/2669)**
    - Rename `interleave` to `merge_unordered` for symmetry with `merge_ordered` ([`7fddc97`](https://github.com/hydro-project/hydro/commit/7fddc970b30538f2373007fab080d35444178fa5))
 * **[#2670](https://github.com/hydro-project/hydro/issues/2670)**
    - Add explanatory messages to empty todo!() in IR compiler and simulator ([`62afd62`](https://github.com/hydro-project/hydro/commit/62afd62b1eb90d26bb4d13a4e2bcb290db43b9a0))
 * **[#2686](https://github.com/hydro-project/hydro/issues/2686)**
    - Resolve_future[s]_blocking for streams, singleton ([`128e85a`](https://github.com/hydro-project/hydro/commit/128e85a7b6980f76575ad0e7306f34e7de0076c6))
 * **[#2687](https://github.com/hydro-project/hydro/issues/2687)**
    - Remove singleton T: Clone bound on top-level locations, fix #2679 ([`9891a93`](https://github.com/hydro-project/hydro/commit/9891a9373ff9de46dcf97b93a898c88e9ecc87f3))
 * **[#2689](https://github.com/hydro-project/hydro/issues/2689)**
    - Update nightly snapshots ([`cb06e6f`](https://github.com/hydro-project/hydro/commit/cb06e6f2032d698afc66db30e0cd3be8607ddd15))
 * **[#2692](https://github.com/hydro-project/hydro/issues/2692)**
    - Refactor atomic() to generate tick IDs internally with union-find unification ([`0a8ae17`](https://github.com/hydro-project/hydro/commit/0a8ae174c0752eca16e13ca5ac9d40d4ae3ebd37))
 * **[#2693](https://github.com/hydro-project/hydro/issues/2693)**
    - Add flatten_stream, flat_map_stream to Stream ([`354ede5`](https://github.com/hydro-project/hydro/commit/354ede54dc007131fe7adbb355017019cd39b13a))
 * **[#2695](https://github.com/hydro-project/hydro/issues/2695)**
    - Singleton/optional flatten operators require `B: IsBounded`, fix #2694 ([`2a45e64`](https://github.com/hydro-project/hydro/commit/2a45e64a9067e6df3c039025772a61b800b7845f))
 * **[#2698](https://github.com/hydro-project/hydro/issues/2698)**
    - Sanitize `{` and `}` in crate name prefix ([`057783a`](https://github.com/hydro-project/hydro/commit/057783a8f89b3af0d8554cb4c9eaf00ed18a0065))
 * **[#2699](https://github.com/hydro-project/hydro/issues/2699)**
    - Is_empty to check if a stream has elements ([`7a0e709`](https://github.com/hydro-project/hydro/commit/7a0e7095a862465fb23989ece3da7b918acc29ab))
 * **[#2701](https://github.com/hydro-project/hydro/issues/2701)**
    - Add `singleton_future` convenience method ([`fbcd09c`](https://github.com/hydro-project/hydro/commit/fbcd09c3018dbd7b9b52b51317271d7488ed8fea))
 * **[#2702](https://github.com/hydro-project/hydro/issues/2702)**
    - Improve TrybuildHost::features API ergonomics ([`fb2becf`](https://github.com/hydro-project/hydro/commit/fb2becff83586ea1db6ebbcca79d8f73dcbed01f))
 * **[#2703](https://github.com/hydro-project/hydro/issues/2703)**
    - Add m2e/e2m external inputs for clusters in the simulator ([`78e0afa`](https://github.com/hydro-project/hydro/commit/78e0afac3e02cfd3ba7c549bdcb4d4eac1a6026a))
 * **[#2707](https://github.com/hydro-project/hydro/issues/2707)**
    - Enable `manual_is_variant_and` and `manual_let_else` clippy lints ([`2b32044`](https://github.com/hydro-project/hydro/commit/2b32044d28b047d8f34c62a8cff6adfc52f21110))
 * **[#2709](https://github.com/hydro-project/hydro/issues/2709)**
    - Fix use of diallowed unordered iteration in sim builder ([`c823479`](https://github.com/hydro-project/hydro/commit/c823479960a3823d6c2427faa949257f4ffdd152))
 * **[#2710](https://github.com/hydro-project/hydro/issues/2710)**
    - Add scan_async_blocking operator to hydro_lang and dfir ([`eacc3cd`](https://github.com/hydro-project/hydro/commit/eacc3cd85a0a9bdd70c9f6b9da4da312059f3c5a))
 * **[#2711](https://github.com/hydro-project/hydro/issues/2711)**
    - Add limit() for Stream and KeyedStream ([`caf0d2c`](https://github.com/hydro-project/hydro/commit/caf0d2c9755eda76c46dae2496946777968d3e20))
 * **[#2715](https://github.com/hydro-project/hydro/issues/2715)**
    - Add support for monotone singletons with a `fold` property ([`4df9096`](https://github.com/hydro-project/hydro/commit/4df9096626b1cd01905c2c4658125d70eb2e4c5f))
 * **[#2723](https://github.com/hydro-project/hydro/issues/2723)**
    - Allow getting the next ClockId and CycleId since those are crate private ([`8f29a22`](https://github.com/hydro-project/hydro/commit/8f29a22d3b57ab5371ab56f421b279f5fe0da34f))
 * **[#2724](https://github.com/hydro-project/hydro/issues/2724)**
    - Update nightly snapshots ([`8246ab8`](https://github.com/hydro-project/hydro/commit/8246ab845905f888a8d70c6c19bfb79689b10c7e))
 * **[#2729](https://github.com/hydro-project/hydro/issues/2729)**
    - Early exit for first() and is_empty() ([`b1b2c8f`](https://github.com/hydro-project/hydro/commit/b1b2c8f80d9033daf6019004fe9ba7f946396eba))
 * **[#2731](https://github.com/hydro-project/hydro/issues/2731)**
    - Update tests to avoid synchronous cycles, #2080 ([`4f76b1f`](https://github.com/hydro-project/hydro/commit/4f76b1f1fee7faa60c873f72afc4e43ef3b8d3b6))
 * **[#2732](https://github.com/hydro-project/hydro/issues/2732)**
    - Switch all codegen paths to inline DFIR execution [ci-bench] ([`de0fa97`](https://github.com/hydro-project/hydro/commit/de0fa9767573e2968b7e7f6e271bf371c3207775))
 * **[#2733](https://github.com/hydro-project/hydro/issues/2733)**
    - Update nightly snapshots ([`6803fcd`](https://github.com/hydro-project/hydro/commit/6803fcdf57cf06ca9f76fda4bd98f194d38deecc))
 * **[#2736](https://github.com/hydro-project/hydro/issues/2736)**
    - Make new_node_metadata public ([`bf0dc2d`](https://github.com/hydro-project/hydro/commit/bf0dc2d8d9675e0a31a3f2e8e148bdb6d02f9686))
 * **[#2740](https://github.com/hydro-project/hydro/issues/2740)**
    - Port runtime metrics to inline codegen path ([`2633db8`](https://github.com/hydro-project/hydro/commit/2633db89ef2768285219a0e5af18f5a971a9aa1c))
 * **[#2742](https://github.com/hydro-project/hydro/issues/2742)**
    - Add order_preserving property to MapFuncAlgebra for monotonicity propagation ([`91e02ee`](https://github.com/hydro-project/hydro/commit/91e02ee15fede232489f992a48419b5f170b329d))
 * **[#2744](https://github.com/hydro-project/hydro/issues/2744)**
    - Change hex_literal_case to Upper in rustfmt.toml ([`f04e363`](https://github.com/hydro-project/hydro/commit/f04e3630eaa28bc0ffbd752f148586b389ce4ac3))
 * **[#2750](https://github.com/hydro-project/hydro/issues/2750)**
    - Demux from cluster directly goes to KeyedStream ([`ab7840c`](https://github.com/hydro-project/hydro/commit/ab7840cf72e50586de34c54696e1e1ca91ac2e77))
 * **[#2752](https://github.com/hydro-project/hydro/issues/2752)**
    - Refactor keyed stream / singleton joins to allow unbounded source ([`57a8a57`](https://github.com/hydro-project/hydro/commit/57a8a570187c0afe5204d8b71e8f29473aa915ba))
 * **[#2753](https://github.com/hydro-project/hydro/issues/2753)**
    - Add entries_partially_ordered to KeyedStream ([`fcb7513`](https://github.com/hydro-project/hydro/commit/fcb7513764312521d19ec69b087ce86344e380cb))
 * **[#2755](https://github.com/hydro-project/hydro/issues/2755)**
    - Fix simulator hole for Stream::merge_ordered ([`a675af6`](https://github.com/hydro-project/hydro/commit/a675af6236dbc0d9bac22cb08b787d5085f299b9))
 * **[#2757](https://github.com/hydro-project/hydro/issues/2757)**
    - Pass through orderedness in KeyedStream::get ([`a23b09b`](https://github.com/hydro-project/hydro/commit/a23b09b26c0c501254d82eb609a942cd1b21ab73))
 * **[#2758](https://github.com/hydro-project/hydro/issues/2758)**
    - Document LaunchedSim struct and fields in simulator ([`b393e4e`](https://github.com/hydro-project/hydro/commit/b393e4e81a97815ba15f89b79965d88c2db0e575))
 * **[#2759](https://github.com/hydro-project/hydro/issues/2759)**
    - Disable backtrace tests on all non-Linux platforms ([`48febff`](https://github.com/hydro-project/hydro/commit/48febffe0869454fe721ecd878ac157e7eae76a2))
 * **[#2760](https://github.com/hydro-project/hydro/issues/2760)**
    - Trust more nondets in core and extract casting helpers ([`23cc2e6`](https://github.com/hydro-project/hydro/commit/23cc2e6d9590942af774cab3ec31cd5fed89ba84))
 * **[#2766](https://github.com/hydro-project/hydro/issues/2766)**
    - Simplify viz ([`0f5a737`](https://github.com/hydro-project/hydro/commit/0f5a7378a845a419d629a3121ecc8a518d796071))
 * **[#2778](https://github.com/hydro-project/hydro/issues/2778)**
    - Smart join that preserves ordering when right side is bounded ([`33dfda8`](https://github.com/hydro-project/hydro/commit/33dfda8a16ee7628c4cde0fcd1ecf833baba4cd3))
 * **[#2779](https://github.com/hydro-project/hydro/issues/2779)**
    - Switch `dfir_syntax!` to inline codegen, begin removing scheduled DFIR [ci-bench] ([`296a491`](https://github.com/hydro-project/hydro/commit/296a491c80546eb7f48327b48f9d50951abdf172))
 * **[#2782](https://github.com/hydro-project/hydro/issues/2782)**
    - Remove scheduled codegen path, rename inline codegen ([`9cb7800`](https://github.com/hydro-project/hydro/commit/9cb780085e19197381653eb010d8abdaeb23729d))
 * **[#2795](https://github.com/hydro-project/hydro/issues/2795)**
    - Remove scheduled Dfir runtime, rename Inline types ([`16f1c0b`](https://github.com/hydro-project/hydro/commit/16f1c0bf960c3b4238adb020a833f214bd3fd064))
 * **[#2807](https://github.com/hydro-project/hydro/issues/2807)**
    - Add broadcast_closed for fixed-membership clusters ([`ba2eee3`](https://github.com/hydro-project/hydro/commit/ba2eee3633034e18ffb619954d3277ce69c9344b))
 * **[#2808](https://github.com/hydro-project/hydro/issues/2808)**
    - Make IR types serializable via serde ([`5aa4324`](https://github.com/hydro-project/hydro/commit/5aa43241a504d73b4578ef4b552ed21630264f4e))
 * **[#2819](https://github.com/hydro-project/hydro/issues/2819)**
    - ReduceKeyedWatermark generated DFIR was broken for non-Copy watermarks ([`1855bcd`](https://github.com/hydro-project/hydro/commit/1855bcd4b8e212bf74f2036c1b5a3802c31a20a7))
 * **[#2820](https://github.com/hydro-project/hydro/issues/2820)**
    - Add test that demonstrates cluster dynamics in simulation ([`b6cc1bc`](https://github.com/hydro-project/hydro/commit/b6cc1bc658d98d335cfad5d08dfda0023a8aa0b3))
 * **[#2821](https://github.com/hydro-project/hydro/issues/2821)**
    - Sim scheduler no longer terminates on quiescence ([`6e3c8d2`](https://github.com/hydro-project/hydro/commit/6e3c8d20abb5d07b8a265cbbbb8648398581e637))
 * **[#2823](https://github.com/hydro-project/hydro/issues/2823)**
    - Use Display instead of Debug for TaglessMemberId formatting ([`2b33b73`](https://github.com/hydro-project/hydro/commit/2b33b73b996837c0492ef260ebb826f75a24e5fd))
 * **[#2824](https://github.com/hydro-project/hydro/issues/2824)**
    - Make the number of fuzzing iterations configurable in unit tests ([`35c2d95`](https://github.com/hydro-project/hydro/commit/35c2d95f080ce9438246d264b95d30f7c74b3a18))
 * **[#2825](https://github.com/hydro-project/hydro/issues/2825)**
    - Drop message in round_robin if there are no members, rather than panic ([`34893c2`](https://github.com/hydro-project/hydro/commit/34893c20c53499dd4c4de0a99d6d15778af7825d))
 * **[#2826](https://github.com/hydro-project/hydro/issues/2826)**
    - Skip meta graph JSON embedding to avoid proc-macro2 Span overflow ([`9a94b26`](https://github.com/hydro-project/hydro/commit/9a94b266ad7d4c123bd148da1920e2dca455a7eb))
 * **[#2832](https://github.com/hydro-project/hydro/issues/2832)**
    - Normalize backtrace outputs further due to windows not emitting column numbers [ci-full] ([`31b2161`](https://github.com/hydro-project/hydro/commit/31b2161962e10f5828dab33b6c67fa2edb3db314))

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 191 commits contributed to the release over the course of 156 calendar days.
 - 156 days passed between releases.
 - 186 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 185 unique issues were worked on: [#2179](https://github.com/hydro-project/hydro/issues/2179), [#2251](https://github.com/hydro-project/hydro/issues/2251), [#2297](https://github.com/hydro-project/hydro/issues/2297), [#2308](https://github.com/hydro-project/hydro/issues/2308), [#2323](https://github.com/hydro-project/hydro/issues/2323), [#2330](https://github.com/hydro-project/hydro/issues/2330), [#2338](https://github.com/hydro-project/hydro/issues/2338), [#2340](https://github.com/hydro-project/hydro/issues/2340), [#2346](https://github.com/hydro-project/hydro/issues/2346), [#2347](https://github.com/hydro-project/hydro/issues/2347), [#2349](https://github.com/hydro-project/hydro/issues/2349), [#2352](https://github.com/hydro-project/hydro/issues/2352), [#2360](https://github.com/hydro-project/hydro/issues/2360), [#2363](https://github.com/hydro-project/hydro/issues/2363), [#2372](https://github.com/hydro-project/hydro/issues/2372), [#2373](https://github.com/hydro-project/hydro/issues/2373), [#2378](https://github.com/hydro-project/hydro/issues/2378), [#2385](https://github.com/hydro-project/hydro/issues/2385), [#2386](https://github.com/hydro-project/hydro/issues/2386), [#2387](https://github.com/hydro-project/hydro/issues/2387), [#2390](https://github.com/hydro-project/hydro/issues/2390), [#2394](https://github.com/hydro-project/hydro/issues/2394), [#2400](https://github.com/hydro-project/hydro/issues/2400), [#2405](https://github.com/hydro-project/hydro/issues/2405), [#2406](https://github.com/hydro-project/hydro/issues/2406), [#2409](https://github.com/hydro-project/hydro/issues/2409), [#2412](https://github.com/hydro-project/hydro/issues/2412), [#2413](https://github.com/hydro-project/hydro/issues/2413), [#2414](https://github.com/hydro-project/hydro/issues/2414), [#2420](https://github.com/hydro-project/hydro/issues/2420), [#2422](https://github.com/hydro-project/hydro/issues/2422), [#2423](https://github.com/hydro-project/hydro/issues/2423), [#2425](https://github.com/hydro-project/hydro/issues/2425), [#2426](https://github.com/hydro-project/hydro/issues/2426), [#2429](https://github.com/hydro-project/hydro/issues/2429), [#2430](https://github.com/hydro-project/hydro/issues/2430), [#2431](https://github.com/hydro-project/hydro/issues/2431), [#2432](https://github.com/hydro-project/hydro/issues/2432), [#2433](https://github.com/hydro-project/hydro/issues/2433), [#2435](https://github.com/hydro-project/hydro/issues/2435), [#2439](https://github.com/hydro-project/hydro/issues/2439), [#2440](https://github.com/hydro-project/hydro/issues/2440), [#2441](https://github.com/hydro-project/hydro/issues/2441), [#2442](https://github.com/hydro-project/hydro/issues/2442), [#2443](https://github.com/hydro-project/hydro/issues/2443), [#2446](https://github.com/hydro-project/hydro/issues/2446), [#2447](https://github.com/hydro-project/hydro/issues/2447), [#2452](https://github.com/hydro-project/hydro/issues/2452), [#2453](https://github.com/hydro-project/hydro/issues/2453), [#2457](https://github.com/hydro-project/hydro/issues/2457), [#2462](https://github.com/hydro-project/hydro/issues/2462), [#2465](https://github.com/hydro-project/hydro/issues/2465), [#2466](https://github.com/hydro-project/hydro/issues/2466), [#2468](https://github.com/hydro-project/hydro/issues/2468), [#2469](https://github.com/hydro-project/hydro/issues/2469), [#2470](https://github.com/hydro-project/hydro/issues/2470), [#2471](https://github.com/hydro-project/hydro/issues/2471), [#2473](https://github.com/hydro-project/hydro/issues/2473), [#2474](https://github.com/hydro-project/hydro/issues/2474), [#2479](https://github.com/hydro-project/hydro/issues/2479), [#2481](https://github.com/hydro-project/hydro/issues/2481), [#2482](https://github.com/hydro-project/hydro/issues/2482), [#2485](https://github.com/hydro-project/hydro/issues/2485), [#2488](https://github.com/hydro-project/hydro/issues/2488), [#2492](https://github.com/hydro-project/hydro/issues/2492), [#2493](https://github.com/hydro-project/hydro/issues/2493), [#2495](https://github.com/hydro-project/hydro/issues/2495), [#2496](https://github.com/hydro-project/hydro/issues/2496), [#2498](https://github.com/hydro-project/hydro/issues/2498), [#2499](https://github.com/hydro-project/hydro/issues/2499), [#2506](https://github.com/hydro-project/hydro/issues/2506), [#2507](https://github.com/hydro-project/hydro/issues/2507), [#2508](https://github.com/hydro-project/hydro/issues/2508), [#2511](https://github.com/hydro-project/hydro/issues/2511), [#2513](https://github.com/hydro-project/hydro/issues/2513), [#2514](https://github.com/hydro-project/hydro/issues/2514), [#2515](https://github.com/hydro-project/hydro/issues/2515), [#2517](https://github.com/hydro-project/hydro/issues/2517), [#2523](https://github.com/hydro-project/hydro/issues/2523), [#2525](https://github.com/hydro-project/hydro/issues/2525), [#2526](https://github.com/hydro-project/hydro/issues/2526), [#2530](https://github.com/hydro-project/hydro/issues/2530), [#2531](https://github.com/hydro-project/hydro/issues/2531), [#2532](https://github.com/hydro-project/hydro/issues/2532), [#2538](https://github.com/hydro-project/hydro/issues/2538), [#2541](https://github.com/hydro-project/hydro/issues/2541), [#2542](https://github.com/hydro-project/hydro/issues/2542), [#2546](https://github.com/hydro-project/hydro/issues/2546), [#2549](https://github.com/hydro-project/hydro/issues/2549), [#2550](https://github.com/hydro-project/hydro/issues/2550), [#2557](https://github.com/hydro-project/hydro/issues/2557), [#2559](https://github.com/hydro-project/hydro/issues/2559), [#2560](https://github.com/hydro-project/hydro/issues/2560), [#2562](https://github.com/hydro-project/hydro/issues/2562), [#2564](https://github.com/hydro-project/hydro/issues/2564), [#2565](https://github.com/hydro-project/hydro/issues/2565), [#2568](https://github.com/hydro-project/hydro/issues/2568), [#2570](https://github.com/hydro-project/hydro/issues/2570), [#2577](https://github.com/hydro-project/hydro/issues/2577), [#2578](https://github.com/hydro-project/hydro/issues/2578), [#2581](https://github.com/hydro-project/hydro/issues/2581), [#2582](https://github.com/hydro-project/hydro/issues/2582), [#2583](https://github.com/hydro-project/hydro/issues/2583), [#2593](https://github.com/hydro-project/hydro/issues/2593), [#2595](https://github.com/hydro-project/hydro/issues/2595), [#2597](https://github.com/hydro-project/hydro/issues/2597), [#2599](https://github.com/hydro-project/hydro/issues/2599), [#2600](https://github.com/hydro-project/hydro/issues/2600), [#2607](https://github.com/hydro-project/hydro/issues/2607), [#2609](https://github.com/hydro-project/hydro/issues/2609), [#2610](https://github.com/hydro-project/hydro/issues/2610), [#2611](https://github.com/hydro-project/hydro/issues/2611), [#2612](https://github.com/hydro-project/hydro/issues/2612), [#2613](https://github.com/hydro-project/hydro/issues/2613), [#2614](https://github.com/hydro-project/hydro/issues/2614), [#2617](https://github.com/hydro-project/hydro/issues/2617), [#2618](https://github.com/hydro-project/hydro/issues/2618), [#2619](https://github.com/hydro-project/hydro/issues/2619), [#2622](https://github.com/hydro-project/hydro/issues/2622), [#2623](https://github.com/hydro-project/hydro/issues/2623), [#2624](https://github.com/hydro-project/hydro/issues/2624), [#2628](https://github.com/hydro-project/hydro/issues/2628), [#2632](https://github.com/hydro-project/hydro/issues/2632), [#2636](https://github.com/hydro-project/hydro/issues/2636), [#2640](https://github.com/hydro-project/hydro/issues/2640), [#2641](https://github.com/hydro-project/hydro/issues/2641), [#2643](https://github.com/hydro-project/hydro/issues/2643), [#2644](https://github.com/hydro-project/hydro/issues/2644), [#2645](https://github.com/hydro-project/hydro/issues/2645), [#2647](https://github.com/hydro-project/hydro/issues/2647), [#2648](https://github.com/hydro-project/hydro/issues/2648), [#2654](https://github.com/hydro-project/hydro/issues/2654), [#2655](https://github.com/hydro-project/hydro/issues/2655), [#2668](https://github.com/hydro-project/hydro/issues/2668), [#2669](https://github.com/hydro-project/hydro/issues/2669), [#2670](https://github.com/hydro-project/hydro/issues/2670), [#2686](https://github.com/hydro-project/hydro/issues/2686), [#2687](https://github.com/hydro-project/hydro/issues/2687), [#2689](https://github.com/hydro-project/hydro/issues/2689), [#2692](https://github.com/hydro-project/hydro/issues/2692), [#2693](https://github.com/hydro-project/hydro/issues/2693), [#2695](https://github.com/hydro-project/hydro/issues/2695), [#2698](https://github.com/hydro-project/hydro/issues/2698), [#2699](https://github.com/hydro-project/hydro/issues/2699), [#2701](https://github.com/hydro-project/hydro/issues/2701), [#2702](https://github.com/hydro-project/hydro/issues/2702), [#2703](https://github.com/hydro-project/hydro/issues/2703), [#2707](https://github.com/hydro-project/hydro/issues/2707), [#2709](https://github.com/hydro-project/hydro/issues/2709), [#2710](https://github.com/hydro-project/hydro/issues/2710), [#2711](https://github.com/hydro-project/hydro/issues/2711), [#2715](https://github.com/hydro-project/hydro/issues/2715), [#2723](https://github.com/hydro-project/hydro/issues/2723), [#2724](https://github.com/hydro-project/hydro/issues/2724), [#2729](https://github.com/hydro-project/hydro/issues/2729), [#2731](https://github.com/hydro-project/hydro/issues/2731), [#2732](https://github.com/hydro-project/hydro/issues/2732), [#2733](https://github.com/hydro-project/hydro/issues/2733), [#2736](https://github.com/hydro-project/hydro/issues/2736), [#2740](https://github.com/hydro-project/hydro/issues/2740), [#2742](https://github.com/hydro-project/hydro/issues/2742), [#2744](https://github.com/hydro-project/hydro/issues/2744), [#2750](https://github.com/hydro-project/hydro/issues/2750), [#2752](https://github.com/hydro-project/hydro/issues/2752), [#2753](https://github.com/hydro-project/hydro/issues/2753), [#2755](https://github.com/hydro-project/hydro/issues/2755), [#2757](https://github.com/hydro-project/hydro/issues/2757), [#2758](https://github.com/hydro-project/hydro/issues/2758), [#2759](https://github.com/hydro-project/hydro/issues/2759), [#2760](https://github.com/hydro-project/hydro/issues/2760), [#2766](https://github.com/hydro-project/hydro/issues/2766), [#2778](https://github.com/hydro-project/hydro/issues/2778), [#2779](https://github.com/hydro-project/hydro/issues/2779), [#2782](https://github.com/hydro-project/hydro/issues/2782), [#2795](https://github.com/hydro-project/hydro/issues/2795), [#2807](https://github.com/hydro-project/hydro/issues/2807), [#2808](https://github.com/hydro-project/hydro/issues/2808), [#2819](https://github.com/hydro-project/hydro/issues/2819), [#2820](https://github.com/hydro-project/hydro/issues/2820), [#2821](https://github.com/hydro-project/hydro/issues/2821), [#2823](https://github.com/hydro-project/hydro/issues/2823), [#2824](https://github.com/hydro-project/hydro/issues/2824), [#2825](https://github.com/hydro-project/hydro/issues/2825), [#2826](https://github.com/hydro-project/hydro/issues/2826), [#2832](https://github.com/hydro-project/hydro/issues/2832)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#2179](https://github.com/hydro-project/hydro/issues/2179)**
    - Add local containerized deployments ([`9e1f9f0`](https://github.com/hydro-project/hydro/commit/9e1f9f08ee4ebce1abe814dddcdad8979fb050e3))
 * **[#2251](https://github.com/hydro-project/hydro/issues/2251)**
    - Enable automatic AWS CloudWatch metric reporting (DFIR, Tokio, cpu/mem/netstat) ([`7e92fec`](https://github.com/hydro-project/hydro/commit/7e92fecadaad532975f96171f19b75e44b9d8012))
 * **[#2297](https://github.com/hydro-project/hydro/issues/2297)**
    - Add round_robin_bincode to Stream<_, Cluster<_>> ([`26659dc`](https://github.com/hydro-project/hydro/commit/26659dc6750f87f4aa9642c0fa80273dbaafd995))
 * **[#2308](https://github.com/hydro-project/hydro/issues/2308)**
    - Add get_many method for outer join on KeyedSingleton ([`cda8c3c`](https://github.com/hydro-project/hydro/commit/cda8c3cfc51a732a75a751ade229da791cfedc39))
 * **[#2323](https://github.com/hydro-project/hydro/issues/2323)**
    - Mark nodes with nondet blocks as NonDeterministic type ([`72afebe`](https://github.com/hydro-project/hydro/commit/72afebe17d1c4431c6322c76dd7a96a829c855e9))
 * **[#2330](https://github.com/hydro-project/hydro/issues/2330)**
    - Add tagless member ids, add docker member id ([`3f65882`](https://github.com/hydro-project/hydro/commit/3f65882e04633cb92a2e6ac52edff81a26b35320))
 * **[#2338](https://github.com/hydro-project/hydro/issues/2338)**
    - Convert pull from Iterator to Stream to support async yielding [ci-bench] ([`ed38dd7`](https://github.com/hydro-project/hydro/commit/ed38dd72aaeec449e35c4324d96ffef55cedf0a4))
 * **[#2340](https://github.com/hydro-project/hydro/issues/2340)**
    - Separate rust crates and hosts to allow the rust crate code to be reused ([`c500b4a`](https://github.com/hydro-project/hydro/commit/c500b4ac550c40808713f9757e612b2921d88c33))
 * **[#2346](https://github.com/hydro-project/hydro/issues/2346)**
    - Remove unused CompileEnv ([`216cc0e`](https://github.com/hydro-project/hydro/commit/216cc0ee14309994c4b706f9c109afa39a942a94))
 * **[#2347](https://github.com/hydro-project/hydro/issues/2347)**
    - Eliminate use of `Persist` node from non-`persist` APIs ([`f717ac9`](https://github.com/hydro-project/hydro/commit/f717ac95f8838f5281a5e617715c156f796d5997))
 * **[#2349](https://github.com/hydro-project/hydro/issues/2349)**
    - Remove `persist` APIs and its IR node ([`f5b0a12`](https://github.com/hydro-project/hydro/commit/f5b0a12aac76778bdebe57629f8c16179be4c2e7))
 * **[#2352](https://github.com/hydro-project/hydro/issues/2352)**
    - Add `across_ticks` API for operations inside a tick that retain memory ([`3d22c9a`](https://github.com/hydro-project/hydro/commit/3d22c9a3d72e2b3b5c8b00d38f6d86bbf4ba6b9f))
 * **[#2360](https://github.com/hydro-project/hydro/issues/2360)**
    - Use `sliced!` in more places ([`54e7b84`](https://github.com/hydro-project/hydro/commit/54e7b84196e2a998f0651dae962aafb5296a9406))
 * **[#2363](https://github.com/hydro-project/hydro/issues/2363)**
    - Work around Windows stack overflow in doctests [ci-full] ([`81e4d2d`](https://github.com/hydro-project/hydro/commit/81e4d2df32e86f4f2ce70af896f7afb5c547b4bd))
 * **[#2372](https://github.com/hydro-project/hydro/issues/2372)**
    - Use `&self` to avoid `RwLock` where possible ([`cb73aea`](https://github.com/hydro-project/hydro/commit/cb73aea75b6c5c5ec25caa121a04e261be290404))
 * **[#2373](https://github.com/hydro-project/hydro/issues/2373)**
    - Add `use::state` syntax for stateful `sliced!` ([`853db69`](https://github.com/hydro-project/hydro/commit/853db69e4487ae9c097fe838f05e9447c736ec98))
 * **[#2378](https://github.com/hydro-project/hydro/issues/2378)**
    - Support atomic yield in `sliced!`, use in Paxos ([`c374bd6`](https://github.com/hydro-project/hydro/commit/c374bd6a1085a8516c174cab441cc92e47573f8a))
 * **[#2385](https://github.com/hydro-project/hydro/issues/2385)**
    - Fix `&self, self_arc: &Arc<Self>` methods, `RustCratePortConfig::merge` ([`721edfb`](https://github.com/hydro-project/hydro/commit/721edfbe74a48f5fd10f12a56898c5a53a5712a2))
 * **[#2386](https://github.com/hydro-project/hydro/issues/2386)**
    - Remove `RwLock` wrapping of `AwsNetwork`, `GcpNetwork` ([`5396e60`](https://github.com/hydro-project/hydro/commit/5396e60d657b45e6fc090ba6c20f0007fa094da0))
 * **[#2387](https://github.com/hydro-project/hydro/issues/2387)**
    - Remove 2 unnecessary clones ([`f61efcc`](https://github.com/hydro-project/hydro/commit/f61efcc6a63fbf850e42ab019a265f663ee2bb22))
 * **[#2390](https://github.com/hydro-project/hydro/issues/2390)**
    - Move deploy_integration from dfir to hydro_lang, rename `mod resource_measurement` to `launch` ([`149e3e7`](https://github.com/hydro-project/hydro/commit/149e3e7af467ae3c4b16bc8122f4993b5164fcc5))
 * **[#2394](https://github.com/hydro-project/hydro/issues/2394)**
    - Port `bench_client` to use sliced!, introduce `Stream::merge_ordered` ([`59f5216`](https://github.com/hydro-project/hydro/commit/59f5216642e3f08eae896ea67cfc5b213ad86e4a))
 * **[#2400](https://github.com/hydro-project/hydro/issues/2400)**
    - Make network channels configurable with a generic `Stream::send` API ([`708e835`](https://github.com/hydro-project/hydro/commit/708e835452958120edce77cd693bd8fb1cb6c48c))
 * **[#2405](https://github.com/hydro-project/hydro/issues/2405)**
    - Unify `fold` API by using Stageleft properties to track commutativity and idempotence ([`101c7c7`](https://github.com/hydro-project/hydro/commit/101c7c70c3381d181241ce7c648e4f70e12f589b))
 * **[#2406](https://github.com/hydro-project/hydro/issues/2406)**
    - Move hydro_deploy tests to hydro_test, add rust-lld back in as musl c linker, fix ci nightly tests, fix snapshots [ci-full] ([`a7a4702`](https://github.com/hydro-project/hydro/commit/a7a470234e163c08a9e6dfd1cc6c9b4372024e22))
 * **[#2409](https://github.com/hydro-project/hydro/issues/2409)**
    - Remove `compile_no_network`, remove interior mutability from `preview_compile` for simplicity ([`5cbf04e`](https://github.com/hydro-project/hydro/commit/5cbf04e241727167b11ababbac35e108c76abc81))
 * **[#2412](https://github.com/hydro-project/hydro/issues/2412)**
    - Unify remaining stream / keyed stream APIs using properties ([`d8ebb19`](https://github.com/hydro-project/hydro/commit/d8ebb19948c65e13276539a3e6b99041407b64e9))
 * **[#2413](https://github.com/hydro-project/hydro/issues/2413)**
    - Create rewritten_ir_builder from BuiltFlow instead of FlowBuilder ([`1a769e1`](https://github.com/hydro-project/hydro/commit/1a769e1c0a5a8bbe7930b8f7224de5c661642147))
 * **[#2414](https://github.com/hydro-project/hydro/issues/2414)**
    - Initial support for top-level bounded live collections ([`3776952`](https://github.com/hydro-project/hydro/commit/37769524360ef7368cd860881c513060bc7220e6))
 * **[#2420](https://github.com/hydro-project/hydro/issues/2420)**
    - Add across_ticks() API to KeyedStream ([`609dad2`](https://github.com/hydro-project/hydro/commit/609dad2a558236b77b3858f59f975ff6a605f526))
 * **[#2422](https://github.com/hydro-project/hydro/issues/2422)**
    - Remove unused buffered_lazy_sink_source ([`d60ebfb`](https://github.com/hydro-project/hydro/commit/d60ebfb6fd5b935beb5fee9b72238a815553b88e))
 * **[#2423](https://github.com/hydro-project/hydro/issues/2423)**
    - Don't print color codes if they are disabled ([`38d25bd`](https://github.com/hydro-project/hydro/commit/38d25bdcc0d68fd813707407e76ac0a302ae1069))
 * **[#2425](https://github.com/hydro-project/hydro/issues/2425)**
    - `viz` use `slotmap` custom key (instead of `usize`) ([`4984d6f`](https://github.com/hydro-project/hydro/commit/4984d6fc0434d6601123b97388fa41807a9840e4))
 * **[#2426](https://github.com/hydro-project/hydro/issues/2426)**
    - Add ecs deployment support [ci-full] ([`c2fc777`](https://github.com/hydro-project/hydro/commit/c2fc7771c1c523e9844c15b5047ef66475e66fea))
 * **[#2429](https://github.com/hydro-project/hydro/issues/2429)**
    - Detect workspace `Cargo.lock` changes to trigger trybuild setup ([`0f2e776`](https://github.com/hydro-project/hydro/commit/0f2e7768f2677752258bc4edf64992368e56b97c))
 * **[#2430](https://github.com/hydro-project/hydro/issues/2430)**
    - Fix local docker race conditions around membership stream and multiple containers starting up at the same time ([`25e69c8`](https://github.com/hydro-project/hydro/commit/25e69c85365e54578aa8830d895267ed9ff4f114))
 * **[#2431](https://github.com/hydro-project/hydro/issues/2431)**
    - [re]move mostly-unused `raw_port()` APIs ([`4f77122`](https://github.com/hydro-project/hydro/commit/4f77122f3988c6b1555c2de7f0cf857d4e9b257c))
 * **[#2432](https://github.com/hydro-project/hydro/issues/2432)**
    - Ensure `source_iter` always drains on first tick ([`22d10a2`](https://github.com/hydro-project/hydro/commit/22d10a22aa3c55eea0ae41c96be464a9f306cb43))
 * **[#2433](https://github.com/hydro-project/hydro/issues/2433)**
    - Use `ExternalPortId` instead of `usize` ([`7b468df`](https://github.com/hydro-project/hydro/commit/7b468dfadc93e417ac632f2ccbfe4a383f9f00aa))
 * **[#2435](https://github.com/hydro-project/hydro/issues/2435)**
    - Generalize bench_client ([`2f38e7e`](https://github.com/hydro-project/hydro/commit/2f38e7eddf0363f818aa4b204c7bf549c317428a))
 * **[#2439](https://github.com/hydro-project/hydro/issues/2439)**
    - Cleanup port handling with newtypes, trait changes ([`5132ba7`](https://github.com/hydro-project/hydro/commit/5132ba75f14a4ed72d48b12077616f73031e761e))
 * **[#2440](https://github.com/hydro-project/hydro/issues/2440)**
    - Unify `forward_ref` implementation between `Location` and `Tick` ([`265d4ae`](https://github.com/hydro-project/hydro/commit/265d4ae23cf365be4b371ee1a7e91e70c34d155b))
 * **[#2441](https://github.com/hydro-project/hydro/issues/2441)**
    - Update Trybuild fork to inherit workspace profiles ([`74f1b93`](https://github.com/hydro-project/hydro/commit/74f1b936265c4fdd436073b6dec260a74739627e))
 * **[#2442](https://github.com/hydro-project/hydro/issues/2442)**
    - Convert `HydroNode::emit_core` to use `HydroNode::transform_bottom_up` ([`6c82e3a`](https://github.com/hydro-project/hydro/commit/6c82e3a6b6ed39096a50381bd0d7fd2d01f2c43b))
 * **[#2443](https://github.com/hydro-project/hydro/issues/2443)**
    - Re-enable tests that previously had stack overflow on Windows [ci-full] ([`f6c8bdf`](https://github.com/hydro-project/hydro/commit/f6c8bdfcbd563a6f3b94b7b51ff2a272b2c93637))
 * **[#2446](https://github.com/hydro-project/hydro/issues/2446)**
    - Drop unnecessary dependencies ([`2d58215`](https://github.com/hydro-project/hydro/commit/2d58215f99353e5b00066d66320fc54718e039c3))
 * **[#2447](https://github.com/hydro-project/hydro/issues/2447)**
    - Extract profile folding into a feature ([`59d90ed`](https://github.com/hydro-project/hydro/commit/59d90ed7ea9830935b049cd848a0bc14ebd9afc5))
 * **[#2452](https://github.com/hydro-project/hydro/issues/2452)**
    - Mutate Stageleft `gen_staged` in-place to avoid AST copies during pretty-print ([`e6bbad8`](https://github.com/hydro-project/hydro/commit/e6bbad80fe63b44c717f1147203963e4a1629ce9))
 * **[#2453](https://github.com/hydro-project/hydro/issues/2453)**
    - Bump Stageleft to reduce Trybuild prep latency ([`b9dd20b`](https://github.com/hydro-project/hydro/commit/b9dd20b72a6dbea0ac200ea5f1c8ee1c1e9990a5))
 * **[#2457](https://github.com/hydro-project/hydro/issues/2457)**
    - Make backtrace resolution lazy to reduce graph compilation overhead ([`631ff49`](https://github.com/hydro-project/hydro/commit/631ff49939b27f96f6b127733ea23b0ed595251c))
 * **[#2462](https://github.com/hydro-project/hydro/issues/2462)**
    - Use a dylib helper crate to avoid global RUSTFLAGS for trybuild [ci-full] ([`7c1b423`](https://github.com/hydro-project/hydro/commit/7c1b423d1feb11ca81fc0d54d1f3e3e8efb063f7))
 * **[#2465](https://github.com/hydro-project/hydro/issues/2465)**
    - Convert locations (Cluster/Process/External) to use slotmaps, new key type ([`1b947b3`](https://github.com/hydro-project/hydro/commit/1b947b3dab7a93fcb83b732eca968c3f2b049301))
 * **[#2466](https://github.com/hydro-project/hydro/issues/2466)**
    - Update nightly snapshots ([`d17040d`](https://github.com/hydro-project/hydro/commit/d17040d7caae6d704d058e5d94c3adcf473bd310))
 * **[#2468](https://github.com/hydro-project/hydro/issues/2468)**
    - Remove trivial locations from `Deploy` trait ([`08b7888`](https://github.com/hydro-project/hydro/commit/08b7888315a49f0266b69a51e84e9c364f4a6dfa))
 * **[#2469](https://github.com/hydro-project/hydro/issues/2469)**
    - Remove unused `HydroMeta::subgraph_id` location field ([`62e689e`](https://github.com/hydro-project/hydro/commit/62e689e21c746b04b8c612370f0806494bc28f55))
 * **[#2470](https://github.com/hydro-project/hydro/issues/2470)**
    - Remove unused `Deploy::GraphId` type, `CompiledFlow` param (always `()`) ([`c1a03df`](https://github.com/hydro-project/hydro/commit/c1a03dfe61ea5ecaeb1b6766fdcdeb2f9ae02d38))
 * **[#2471](https://github.com/hydro-project/hydro/issues/2471)**
    - Share target dir between main and trybuild ([`44cc4e0`](https://github.com/hydro-project/hydro/commit/44cc4e0a02e0727b60f6725486ebb3a3a287a141))
 * **[#2473](https://github.com/hydro-project/hydro/issues/2473)**
    - Remove unused `DeployNode::id` location field ([`59404f1`](https://github.com/hydro-project/hydro/commit/59404f14a097fba8029a05c5f369c755e6fbabc0))
 * **[#2474](https://github.com/hydro-project/hydro/issues/2474)**
    - Statically link projected DFIR for fuzzing ([`530cfbd`](https://github.com/hydro-project/hydro/commit/530cfbdcdd5b405813320cc436d5d00d818081e2))
 * **[#2479](https://github.com/hydro-project/hydro/issues/2479)**
    - Add `.name` to configure channel names and prepare for multiversioning ([`418bf23`](https://github.com/hydro-project/hydro/commit/418bf232dc5b172ef1d9e518df703cac86a1b872))
 * **[#2481](https://github.com/hydro-project/hydro/issues/2481)**
    - Set up skeleton for registering expressions with proof providers ([`098621e`](https://github.com/hydro-project/hydro/commit/098621ef4d5b51101fd35a89dc7b0934c0e2af53))
 * **[#2482](https://github.com/hydro-project/hydro/issues/2482)**
    - Disable `aws-sdk-*` default features to avoid [re-]compiling `ring` ([`5087df6`](https://github.com/hydro-project/hydro/commit/5087df62b2cb00e7bb965e2ba8348cbb480f049b))
 * **[#2485](https://github.com/hydro-project/hydro/issues/2485)**
    - Sliced atomic keyed stream ([`7239f1d`](https://github.com/hydro-project/hydro/commit/7239f1d4ba7a40b06458cccc77ebd2aee8f418d5))
 * **[#2488](https://github.com/hydro-project/hydro/issues/2488)**
    - Stageleft cleanup, remove a `pub`, fix #2477 ([`adeb487`](https://github.com/hydro-project/hydro/commit/adeb487b9e3ee22c5fe59675450a1c4388425223))
 * **[#2492](https://github.com/hydro-project/hydro/issues/2492)**
    - Join consistent naming ([`3016764`](https://github.com/hydro-project/hydro/commit/30167649b29b1c199a14daabc796950d1a588297))
 * **[#2493](https://github.com/hydro-project/hydro/issues/2493)**
    - Cleanup str cloning, rename `name_hint` ->  `bin_name_prefix`, fix #2491 ([`e4d1846`](https://github.com/hydro-project/hydro/commit/e4d184636e546f237238782d2c6cd8ebfb0124b0))
 * **[#2495](https://github.com/hydro-project/hydro/issues/2495)**
    - Add sidecar API ([`60c4503`](https://github.com/hydro-project/hydro/commit/60c45036a7f5923bfa52e6804b2598d64d980957))
 * **[#2496](https://github.com/hydro-project/hydro/issues/2496)**
    - Remove `maximize-build-space` action ([`c1136c5`](https://github.com/hydro-project/hydro/commit/c1136c57a0fcb1611713f42df2027210ca14326b))
 * **[#2498](https://github.com/hydro-project/hydro/issues/2498)**
    - Remove unused `launch!` macro ([`7dc2686`](https://github.com/hydro-project/hydro/commit/7dc2686c4a121c9137bb258257c17f04192fefe9))
 * **[#2499](https://github.com/hydro-project/hydro/issues/2499)**
    - Add bidi support for docker containers ([`97d32af`](https://github.com/hydro-project/hydro/commit/97d32af9c7cbd15882a9b4103baa9bb29491c2ed))
 * **[#2506](https://github.com/hydro-project/hydro/issues/2506)**
    - Remove RewriteIrFlowBuilder ([`4819570`](https://github.com/hydro-project/hydro/commit/481957007e984817b38a3beeb32ef34653dfa359))
 * **[#2507](https://github.com/hydro-project/hydro/issues/2507)**
    - Re-add type-erased deploy methods, `with_(process|cluster)_erased`, unstable ([`376011d`](https://github.com/hydro-project/hydro/commit/376011d789c98aa5f736ef3357ce149336dfadd4))
 * **[#2508](https://github.com/hydro-project/hydro/issues/2508)**
    - Introduce `Weaker{Ordering/Retries}Than` to simplify stream weakening ([`0b31dbb`](https://github.com/hydro-project/hydro/commit/0b31dbbb079f4c4a3dd6445a4ac92af98aaab6f9))
 * **[#2511](https://github.com/hydro-project/hydro/issues/2511)**
    - Flag non-determinstic hashmap iterators, fix hydro_lang codegen nondeterminism fix #2464 ([`c16e13a`](https://github.com/hydro-project/hydro/commit/c16e13a8bdae3b099d498f9b7f1f43872cfdc939))
 * **[#2513](https://github.com/hydro-project/hydro/issues/2513)**
    - Support top-level `assume_ordering` in the simulator ([`88f92fd`](https://github.com/hydro-project/hydro/commit/88f92fdb5a7a4b9a212b8115a88c06bc77372918))
 * **[#2514](https://github.com/hydro-project/hydro/issues/2514)**
    - Update nightly snapshots ([`63e1e1e`](https://github.com/hydro-project/hydro/commit/63e1e1ec76dbebf78b484617c4caa29e20b315b0))
 * **[#2515](https://github.com/hydro-project/hydro/issues/2515)**
    - Update ecs deployment to emit a hydro manifest that can be used by cdk to deploy to ecs. ([`16fdf7a`](https://github.com/hydro-project/hydro/commit/16fdf7ae9b7aad0d563a194433d981492e220619))
 * **[#2517](https://github.com/hydro-project/hydro/issues/2517)**
    - Allow additional crates to be downloaded for the trybuild ([`c9016c9`](https://github.com/hydro-project/hydro/commit/c9016c90937354abe6dd28558cd52e1e37a6389d))
 * **[#2523](https://github.com/hydro-project/hydro/issues/2523)**
    - Add support for top-level `KeyedStream::assume_ordering` ([`39913ea`](https://github.com/hydro-project/hydro/commit/39913ea1ec7f3485d988eca11eab159e32f3d350))
 * **[#2525](https://github.com/hydro-project/hydro/issues/2525)**
    - Update pinned rust to 1.92, add lints/fixes for redundant cloning, string handling ([`efaa8f6`](https://github.com/hydro-project/hydro/commit/efaa8f61c124c4b3c691b92a58df1686751cf45c))
 * **[#2526](https://github.com/hydro-project/hydro/issues/2526)**
    - Support `assume_ordering` in atomic locations and block top-level bounded ([`3742f68`](https://github.com/hydro-project/hydro/commit/3742f68e6a82cd1100d7cbc97ba425f6a6b8ee81))
 * **[#2530](https://github.com/hydro-project/hydro/issues/2530)**
    - Remove assumption that `use` always has two parameters ([`6ead0cd`](https://github.com/hydro-project/hydro/commit/6ead0cd2d1d89c393b0e5add7ceae5081c302077))
 * **[#2531](https://github.com/hydro-project/hydro/issues/2531)**
    - Improve quality of error spans in `sliced!` macro ([`1866677`](https://github.com/hydro-project/hydro/commit/1866677da0a5b71e48d7b1cdf9442ee66d0f1e23))
 * **[#2532](https://github.com/hydro-project/hydro/issues/2532)**
    - Jepsen / Maelstrom backend for Hydro ([`43d41a3`](https://github.com/hydro-project/hydro/commit/43d41a3c69f02e76943df968c2bddcb872928193))
 * **[#2538](https://github.com/hydro-project/hydro/issues/2538)**
    - Docs for the `Location` trait ([`c515cce`](https://github.com/hydro-project/hydro/commit/c515ccef8b40054294558b1cb00ddc3d1416fc08))
 * **[#2541](https://github.com/hydro-project/hydro/issues/2541)**
    - Fix & test sim DFIR codegen; DFIR use `Result` to force error handling ([`024cfd6`](https://github.com/hydro-project/hydro/commit/024cfd693b884f51b13dee5a0c51b1a2ce4e0a27))
 * **[#2542](https://github.com/hydro-project/hydro/issues/2542)**
    - Place some unused APIs back behind feature gates ([`2a0c9b6`](https://github.com/hydro-project/hydro/commit/2a0c9b657f314ee6650785894105ff9af9d2917d))
 * **[#2546](https://github.com/hydro-project/hydro/issues/2546)**
    - Update nightly snapshots ([`4b1bd5a`](https://github.com/hydro-project/hydro/commit/4b1bd5a0e62556882667b5914605f009fbddc81a))
 * **[#2549](https://github.com/hydro-project/hydro/issues/2549)**
    - Add `TCP.lossy()` fault tolerance and fault-tolerant broadcast challenge ([`6a3ae3d`](https://github.com/hydro-project/hydro/commit/6a3ae3da98762b07e4d2a2ad6911cef6b6443df7))
 * **[#2550](https://github.com/hydro-project/hydro/issues/2550)**
    - Require explicit failure policy for TCP channels ([`83a1221`](https://github.com/hydro-project/hydro/commit/83a1221e04be1aad10679ae41ae041a247db44bb))
 * **[#2557](https://github.com/hydro-project/hydro/issues/2557)**
    - Preliminary support for embedding Hydro programs in other Rust code ([`bc5fc33`](https://github.com/hydro-project/hydro/commit/bc5fc3311c5b4ba7be7277e48d0a197707ce3ff1))
 * **[#2559](https://github.com/hydro-project/hydro/issues/2559)**
    - Support in-memory inputs for embedded Hydro programs ([`e764772`](https://github.com/hydro-project/hydro/commit/e764772603d3516d6e8237b8c02bdec721205ef6))
 * **[#2560](https://github.com/hydro-project/hydro/issues/2560)**
    - Update nightly snapshots ([`c6a22b8`](https://github.com/hydro-project/hydro/commit/c6a22b8ba67ebc6b9caebf3ab79cd07f12633496))
 * **[#2562](https://github.com/hydro-project/hydro/issues/2562)**
    - Have `_counter` take in a single (now-combined) prefix arg ([`6738e48`](https://github.com/hydro-project/hydro/commit/6738e4821acb6deac212099c2f0cb948eb6caaeb))
 * **[#2564](https://github.com/hydro-project/hydro/issues/2564)**
    - Fixup! fix(hydro_lang)!: fix performance via proper `TaglessMemberId` variant feature-gating ([`87e0807`](https://github.com/hydro-project/hydro/commit/87e0807a45286ee4159861059eecd0622cd3e8e8))
    - Fix performance via proper `TaglessMemberId` variant feature-gating ([`589f1c9`](https://github.com/hydro-project/hydro/commit/589f1c979094b089ca41b050c2902551d166658d))
 * **[#2565](https://github.com/hydro-project/hydro/issues/2565)**
    - Convert Singleton<Option<T>> to Optional<T> ([`4af85cb`](https://github.com/hydro-project/hydro/commit/4af85cbd179974bd668ed04f3c152c8bb2e64182))
 * **[#2568](https://github.com/hydro-project/hydro/issues/2568)**
    - Implement support for embedded outputs with callbacks ([`07caa28`](https://github.com/hydro-project/hydro/commit/07caa28acbc0f235207d91bda54f4f58203273e0))
 * **[#2570](https://github.com/hydro-project/hydro/issues/2570)**
    - Add `KeyedStream::{enumerate, sort, unique}` ([`59de8b7`](https://github.com/hydro-project/hydro/commit/59de8b731832d5d351f21ae2dbf98fd0533f142b))
 * **[#2577](https://github.com/hydro-project/hydro/issues/2577)**
    - Implement o2o networking in embedded mode ([`4efc69b`](https://github.com/hydro-project/hydro/commit/4efc69b547f081d568466cbb1fa857d02e1878c6))
 * **[#2578](https://github.com/hydro-project/hydro/issues/2578)**
    - Implement support for clusters and cluster networking in embedded mode ([`4d628dc`](https://github.com/hydro-project/hydro/commit/4d628dc323c14a8ca08cc68ef782da515dc64150))
 * **[#2581](https://github.com/hydro-project/hydro/issues/2581)**
    - Use newtype counters for `CycleId`, `ClockId` ([`077ff8a`](https://github.com/hydro-project/hydro/commit/077ff8a25ea960e9dd8fd935344686e5f6c0f470))
 * **[#2582](https://github.com/hydro-project/hydro/issues/2582)**
    - Cleanup `ForwardHandle` privacy ([`d56b580`](https://github.com/hydro-project/hydro/commit/d56b580451970806a3b0e84bd71b34268398c613))
 * **[#2583](https://github.com/hydro-project/hydro/issues/2583)**
    - Fixup! refactor(hydro_lang)!: Use `CycleId` in IR instead of `Ident`-IDs ([`08e4ad7`](https://github.com/hydro-project/hydro/commit/08e4ad73c1c74a3b7398c3b8fddd92bb865c025a))
    - Use `CycleId` in IR instead of `Ident`-IDs ([`91866fc`](https://github.com/hydro-project/hydro/commit/91866fc17d44ea936d8450fb8a8b4ab346fc2623))
 * **[#2593](https://github.com/hydro-project/hydro/issues/2593)**
    - Fix diagnostics path rewriting in Hydro Deploy ([`bf569f4`](https://github.com/hydro-project/hydro/commit/bf569f43dcc71e11a8a520709374ca2271775556))
 * **[#2595](https://github.com/hydro-project/hydro/issues/2595)**
    - Use marker trait to improve error messages for wrong ordering / retries ([`16269f1`](https://github.com/hydro-project/hydro/commit/16269f19d1e96232cefd6342817b98349f62c54f))
 * **[#2597](https://github.com/hydro-project/hydro/issues/2597)**
    - Correctly handle non-debug types in `__maybe_debug__` ([`676ca45`](https://github.com/hydro-project/hydro/commit/676ca45da47281aca0d0a19155601b6edc81acec))
 * **[#2599](https://github.com/hydro-project/hydro/issues/2599)**
    - Add `IsBounded` marker trait and migrate most live collection APIs to marker trait approach ([`acbefcd`](https://github.com/hydro-project/hydro/commit/acbefcdd44ea050507b06cba363e98725bce14e8))
 * **[#2600](https://github.com/hydro-project/hydro/issues/2600)**
    - Update nightly snapshots ([`9716e5b`](https://github.com/hydro-project/hydro/commit/9716e5bdd3a52d09d060fac1cdaaee98b1afc520))
 * **[#2607](https://github.com/hydro-project/hydro/issues/2607)**
    - Add `manual_proof!` macro that accepts doc comments ([`08cb0ed`](https://github.com/hydro-project/hydro/commit/08cb0ed12b213bc9a6ef449095cb89a69adc84ab))
 * **[#2609](https://github.com/hydro-project/hydro/issues/2609)**
    - Add docs on network configuration ([`a65f665`](https://github.com/hydro-project/hydro/commit/a65f6655cc51f75dab5f5a5c00d041cee0a5fab2))
 * **[#2610](https://github.com/hydro-project/hydro/issues/2610)**
    - Fix compilation bug in `Singleton::zip`, require boundedness ([`f00cd91`](https://github.com/hydro-project/hydro/commit/f00cd91c3eed0446c05004c7d350c53e6e1e21bb))
 * **[#2611](https://github.com/hydro-project/hydro/issues/2611)**
    - Update nightly snapshots ([`afa6e18`](https://github.com/hydro-project/hydro/commit/afa6e18a8c382f9ee9c7cda27544222eba492b92))
 * **[#2612](https://github.com/hydro-project/hydro/issues/2612)**
    - Improve quality of error messages for ordered / retries ([`6027dfa`](https://github.com/hydro-project/hydro/commit/6027dfad9c3e59fc50e5dc9acf296e8ecd1cf8a5))
 * **[#2613](https://github.com/hydro-project/hydro/issues/2613)**
    - Update nightly snapshots ([`a363dd3`](https://github.com/hydro-project/hydro/commit/a363dd38cdde318de33fd83e9387547275cf87a6))
 * **[#2614](https://github.com/hydro-project/hydro/issues/2614)**
    - Allow passing runtime environment variables and use for benchmarking ([`fad81f0`](https://github.com/hydro-project/hydro/commit/fad81f0f79bac3d7524165df515fd746af148bfb))
 * **[#2617](https://github.com/hydro-project/hydro/issues/2617)**
    - KeyedStream and KeyedSingleton get() supports Optional ([`bff2e92`](https://github.com/hydro-project/hydro/commit/bff2e9267d815ea48c14befd46a13dc0078d2e18))
 * **[#2618](https://github.com/hydro-project/hydro/issues/2618)**
    - Use custom `dfir_pipes::Pull` trait [ci-bench] ([`a662ff3`](https://github.com/hydro-project/hydro/commit/a662ff38541e58bec801644b81b2bfc505779e7b))
 * **[#2619](https://github.com/hydro-project/hydro/issues/2619)**
    - Refactor filter_is_some/none to filter_is_true/false, added boolean support operators (equals, and, or) ([`e91d158`](https://github.com/hydro-project/hydro/commit/e91d1584f29d04cf4778c911127f80bb53059ff8))
 * **[#2622](https://github.com/hydro-project/hydro/issues/2622)**
    - Add missing docs for remaining location modules ([`cbbf6b6`](https://github.com/hydro-project/hydro/commit/cbbf6b69849d4f13dca2f528b0eb7859ad2f1d5b))
 * **[#2623](https://github.com/hydro-project/hydro/issues/2623)**
    - Leading colons to workaround rustfmt change ([`1c8f853`](https://github.com/hydro-project/hydro/commit/1c8f85366c592b2768df65ba1ee2e98d2c06d496))
 * **[#2624](https://github.com/hydro-project/hydro/issues/2624)**
    - Add named channels to docker/ecs ([`d5e523c`](https://github.com/hydro-project/hydro/commit/d5e523caacfc0b537218e69d83d406bfc2c58b32))
 * **[#2628](https://github.com/hydro-project/hydro/issues/2628)**
    - Implement support for `use::state` with a `source_iter` input ([`9941c0d`](https://github.com/hydro-project/hydro/commit/9941c0ddbd5fb251cae0ac97e204a8ba3d4d9606))
 * **[#2632](https://github.com/hydro-project/hydro/issues/2632)**
    - Reduce keyed watermark no longer deletes items equal to the watermark ([`4b6f21e`](https://github.com/hydro-project/hydro/commit/4b6f21e11b43b31f51befd5bec7e7c532ff290bb))
 * **[#2636](https://github.com/hydro-project/hydro/issues/2636)**
    - Add `.partition()` operator for splitting streams without cloning ([`05f777d`](https://github.com/hydro-project/hydro/commit/05f777d36e77223647ccf7d9ec6654ed622b081a))
 * **[#2640](https://github.com/hydro-project/hydro/issues/2640)**
    - Bump `slotmap` minimum version to `1.1.0` ([`45bf796`](https://github.com/hydro-project/hydro/commit/45bf796c34c5f3a7d9b05ad9b80ca3d3d59d85a2))
 * **[#2641](https://github.com/hydro-project/hydro/issues/2641)**
    - Pin cores ([`355c392`](https://github.com/hydro-project/hydro/commit/355c392452b25cdf103841ac7699cff6b11f7e12))
 * **[#2643](https://github.com/hydro-project/hydro/issues/2643)**
    - Sliced supports up to 12 inputs and outputs ([`a57e73f`](https://github.com/hydro-project/hydro/commit/a57e73fc649a73fba42ba51d551705f01c09dfe7))
 * **[#2644](https://github.com/hydro-project/hydro/issues/2644)**
    - Use custom `dfir_pipes::Push` trait instead of `Sink` [ci-bench] ([`3e6e26c`](https://github.com/hydro-project/hydro/commit/3e6e26c4cc87d6f7857591b10876074cba97caff))
 * **[#2645](https://github.com/hydro-project/hydro/issues/2645)**
    - Unwrap_or_default for optionals ([`292743d`](https://github.com/hydro-project/hydro/commit/292743d6ba6e35ec0446b35098402df0d29a5fe6))
 * **[#2647](https://github.com/hydro-project/hydro/issues/2647)**
    - Add `lossy_delayed_forever()` fault-tolerance mode ([`05c8849`](https://github.com/hydro-project/hydro/commit/05c8849747ac45e80e20a8a9038549e7aaf54560))
 * **[#2648](https://github.com/hydro-project/hydro/issues/2648)**
    - Connect any dropped live collections to an implicit Null sink ([`9883137`](https://github.com/hydro-project/hydro/commit/988313771dc16147e2a94207b87d08a937290b5f))
 * **[#2654](https://github.com/hydro-project/hydro/issues/2654)**
    - Add generator method to `Stream`, mirroring `KeyedStream::generator` ([`8600c2e`](https://github.com/hydro-project/hydro/commit/8600c2e37203447da91fe220760ff20c5fed90e9))
 * **[#2655](https://github.com/hydro-project/hydro/issues/2655)**
    - Add embedded singleton input support ([`6b3a071`](https://github.com/hydro-project/hydro/commit/6b3a071020a12df1aa77027ec9bcf3821a7bc853))
 * **[#2668](https://github.com/hydro-project/hydro/issues/2668)**
    - Update pinned Rust stable version from 1.92.0 to 1.93.1 ([`5bccb09`](https://github.com/hydro-project/hydro/commit/5bccb09b69199639d3265dbbe90a96e02bad7f1d))
 * **[#2669](https://github.com/hydro-project/hydro/issues/2669)**
    - Rename `interleave` to `merge_unordered` for symmetry with `merge_ordered` ([`7fddc97`](https://github.com/hydro-project/hydro/commit/7fddc970b30538f2373007fab080d35444178fa5))
 * **[#2670](https://github.com/hydro-project/hydro/issues/2670)**
    - Add explanatory messages to empty todo!() in IR compiler and simulator ([`62afd62`](https://github.com/hydro-project/hydro/commit/62afd62b1eb90d26bb4d13a4e2bcb290db43b9a0))
 * **[#2686](https://github.com/hydro-project/hydro/issues/2686)**
    - Resolve_future[s]_blocking for streams, singleton ([`128e85a`](https://github.com/hydro-project/hydro/commit/128e85a7b6980f76575ad0e7306f34e7de0076c6))
 * **[#2687](https://github.com/hydro-project/hydro/issues/2687)**
    - Remove singleton T: Clone bound on top-level locations, fix #2679 ([`9891a93`](https://github.com/hydro-project/hydro/commit/9891a9373ff9de46dcf97b93a898c88e9ecc87f3))
 * **[#2689](https://github.com/hydro-project/hydro/issues/2689)**
    - Update nightly snapshots ([`cb06e6f`](https://github.com/hydro-project/hydro/commit/cb06e6f2032d698afc66db30e0cd3be8607ddd15))
 * **[#2692](https://github.com/hydro-project/hydro/issues/2692)**
    - Refactor atomic() to generate tick IDs internally with union-find unification ([`0a8ae17`](https://github.com/hydro-project/hydro/commit/0a8ae174c0752eca16e13ca5ac9d40d4ae3ebd37))
 * **[#2693](https://github.com/hydro-project/hydro/issues/2693)**
    - Add flatten_stream, flat_map_stream to Stream ([`354ede5`](https://github.com/hydro-project/hydro/commit/354ede54dc007131fe7adbb355017019cd39b13a))
 * **[#2695](https://github.com/hydro-project/hydro/issues/2695)**
    - Singleton/optional flatten operators require `B: IsBounded`, fix #2694 ([`2a45e64`](https://github.com/hydro-project/hydro/commit/2a45e64a9067e6df3c039025772a61b800b7845f))
 * **[#2698](https://github.com/hydro-project/hydro/issues/2698)**
    - Sanitize `{` and `}` in crate name prefix ([`057783a`](https://github.com/hydro-project/hydro/commit/057783a8f89b3af0d8554cb4c9eaf00ed18a0065))
 * **[#2699](https://github.com/hydro-project/hydro/issues/2699)**
    - Is_empty to check if a stream has elements ([`7a0e709`](https://github.com/hydro-project/hydro/commit/7a0e7095a862465fb23989ece3da7b918acc29ab))
 * **[#2701](https://github.com/hydro-project/hydro/issues/2701)**
    - Add `singleton_future` convenience method ([`fbcd09c`](https://github.com/hydro-project/hydro/commit/fbcd09c3018dbd7b9b52b51317271d7488ed8fea))
 * **[#2702](https://github.com/hydro-project/hydro/issues/2702)**
    - Improve TrybuildHost::features API ergonomics ([`fb2becf`](https://github.com/hydro-project/hydro/commit/fb2becff83586ea1db6ebbcca79d8f73dcbed01f))
 * **[#2703](https://github.com/hydro-project/hydro/issues/2703)**
    - Add m2e/e2m external inputs for clusters in the simulator ([`78e0afa`](https://github.com/hydro-project/hydro/commit/78e0afac3e02cfd3ba7c549bdcb4d4eac1a6026a))
 * **[#2707](https://github.com/hydro-project/hydro/issues/2707)**
    - Enable `manual_is_variant_and` and `manual_let_else` clippy lints ([`2b32044`](https://github.com/hydro-project/hydro/commit/2b32044d28b047d8f34c62a8cff6adfc52f21110))
 * **[#2709](https://github.com/hydro-project/hydro/issues/2709)**
    - Fix use of diallowed unordered iteration in sim builder ([`c823479`](https://github.com/hydro-project/hydro/commit/c823479960a3823d6c2427faa949257f4ffdd152))
 * **[#2710](https://github.com/hydro-project/hydro/issues/2710)**
    - Add scan_async_blocking operator to hydro_lang and dfir ([`eacc3cd`](https://github.com/hydro-project/hydro/commit/eacc3cd85a0a9bdd70c9f6b9da4da312059f3c5a))
 * **[#2711](https://github.com/hydro-project/hydro/issues/2711)**
    - Add limit() for Stream and KeyedStream ([`caf0d2c`](https://github.com/hydro-project/hydro/commit/caf0d2c9755eda76c46dae2496946777968d3e20))
 * **[#2715](https://github.com/hydro-project/hydro/issues/2715)**
    - Add support for monotone singletons with a `fold` property ([`4df9096`](https://github.com/hydro-project/hydro/commit/4df9096626b1cd01905c2c4658125d70eb2e4c5f))
 * **[#2723](https://github.com/hydro-project/hydro/issues/2723)**
    - Allow getting the next ClockId and CycleId since those are crate private ([`8f29a22`](https://github.com/hydro-project/hydro/commit/8f29a22d3b57ab5371ab56f421b279f5fe0da34f))
 * **[#2724](https://github.com/hydro-project/hydro/issues/2724)**
    - Update nightly snapshots ([`8246ab8`](https://github.com/hydro-project/hydro/commit/8246ab845905f888a8d70c6c19bfb79689b10c7e))
 * **[#2729](https://github.com/hydro-project/hydro/issues/2729)**
    - Early exit for first() and is_empty() ([`b1b2c8f`](https://github.com/hydro-project/hydro/commit/b1b2c8f80d9033daf6019004fe9ba7f946396eba))
 * **[#2731](https://github.com/hydro-project/hydro/issues/2731)**
    - Update tests to avoid synchronous cycles, #2080 ([`4f76b1f`](https://github.com/hydro-project/hydro/commit/4f76b1f1fee7faa60c873f72afc4e43ef3b8d3b6))
 * **[#2732](https://github.com/hydro-project/hydro/issues/2732)**
    - Switch all codegen paths to inline DFIR execution [ci-bench] ([`de0fa97`](https://github.com/hydro-project/hydro/commit/de0fa9767573e2968b7e7f6e271bf371c3207775))
 * **[#2733](https://github.com/hydro-project/hydro/issues/2733)**
    - Update nightly snapshots ([`6803fcd`](https://github.com/hydro-project/hydro/commit/6803fcdf57cf06ca9f76fda4bd98f194d38deecc))
 * **[#2736](https://github.com/hydro-project/hydro/issues/2736)**
    - Make new_node_metadata public ([`bf0dc2d`](https://github.com/hydro-project/hydro/commit/bf0dc2d8d9675e0a31a3f2e8e148bdb6d02f9686))
 * **[#2740](https://github.com/hydro-project/hydro/issues/2740)**
    - Port runtime metrics to inline codegen path ([`2633db8`](https://github.com/hydro-project/hydro/commit/2633db89ef2768285219a0e5af18f5a971a9aa1c))
 * **[#2742](https://github.com/hydro-project/hydro/issues/2742)**
    - Add order_preserving property to MapFuncAlgebra for monotonicity propagation ([`91e02ee`](https://github.com/hydro-project/hydro/commit/91e02ee15fede232489f992a48419b5f170b329d))
 * **[#2744](https://github.com/hydro-project/hydro/issues/2744)**
    - Change hex_literal_case to Upper in rustfmt.toml ([`f04e363`](https://github.com/hydro-project/hydro/commit/f04e3630eaa28bc0ffbd752f148586b389ce4ac3))
 * **[#2750](https://github.com/hydro-project/hydro/issues/2750)**
    - Demux from cluster directly goes to KeyedStream ([`ab7840c`](https://github.com/hydro-project/hydro/commit/ab7840cf72e50586de34c54696e1e1ca91ac2e77))
 * **[#2752](https://github.com/hydro-project/hydro/issues/2752)**
    - Refactor keyed stream / singleton joins to allow unbounded source ([`57a8a57`](https://github.com/hydro-project/hydro/commit/57a8a570187c0afe5204d8b71e8f29473aa915ba))
 * **[#2753](https://github.com/hydro-project/hydro/issues/2753)**
    - Add entries_partially_ordered to KeyedStream ([`fcb7513`](https://github.com/hydro-project/hydro/commit/fcb7513764312521d19ec69b087ce86344e380cb))
 * **[#2755](https://github.com/hydro-project/hydro/issues/2755)**
    - Fix simulator hole for Stream::merge_ordered ([`a675af6`](https://github.com/hydro-project/hydro/commit/a675af6236dbc0d9bac22cb08b787d5085f299b9))
 * **[#2757](https://github.com/hydro-project/hydro/issues/2757)**
    - Pass through orderedness in KeyedStream::get ([`a23b09b`](https://github.com/hydro-project/hydro/commit/a23b09b26c0c501254d82eb609a942cd1b21ab73))
 * **[#2758](https://github.com/hydro-project/hydro/issues/2758)**
    - Document LaunchedSim struct and fields in simulator ([`b393e4e`](https://github.com/hydro-project/hydro/commit/b393e4e81a97815ba15f89b79965d88c2db0e575))
 * **[#2759](https://github.com/hydro-project/hydro/issues/2759)**
    - Disable backtrace tests on all non-Linux platforms ([`48febff`](https://github.com/hydro-project/hydro/commit/48febffe0869454fe721ecd878ac157e7eae76a2))
 * **[#2760](https://github.com/hydro-project/hydro/issues/2760)**
    - Trust more nondets in core and extract casting helpers ([`23cc2e6`](https://github.com/hydro-project/hydro/commit/23cc2e6d9590942af774cab3ec31cd5fed89ba84))
 * **[#2766](https://github.com/hydro-project/hydro/issues/2766)**
    - Simplify viz ([`0f5a737`](https://github.com/hydro-project/hydro/commit/0f5a7378a845a419d629a3121ecc8a518d796071))
 * **[#2778](https://github.com/hydro-project/hydro/issues/2778)**
    - Smart join that preserves ordering when right side is bounded ([`33dfda8`](https://github.com/hydro-project/hydro/commit/33dfda8a16ee7628c4cde0fcd1ecf833baba4cd3))
 * **[#2779](https://github.com/hydro-project/hydro/issues/2779)**
    - Switch `dfir_syntax!` to inline codegen, begin removing scheduled DFIR [ci-bench] ([`296a491`](https://github.com/hydro-project/hydro/commit/296a491c80546eb7f48327b48f9d50951abdf172))
 * **[#2782](https://github.com/hydro-project/hydro/issues/2782)**
    - Remove scheduled codegen path, rename inline codegen ([`9cb7800`](https://github.com/hydro-project/hydro/commit/9cb780085e19197381653eb010d8abdaeb23729d))
 * **[#2795](https://github.com/hydro-project/hydro/issues/2795)**
    - Remove scheduled Dfir runtime, rename Inline types ([`16f1c0b`](https://github.com/hydro-project/hydro/commit/16f1c0bf960c3b4238adb020a833f214bd3fd064))
 * **[#2807](https://github.com/hydro-project/hydro/issues/2807)**
    - Add broadcast_closed for fixed-membership clusters ([`ba2eee3`](https://github.com/hydro-project/hydro/commit/ba2eee3633034e18ffb619954d3277ce69c9344b))
 * **[#2808](https://github.com/hydro-project/hydro/issues/2808)**
    - Make IR types serializable via serde ([`5aa4324`](https://github.com/hydro-project/hydro/commit/5aa43241a504d73b4578ef4b552ed21630264f4e))
 * **[#2819](https://github.com/hydro-project/hydro/issues/2819)**
    - ReduceKeyedWatermark generated DFIR was broken for non-Copy watermarks ([`1855bcd`](https://github.com/hydro-project/hydro/commit/1855bcd4b8e212bf74f2036c1b5a3802c31a20a7))
 * **[#2820](https://github.com/hydro-project/hydro/issues/2820)**
    - Add test that demonstrates cluster dynamics in simulation ([`b6cc1bc`](https://github.com/hydro-project/hydro/commit/b6cc1bc658d98d335cfad5d08dfda0023a8aa0b3))
 * **[#2821](https://github.com/hydro-project/hydro/issues/2821)**
    - Sim scheduler no longer terminates on quiescence ([`6e3c8d2`](https://github.com/hydro-project/hydro/commit/6e3c8d20abb5d07b8a265cbbbb8648398581e637))
 * **[#2823](https://github.com/hydro-project/hydro/issues/2823)**
    - Use Display instead of Debug for TaglessMemberId formatting ([`2b33b73`](https://github.com/hydro-project/hydro/commit/2b33b73b996837c0492ef260ebb826f75a24e5fd))
 * **[#2824](https://github.com/hydro-project/hydro/issues/2824)**
    - Make the number of fuzzing iterations configurable in unit tests ([`35c2d95`](https://github.com/hydro-project/hydro/commit/35c2d95f080ce9438246d264b95d30f7c74b3a18))
 * **[#2825](https://github.com/hydro-project/hydro/issues/2825)**
    - Drop message in round_robin if there are no members, rather than panic ([`34893c2`](https://github.com/hydro-project/hydro/commit/34893c20c53499dd4c4de0a99d6d15778af7825d))
 * **[#2826](https://github.com/hydro-project/hydro/issues/2826)**
    - Skip meta graph JSON embedding to avoid proc-macro2 Span overflow ([`9a94b26`](https://github.com/hydro-project/hydro/commit/9a94b266ad7d4c123bd148da1920e2dca455a7eb))
 * **[#2832](https://github.com/hydro-project/hydro/issues/2832)**
    - Normalize backtrace outputs further due to windows not emitting column numbers [ci-full] ([`31b2161`](https://github.com/hydro-project/hydro/commit/31b2161962e10f5828dab33b6c67fa2edb3db314))
 * **Uncategorized**
    - Release hydro_lang v0.16.0, hydro_std v0.16.0 ([`f96e4d2`](https://github.com/hydro-project/hydro/commit/f96e4d2590875352ad560f79e96dff1a04a4727a))
    - Fix hydro_lang/Cargo.toml wildcard deps for release ([`27a6975`](https://github.com/hydro-project/hydro/commit/27a69758b81159d3ecc064ca74c8d01d66025a0f))
    - Release dfir_pipes v0.0.1, example_test v0.0.1, sinktools v0.1.0, hydro_deploy_integration v0.16.0, lattices_macro v0.6.0, variadics_macro v0.7.0, lattices v0.7.0, multiplatform_test v0.7.0, dfir_rs v0.16.0, copy_span v0.1.1, hydro_deploy v0.16.0, hydro_lang v0.16.0, hydro_std v0.16.0 ([`118b356`](https://github.com/hydro-project/hydro/commit/118b356447d92e778313d72a351e5a8d2814aa1a))
    - Release hydro_build_utils v0.1.0, dfir_lang v0.16.0, dfir_macro v0.16.0, variadics v0.1.0, dfir_pipes v0.0.1, example_test v0.0.1, sinktools v0.1.0, hydro_deploy_integration v0.16.0, lattices_macro v0.6.0, variadics_macro v0.7.0, lattices v0.7.0, multiplatform_test v0.7.0, dfir_rs v0.16.0, copy_span v0.1.1, hydro_deploy v0.16.0, hydro_lang v0.16.0, hydro_std v0.16.0, safety bump 13 crates ([`c20757a`](https://github.com/hydro-project/hydro/commit/c20757ae0e9e10463b2a499de4b7d37ab02269d0))
</details>

<csr-unknown>
Simplify graph visualization pipelineSimplify graph visualization pipelineSummarySuccessfully removed the unused launch! macro fromhydro_lang/src/runtime_support/launch.rs. The macro was verified to becompletely unused throughout the codebase before removal. All testspass, code review found no issues, and formatting has been applied.   <!-- START COPILOT ORIGINAL PROMPT -->
   <details>
   <summary>Original prompt</summary>
This section details on the original issue you should resolve<issue_title>refactor(hydro_lang): remove launch! macro fromhydro_lang/src/runtime_support/launch.rs</issue_title><issue_description>Originally posted by @MingweiSamuel inhttps://github.com/hydro-project/hydro/pull/2495/changes#r2728949747#2495Steps:Comments on the Issue (you are @copilot in this section)<comments>
</comments>
Steps:Comments on the Issue (you are @copilot in this section)<comments>
</comments>
   </details>
   <!-- START COPILOT CODING AGENT SUFFIX -->
   <!-- START COPILOT CODING AGENT TIPS -->
💡 You can make Copilot smarter by setting up custom instructions,customizing its development environment and configuring Model ContextProtocol (MCP) servers. Learn more https://gh.io/copilot-coding-agent-tipsCopilot coding agenttips in the docs.Notebench_client contains an unused variable in sliced! because slicedrequires at least 1 use statement. The error is currently suppressedbut the requirement should probably be removed from sliced?SummarySuccessfully removed the unused launch! macro fromhydro_lang/src/runtime_support/launch.rs. The macro was verified to becompletely unused throughout the codebase before removal. All testspass, code review found no issues, and formatting has been applied.   <!-- START COPILOT ORIGINAL PROMPT -->
   <details>
   <summary>Original prompt</summary>
This section details on the original issue you should resolve<issue_title>refactor(hydro_lang): remove launch! macro fromhydro_lang/src/runtime_support/launch.rs</issue_title><issue_description>Originally posted by @MingweiSamuel inhttps://github.com/hydro-project/hydro/pull/2495/changes#r2728949747#2495Steps:Comments on the Issue (you are @copilot in this section)<comments>
</comments>
Steps:Comments on the Issue (you are @copilot in this section)<comments>
</comments>
Steps:Comments on the Issue (you are @copilot in this section)<comments>
</comments>
   </details>
   <!-- START COPILOT CODING AGENT SUFFIX -->
   <!-- START COPILOT CODING AGENT TIPS -->
💡 You can make Copilot smarter by setting up custom instructions,customizing its development environment and configuring Model ContextProtocol (MCP) servers. Learn more https://gh.io/copilot-coding-agent-tipsCopilot coding agenttips in the docs.Notebench_client contains an unused variable in sliced! because slicedrequires at least 1 use statement. The error is currently suppressedbut the requirement should probably be removed from sliced?Notebench_client contains an unused variable in sliced! because slicedrequires at least 1 use statement. The error is currently suppressedbut the requirement should probably be removed from sliced?SummarySwitched hex_literal_case from "Lower" to "Upper" inrustfmt.toml and ran cargo +nightly fmt to reformat the codebase,since agents tend to prefer uppercase hex literals.SummarySwitched hex_literal_case from "Lower" to "Upper" inrustfmt.toml and ran cargo +nightly fmt to reformat the codebase,since agents tend to prefer uppercase hex literals.<csr-unknown/>

## 0.15.0 (2025-11-25)

<csr-id-d22507cf6064e4b9f6a02404d58f644cde3dcf0b/>
<csr-id-623ed9ea41a04b442a44f85208ca51e22fb743b6/>
<csr-id-bcef0557add258930a76900d6f2ce641c7f9b148/>
<csr-id-efce466bd1704e8a80c7bdce31c798eba9b2fea1/>
<csr-id-8f6c478b774c017b5d3fdbf2beea3d9427e04a03/>
<csr-id-4922300dbdd3a5290e8251a8e5c9eda4291fdb01/>
<csr-id-879b249c9e84c74befb11b7e3cab157d52eb7c23/>
<csr-id-2bca9dbfe48a0f1ec46aabeeca0242475396607c/>
<csr-id-c18fa3525afa9998adf721f7deaa982ef758fffa/>
<csr-id-e84bd8083b5df395adedc6b4115dd2f33ce84865/>
<csr-id-fabb3ccfc1365a9f94ce310b3a29684a18c73e50/>
<csr-id-97426b8a7e3b3af8a58b4c44c768c3f48cd0ed71/>
<csr-id-e9ee6cfad870c54c05e9dccc45bdbfdb43aea362/>
<csr-id-891a25d3f72b2fa10a5154940624a146bb460ed7/>
<csr-id-a65893a65bc43cb13c516c95a8d86ad424446565/>
<csr-id-0abd1ce44df16353047a416b235aa79f070ace2c/>
<csr-id-10f5948a95651a19245be188abc0783d9431d8a7/>
<csr-id-1fbd6e05d782388aa3542023b685172e6275baf8/>
<csr-id-0e2698dd4e070951dbda6f87bbfbeee3044fea22/>
<csr-id-a4bdf399f90581f409c89a72ae960405998fb33b/>
<csr-id-cea261dd8b585a3c30a889650c1aa29ed0d54ad9/>
<csr-id-224b2db7dc7e7c5cbd4c6ce024e0410957ce6747/>
<csr-id-1f5826d52cc2db0efebc4a1f76cc3792e5dab04d/>
<csr-id-aff7be602f35d12f910eb559a89b17421e448844/>
<csr-id-6675bcaeb61152115a9bca3e009db217c42f72cf/>
<csr-id-fc67ee7b66a554a5041495d36912c31974eb34e4/>
<csr-id-584ebf1a6400953fcbd41b53c22483ecf5d81638/>
<csr-id-790d526bb608c9022cacac0a528a56e3ccf53bf2/>
<csr-id-f829a6ac160055b2879e532095923b7dcc970352/>
<csr-id-920d9a394223a218ccbc077de61e2135886a2b15/>
<csr-id-e842c25b32df6a09f8507e7530b7be3a963e1ea0/>
<csr-id-6b4eafe07b5739581fd9d17364893ef823b8a6dc/>
<csr-id-cfc73d9cd100a92192481b0f5612398b8b8fea76/>
<csr-id-0be5729dd87a91a70001f88283b380d3da8df7d0/>
<csr-id-1688bc9c21ae54bf8ae3813824c49aa9819d886b/>
<csr-id-1ac529525ae9ac4ac47575787d436e9513d8c0aa/>
<csr-id-868b00e0ab1fba4934cecd879e4c7481c04c13dc/>
<csr-id-09ff1816be22fee9498ecd5f9b9e59109c31b2bf/>
<csr-id-de04ee7eb7c9917f302fc22c362319b58ecf913b/>
<csr-id-ea25d65f7167193f3ec485950730e8e62606f58b/>
<csr-id-057192afde1373caedbbfc24516c28a96d12928c/>
<csr-id-1c135152168c95199f887a8e6d619b12efbcf067/>
<csr-id-caffe98b371f3887db0e19b0a3aba2fb1b4418dd/>
<csr-id-def348cfcba4b01b308c5eeed81ba4d9e0384fd8/>
<csr-id-2e2cd770fd18cd219ec1acdd2c74d46a5ee1b2de/>
<csr-id-dc170e63f62e890bfd0dd054e5a930607fd67545/>
<csr-id-b92fcd6552d7d278ebbc14deb2f35e93f30bb636/>
<csr-id-6ec4299e25f7e9bd9e564a1c75d6f74e33c8c619/>
<csr-id-ee3cd96ed2c482c0ff97df8cc4276ef150da6a20/>
<csr-id-b256cba932a8d6d7a6be7b1c98c2f8c20b299375/>
<csr-id-fa4e9d9914ed52aa5a7237c32a0dc57d713ec14a/>
<csr-id-bd2ccb680f335a9a01264eda658c8f0e39215c49/>
<csr-id-a4d8af603e6ad14659d1d43ca168495c883a58eb/>
<csr-id-5778e00be619c4bfb913a39080adabb71a48a0f7/>
<csr-id-537309f9aac44498aa617c8517fdbc21616cbebf/>
<csr-id-13726f66e8befbe8c0aa808ef33be8622656467e/>
<csr-id-5f8a4da212eba8b673f9c7a464c9e92d7c0602cd/>
<csr-id-69754b503dc9ac32e8f9ec6fb14a0fac4f8930ce/>
<csr-id-4bf1c05583c838e7e4d183382fd72743402f889d/>
<csr-id-f71194766394e51791872291b46c86655c318bc8/>
<csr-id-3d4bee4cfd19a57ea6f2dcfb161a48ad2ebd5255/>
<csr-id-27167e54b6ad04ba5ad7cc08d2ef4060d30e99ff/>
<csr-id-05145bf191bf0fcc794d282c3b18c0bd378a20ac/>
<csr-id-4925e2c77a8e57d45d200c98a31859571a04d150/>
<csr-id-7a80803561f1fc423e8e7872ce18718f261a0c1c/>
<csr-id-b786c0f82f4f14e7285f1e2f5797e1e65dbc8a3d/>
<csr-id-628c1c870f1833dd05b3f57ee3e2e1235183cecb/>
<csr-id-1c26bc7899f29cb5b75446381ac5545f7ce017d8/>
<csr-id-381be86c8729403d60575bbd7297b852b6b09ec0/>
<csr-id-0fa650ab2e6cae0d7cce08ef63266544767f68a0/>
<csr-id-804f9955dfc9ea64cb0f5177bcda5b9347fafe80/>
<csr-id-97b879db93081b9dda3eecc834d06b55e5636030/>
<csr-id-1a344a98fce99d004e0ba86a67c7509d807c37bb/>

### Documentation

 - <csr-id-aaa0ec1f9e6e359faec8ad8ecd304bdd637e348f/> single counter tutorial and prepare code for later tutorials
 - <csr-id-3fd84aa8812fa027db293727d8e304708db66916/> new template and walkthrough
 - <csr-id-48c42c58d85273d6267dd84a4dd80b05a9b846bb/> remaining `Optional`-specific APIs
 - <csr-id-e456e66c1f0641c88909a54fe4b4c239337069d1/> `Stream::persist` rustdoc
 - <csr-id-8f21a256e22f46f3a1e93233284a848ec4019066/> remaining `KeyedSingleton`-specific APIs
   Will document all the `defer_tick`s in a separate PR.
 - <csr-id-c3fcaab754ec185ad7a0f1a5b476d909908ba20a/> start on docs for `KeyedSingleton`
 - <csr-id-38993338dc36378c5ff025ab4b19020ff6817c36/> `Singleton/Optional::into_stream`
 - <csr-id-7633b239c55f4d6bf91db70cda8a86839d0781c6/> `Singleton/Optional::all_ticks*`
 - <csr-id-b067f84b91c217b41504dfc79b52c5ceb48dcd5d/> `Singleton/Optional::latest*` and `ZipResult`
 - <csr-id-1ab3fcc117ba9eb6690054a0aa58d071f323fdde/> `Singleton::zip` and `Optional::zip`
 - <csr-id-fb5baec61063b3064116d17a2c9f62531478f677/> add basic docs around atomics for stream / keyed streams / singleton / optional
 - <csr-id-ce07ec2d9baef0293f9186c335958fdbcc524502/> struct docs for `Singleton` / `Optional`, and polish others
 - <csr-id-2a80162140b1b4a7f6f3e605893c82daff2bd104/> rustdoc for `Stream::collect_vec`
 - <csr-id-84b71ba542de72df877f009cb0c797eb776a0352/> rustdoc for `KeyedStream::chain`
 - <csr-id-947910e104429b66fe1d7a85b06040197a4b19a3/> initial docs for `deploy` module
 - <csr-id-338785e707ab378c086cbf55a49e74dc9fc2b2d5/> avoid rustfmt thrashing
 - <csr-id-a8dedb3d2e9d62a6e6f14a11e902c0bc8af97359/> `runtime_context` module
 - <csr-id-eb049d6a7cd5df5762174d1ab8b7eff286975fa1/> keyed variants of networking APIs, send external
 - <csr-id-520cdd9f4ae21c4b70ed279a56e9acd14c572b06/> polish for networking APIs
 - <csr-id-6c29e98b49b18f5134ca898ee70a4e5a75049d8f/> start on docs for live collections
 - <csr-id-9c69c45d10e7061f45eb648573bd29a9885132d1/> document the `nondet` module
 - <csr-id-31c87e3dc310c89af7d625f64101113332e0cc0d/> add `doc(cfg(...))` annotation for `graph` module
 - <csr-id-3a3cf6e1fcd710677706def1975114954c6be8a1/> docs for `backtrace` module
   Also cleans up the API interface, adds the `colno` field, and a unit
   test showing that we can precisely identify each element of chained
   operators.
 - <csr-id-83c7ff61536c81ea527180411889b9eb643658d1/> docs for `test_util` module
 - <csr-id-5a7049dbedefa6359bcf4e40350591851d93a673/> set up lints so we can find missing docs
 - <csr-id-36951f957ff1f165e84ce7d1dc48c3f1e83caebd/> keyed stream docs
 - <csr-id-0fd3ee774593621144f167ca9942d80ea256bc79/> update crate description

### New Features

 - <csr-id-ca0e0f43a8ef545cc8b403058376d467f3da05da/> add `KeyedStream` APIs for compound keys and sending with keys
   Previously, the only way to send a `KeyedStream` _including_ the keys
   was to get the entries (which would erase the order).
   
   Now, we add APIs to prefix/unprefix the key (prepend a tuple element),
   and then add a `KeyedStream::send_bincode` API that sends the entire set
   of entries with the sender ID prefixed in the return type. We also add
   an inverse `KeyedStream::demux_bincode` where the input keys are a
   compound of `(MemberId, Key)` and the recipient gets a
   `KeyedStream<Key>`.
 - <csr-id-55ebb4e2ea9eb5decff1cb3edbf203f8c23d6f3b/> support `KeyedStream::assume_ordering` inside ticks in simulator
 - <csr-id-98f76cd891a9596f61bf09b1751aa234af3de2d9/> support `Stream::assume_ordering` inside ticks in simulator
 - <csr-id-98b899baa342617bc8634220324849b1067f6233/> add cluster-membership ir node
 - <csr-id-194280baf21d554e2deb3c225ed9fdad197c3db2/> introduce `sliced!` syntax for processing with anonymous ticks
 - <csr-id-22147646f9616095504012176165116fbaa6e203/> add `KeyedStream::cross_singleton`
 - <csr-id-0d41e8c46ba5d6d9555ca37d85d06de28c700dc1/> support batching unordered keyed streams in simulator
 - <csr-id-4a4359495fff0b3cb63ec7909271f7fce443589b/> add `Location::bind_single_client` for bidi single client
 - <csr-id-0c6666bfdcda799f8c835bb7198f7d24e1c1c41d/> support `KeyedSingleton::snapshot` in sim
 - <csr-id-573d30ea8bdb74635d76b46ca13f40a627e427b8/> support batching ordered keyed streams in sim
 - <csr-id-77f138296baeeec2bddebbe0dbde2eb3468b4ea9/> support atomic regions in sim
 - <csr-id-d9b4700ecc0488bf305664078f1054af6bcf17da/> Allow accessing HydroNodes' inputs, assign all HydroNodes (except Placeholder) an ID
 - <csr-id-5eb4bf6aafe41a984936c3eb39c18bdbc875b648/> support Cluster -> Cluster network in sim
 - <csr-id-1e72c212eedd279664cc48823c1b273c9d89a39c/> support Process -> Cluster network in sim
   Also fixes `source_iter` to add type hints in generated DFIR.
 - <csr-id-5222db340b18b5784981180642fe9ade71725819/> support `source_cluster_members` in sim
 - <csr-id-8fda9ef71d6964eff53747df4380510128e0ee00/> support ticks on clusters in sim
 - <csr-id-909f43330b32caf502d2b79100c77f8177a90045/> support Cluster -> Process network in sim
 - <csr-id-855a32ec56c34a0325009e21d6bf8108087ae46e/> support Process -> Process network in sim
 - <csr-id-47061e191d743b2d40ff3bed32198e29b00df85d/> Migrate graph visualization to JSON format with deterministic output and semantic tagging
   ## Summary
   This PR modifies the Hydro JSON graph generation with enhanced semantic
   tagging and improved hierarchy support, to integrate with the
   [Hydroscope](https://github.com/hydro-project/hydroscope) visualizer.
   
   ## Key Changes
   
   ### 1. JSON Format Migration
   - **Replaced** legacy ReactFlow-specific format with generic JSON schema

### 2. Semantic Tagging System
   - **Edges**: `Network/Local`, `Bounded/Unbounded`, `TotalOrder/NoOrder`,
   `Keyed`, collection types (`Stream`, `Singleton`, `Optional`),
   `Persistent`, `Cycle`
   - **Nodes**: Node type tags (Transform, Source, Sink, Network, Handoff,
   etc.)
   - **Cross-location detection**: Automatic `Network` tag for edges
   crossing process/cluster boundaries
   

### 3. Label Handling Improvements
   - **Three label variants**: `label` (config-aware), `shortLabel` (for
   compact UI), `fullLabel` (detailed with context)
   - **Enhanced full labels**: Added contextual descriptions for common
   operators (e.g., "inspect [debug output]")
   - **UI toggle support**: Enables switching between compact and detailed
   labels
   

### 4. Hierarchy Enhancements
   - **Multiple hierarchy options**: Location-based (Process/Cluster) and
   Backtrace-based
   - **Backtrace improvements**: Path deduplication, sorted children,
   stable `bt_N` IDs
   - **Deterministic ordering**: All hierarchies and node assignments
   sorted for consistent output
   

### 5. Hydroscope Renaming
   - **Renamed** ReactFlow references to Hydroscope (the new
   docs-integrated visualizer)
   - **Updated API methods**: `reactflow_string/to_file/to_browser` →
   `hydroscope_string/to_file/to_browser`
   - **Added** new docs page at `/hydroscope` with interactive
   visualization
   

### 6. Test Improvements
   - **New tests**: Deterministic output validation, network tagging
   verification
   - **Refactored tests**: URL generation tests now validate structure
   rather than brittle exact lengths
   - **Enhanced coverage**: Label field presence, semantic tag correctness
   

## Files Changed (36 files, +17,298/-13,354 lines)

### Core Graph Module
   - `hydro_lang/src/graph/json.rs` - New JSON exporter with semantic tags
   and deterministic output (964 lines)
   - `hydro_lang/src/graph/json_test.rs` - Comprehensive test suite (207
   lines)
   - `hydro_lang/src/graph/render.rs` - Enhanced with semantic tagging and
   label variants (716 lines)
   - `hydro_lang/src/graph/debug.rs` - Consolidated graph debugging
   utilities (331 lines)
   - `hydro_lang/src/graph/api.rs` - Updated API for Hydroscope integration
   (91 lines)
   - `hydro_lang/src/graph/reactflow.rs` - **DELETED** (replaced by
   json.rs)
   - `hydro_lang/src/graph/template.html` - **DELETED** (moved to docs
   site)
   - `hydro_lang/src/graph/template.rs` - Minimal template for backward
   compatibility
   

### Documentation

- `docs/src/pages/hydroscope.tsx` - New interactive visualizer page (150
   lines)
- `docs/package.json` - Updated dependencies for visualizer
- `docs/docusaurus.config.js` - Configuration for Hydroscope page
 - <csr-id-0fd3ee774593621144f167ca9942d80ea256bc79/> update crate description
 - <csr-id-36951f957ff1f165e84ce7d1dc48c3f1e83caebd/> keyed stream docs
 - <csr-id-5a7049dbedefa6359bcf4e40350591851d93a673/> set up lints so we can find missing docs
 - <csr-id-83c7ff61536c81ea527180411889b9eb643658d1/> docs for `test_util` module
 - <csr-id-3a3cf6e1fcd710677706def1975114954c6be8a1/> docs for `backtrace` module
   Also cleans up the API interface, adds the `colno` field, and a unit
   test showing that we can precisely identify each element of chained
   operators.
 - <csr-id-31c87e3dc310c89af7d625f64101113332e0cc0d/> add `doc(cfg(...))` annotation for `graph` module
 - <csr-id-9c69c45d10e7061f45eb648573bd29a9885132d1/> document the `nondet` module
 - <csr-id-6c29e98b49b18f5134ca898ee70a4e5a75049d8f/> start on docs for live collections
 - <csr-id-520cdd9f4ae21c4b70ed279a56e9acd14c572b06/> polish for networking APIs
 - <csr-id-eb049d6a7cd5df5762174d1ab8b7eff286975fa1/> keyed variants of networking APIs, send external
 - <csr-id-a8dedb3d2e9d62a6e6f14a11e902c0bc8af97359/> `runtime_context` module
 - <csr-id-338785e707ab378c086cbf55a49e74dc9fc2b2d5/> avoid rustfmt thrashing
 - <csr-id-947910e104429b66fe1d7a85b06040197a4b19a3/> initial docs for `deploy` module
 - <csr-id-84b71ba542de72df877f009cb0c797eb776a0352/> rustdoc for `KeyedStream::chain`
 - <csr-id-2a80162140b1b4a7f6f3e605893c82daff2bd104/> rustdoc for `Stream::collect_vec`
 - <csr-id-ce07ec2d9baef0293f9186c335958fdbcc524502/> struct docs for `Singleton` / `Optional`, and polish others
 - <csr-id-fb5baec61063b3064116d17a2c9f62531478f677/> add basic docs around atomics for stream / keyed streams / singleton / optional
 - <csr-id-1ab3fcc117ba9eb6690054a0aa58d071f323fdde/> `Singleton::zip` and `Optional::zip`
 - <csr-id-b067f84b91c217b41504dfc79b52c5ceb48dcd5d/> `Singleton/Optional::latest*` and `ZipResult`
 - <csr-id-7633b239c55f4d6bf91db70cda8a86839d0781c6/> `Singleton/Optional::all_ticks*`
 - <csr-id-38993338dc36378c5ff025ab4b19020ff6817c36/> `Singleton/Optional::into_stream`
 - <csr-id-c3fcaab754ec185ad7a0f1a5b476d909908ba20a/> start on docs for `KeyedSingleton`
 - <csr-id-8f21a256e22f46f3a1e93233284a848ec4019066/> remaining `KeyedSingleton`-specific APIs
   Will document all the `defer_tick`s in a separate PR.
 - <csr-id-e456e66c1f0641c88909a54fe4b4c239337069d1/> `Stream::persist` rustdoc
 - <csr-id-48c42c58d85273d6267dd84a4dd80b05a9b846bb/> remaining `Optional`-specific APIs
 - <csr-id-3fd84aa8812fa027db293727d8e304708db66916/> new template and walkthrough
 - <csr-id-aaa0ec1f9e6e359faec8ad8ecd304bdd637e348f/> single counter tutorial and prepare code for later tutorials

### API Updates
   - `hydro_lang/src/compile/built.rs` - Renamed methods to use
   `hydroscope_*` prefix
   

### Examples
   - Updated 12 example files with `#[hydro::main]` annotations for graph
   generation
   

### Test

   - ✅ All new tests pass
   - ✅ Deterministic output validated (same graph → identical JSON)
   - ✅ Network tagging verified for cross-location edges
   - ✅ Library builds successfully: `cargo build -p hydro_lang --features
   viz --lib`

## Migration Path
   This PR maintains backward compatibility:
   - Old `BuiltFlow` API methods still available (deprecated internally)
   - Examples updated but old code will continue to work
   - JSON format is generic and can support future visualization tools
   

## Related Issues
   - Fixes issues with non-deterministic graph output
   - Improves graph debugging experience
   - Enables docs-integrated visualization workflow
   

## Checklist
   - [x] Code compiles and tests pass
   - [x] New tests added for deterministic output and semantic tags
   - [x] API method names updated for consistency
   - [x] Documentation page created
   - [x] Examples updated
   
   ---------
 - <csr-id-e9ee6cfad870c54c05e9dccc45bdbfdb43aea362/> support `Stream::count` in simulator
   This also tweaks the behavior of `reduce_commutative_idempotent_trusted`
   to make sure that we simulate different orders of intermediate states
   when the input is unbounded / asynchronous. Right now, we do not
   actually have any tests for this, since we do not support shuffling
   unbounded streams, but this will be supported soon.
 - <csr-id-891a25d3f72b2fa10a5154940624a146bb460ed7/> use dynamically linked libraries in test mode
 - <csr-id-a65893a65bc43cb13c516c95a8d86ad424446565/> share `__staged` across trybuild targets
   Previously, each trybuild target (in test-mode) would have its own copy
   of the `__staged` module containing the entire sources of the original
   crate. This creates a huge compilation burden that is repeated on every
   deployment.
   
   With an accompanying change in Stageleft, we are now able to share the
   `__staged` module in the common `lib.rs`. This also moves the simulation
   dylibs to be compiled as an example so that they do not conflict with
   the caching of the shared `lib.rs`.
   
   Also reduces thrashing due to the lockfile having to be updated after
   each time it is written (because packages have to be removed which were
   needed in the workspace but not the trybuild).
 - <csr-id-0abd1ce44df16353047a416b235aa79f070ace2c/> support singletons in simulator
   The simulator uses a different representation of singletons than
   production, streaming every intermediate state instead of just the final
   value for the current DFIR batch. This lets us simulate all possible
   snapshots when that happens.
   
   To support `Location::singleton`, which (lazily) spins in production, we
   instead introduce a proper `SourceSingleton` IR node which only
   (appropriately) only releases a single item in the simulator.
   
   To simulate snapshots, we have to decide which version of the singleton
   to advance to. This can include "stutters", where the same version is
   released multiple times. To avoid an infinite search space, stutters are
   only allowed when some other input to the tick has made a nontrivial
   decision (one that makes progress consuming its input). Therefore, if
   none of the other inputs make progress, the singleton has to make
   progress.
 - <csr-id-10f5948a95651a19245be188abc0783d9431d8a7/> avoid redundant simulations for ordering within unordered batches
   Previously, we would select elements for the next released batched in
   non-deterministic order. This is unnecessary, because the batch itself
   has `NoOrder` guarantees and so the permutations within the batch are
   redundant.
   
   Reduces instance count from 192 to 75 for
   `sequence_payloads_sequences_all`. To avoid regressions,
   `.sim().exhaustive()` now returns the number of simulation instances,
   which we can verify against a combinatorial formula.
 - <csr-id-1fbd6e05d782388aa3542023b685172e6275baf8/> replay failed simulation instances and show logs
   Previously, a failed simulation would only show the backtrace, and would
   have to be re-run with `HYDRO_SIM_LOG=1` to display the simulation
   steps. This would result in lots of log pollution since logging would
   also be enabled for passing instances.
   
   Now, we've made some tweaks to bolero so that it re-executes the test
   after finding a failing input, passing an `is_replay` flag. We use this
   to enable rich logging, so that the failure is displayed with all the
   simulation steps that led to it.
 - <csr-id-0e2698dd4e070951dbda6f87bbfbeee3044fea22/> ensure sim logs show up in captured stdout/stderr
   When running a sim test with `cargo test`, the stdout / stderr are
   captured. But this capturing mechanism only works for direct calls to
   `println!` and `eprintln!`, so the previous logic to use
   `std::io::eprintln` does not work (and logs are displayed out of order).
   
   To fix this, we change the logger to be a tri-state `LogKind`. If it is
   `LogKind::Stderr`, we directly invoke `eprintln`. We also pass down
   function pointers for `println` and `eprintln` to the staged code, where
   we shadow `std::{println, eprintln, debug}` with macros that call the
   function pointer. This ensures that any logging statements in quoted
   code show up in the right place next to simulator logs.
 - <csr-id-a4bdf399f90581f409c89a72ae960405998fb33b/> add APIs for unordered stream assertions and tests for `collect_quorum`
   AI Disclosure: all the tests were generated using Kiro (!)
   
   Currently, the core functionality test has to be split up into several
   exhaustive units because otherwise the search space becomes too large
   for CI (~400s). Eventually, keyed streams may help but splitting up the
   test is a reasonable short-term fix.
 - <csr-id-cea261dd8b585a3c30a889650c1aa29ed0d54ad9/> sim support for `batch` on unordered streams
 - <csr-id-224b2db7dc7e7c5cbd4c6ce024e0410957ce6747/> deterministic simulator for Hydro programs
   This introduces a deterministic simulator for Hydro that can simulate
   various asynchronous scenarios to identify bugs in code that use
   non-deterministic operators, such as `batch`. This PR focuses on just
   the infrastructure and support for simulating `batch` on a
   totally-ordered, exactly-once stream. Support for additional
   non-deterministic operators will follow in separate PRs (currently, an
   exception is thrown to prevent use of the simulator on programs that use
   such operators).
   
   The simulator's job is to explore the space of potential asynchronous
   executions. Because "top-level" operators guarantee "eventual
   determinism" (per Flo), we do not need to simulate every possible
   interleaving of message arrivals and processing. Instead, we only need
   to simulate sources of non-determinism at the points in the program
   where a user intentionally observes them (such as `batch` or
   `assume_ordering`).
   
   When compiling a Hydro program for the simulator, we emit several DFIR
   programs. One of these is the `async_dfir`, which contains all
   asynchronously executed top-level operators in the Hydro program. Again,
   thanks to Flo semantics, we do not need to simulate the behavior of
   executing these operators on different prefixes of the input, since we
   know that none of the downstream operators change their behavior based
   on the provided prefix (this is somewhat more complicated for unbounded
   singletons, whose intermediate states are affected by the set of
   elements processed in each batch, but we will address this separately).
   
   Because each tick relies on a set of decisions being made to select
   their inputs (`batch`, `snapshot`), we emit each tick's code into a
   separate DFIR graph. The top-level simulator then schedules
   (`LaunchedSim::scheduler`) the async graph and tick graphs by always
   trying to make progress with the async graph first (so that we have the
   full set of possible inputs at each batch boundary), and when the async
   graph cannot make any further progress it selects one of the ticks,
   makes a batching decision for each of its inputs
   (`autonomous_decision`), and then executes the tick.
   
   The selection of which tick to run and which elements to release in each
   batch are driven by a source of non-determinism, which is either:
   a) libfuzzer (if using `.sim().fuzz` and running with `cargo sim`)
   b) a RNG with 8192 iterations (if using `.sim().fuzz` and running with
   `cargo test` and no reproducer is available)
   c) a static input of decisions (if using `.sim().fuzz` and running with
   `cargo test` and a reproducer is available)
   d) an exhaustive, depth-first search algorithm (if using
   `.sim().exhaustive` and running with `cargo test`)
   
   Whenever a fuzzer finds a failure, it stores the sequence of decisions
   that leads to the crash in a `.bin` file as a reproducer, so that we can
   re-execute quickly in testing environments.
   
   Because Hydro uses a staged compilation model, our approach to compiling
   and executing the Hydro program is also a bit unique. Because the fuzzer
   needs to track branch coverage inside the Hydro program to be effective,
   and because we need low-latency interactions between the user assertions
   and the Hydro code, we cannot run the compiled program in a separate
   process. Instead, we compile the Hydro code into a _shared library_ and
   dynamically load it into the host process (which has the testing code).
   The shared library only provides the compiled DFIR graphs, so the
   simulator scheduler runs in the host process to enable low-latency
   switching between the DFIR and testing code.
   
   This PR includes a couple of toy examples testing the simulator's
   functionality. Of particular interest is
   `sim_crash_with_fuzzed_batching`, which takes forever with an exhaustive
   search but quickly finds a failure case with a fuzzer.
 - <csr-id-1f5826d52cc2db0efebc4a1f76cc3792e5dab04d/> capture rich metadata on collection kinds in the IR
 - <csr-id-aff7be602f35d12f910eb559a89b17421e448844/> add support for tick-cycles to `KeyedStream`
 - <csr-id-6675bcaeb61152115a9bca3e009db217c42f72cf/> add `KeyedSingleton::into_singleton`
 - <csr-id-fc67ee7b66a554a5041495d36912c31974eb34e4/> add API for safely broadcasting a stream across several keys
 - <csr-id-584ebf1a6400953fcbd41b53c22483ecf5d81638/> add `flat_map` / `flatten` to `KeyedStream`
 - <csr-id-790d526bb608c9022cacac0a528a56e3ccf53bf2/> Introduce named IR nodes for consistent references
 - <csr-id-f829a6ac160055b2879e532095923b7dcc970352/> ReduceKeyedWatermark operator
   Implemented operator to allow coordination-free garbage collection
   alongside partitioning.
   Will see if fold_commutative() can be avoided
 - <csr-id-920d9a394223a218ccbc077de61e2135886a2b15/> add keyed singletons and optionals to eliminate unsafety in membership tracking
 - <csr-id-e842c25b32df6a09f8507e7530b7be3a963e1ea0/> implement dynamic-client chat example
   Adds missing APIs needed for this example to `KeyedStream` /
   `Singleton`.
 - <csr-id-6b4eafe07b5739581fd9d17364893ef823b8a6dc/> add `KeyedStream` to track steams with unordered keys but possibly-ordered values
   Previously, we would represent all key-value pairs as just a `Stream<(K,
   V)>`. When receiving data from multiple sources, such as external
   clients, this would result in interleaved `(ID, T)` pairs all smooshed
   into a single stream.
   
   Because the interleaving is non-deterministic, the strongest type we
   could correctly give to this stream is `NoOrder`, which fails to capture
   that _within_ each key, the elements might be totally ordered. This
   introduces a new live collection type `KeyedStream`, where the stream
   markers apply only to elements within each key group, rather than across
   all elements (keys are assumed to have no order). This allows us to
   capture common request-response patterns with IDs without requiring any
   unsafe code.
 - <csr-id-cfc73d9cd100a92192481b0f5612398b8b8fea76/> add `Stream::scan_keyed` and `Stream::fold_keyed_early_stop`
   In preparation for a keyed variant of `Stream` that allows richer
   reasoning about interleaved ordering, we add a keyed variant of scan and
   a keyed variant of fold that are suitable for unbounded streams.
   
   The latter is particularly interesting, as it allows an
   early-termination (inspired by Free Termination) to yield folded results
   (since without early termination, we can never yield anything if the
   input is unbounded). With this operator, the entire HTTP example is
   key-able which will eventually let us get rid of the `unsafe` blocks
   surrounding it.

### Bug Fixes

 - <csr-id-2b0c4d829d81312b546d9b0af8ab0158a2a678a6/> move KeyedStream trait constraints from impl to methods
   Moves K: Eq + Hash constraints from impl block where clauses to
   individual method where clauses in KeyedStream.
 - <csr-id-80274315e135fc6b87d50e3111821329eb9e2ef2/> don't reference dfir_rs in deploy_runtime
 - <csr-id-fd8d59dcad4a2cf576a3948e4ea03f03bf216a3f/> improve quality of sim assertion backtraces
 - <csr-id-6dcd1177d89c70dd7353e48a975532607ad3add0/> fix URL to hydroscope
   remove `/docs` from the path, should just be
   `https://hydro.run/hydroscope`.
 - <csr-id-f0acd7cb0e60d163c9e5a7c053ebdba995c8f289/> fix full path replacement for staged code errors
 - <csr-id-6c11dc10acd7499eb6373a12c3a516a42b3c9551/> fixup feature usage
 - <csr-id-7a072b11d59473d9971f9c866e9f6748985218c0/> fix type inference failure when simulating non-atomic keyed singleton
 - <csr-id-629ca7042094b3d3d43ea04a3da30034dd5cc2f5/> avoid `sim_fuzzer` test overwriting fuzz reproducer
   minor and helpful to prevent snaps from diverging
 - <csr-id-48fa7f81cec70c829c3b92c36eda82ac94fe6e5c/> fix import in `runtime_context` test
 - <csr-id-3ebe9c790b49f4fa3c26c6f707b6b46069170dc1/> Update default visualizer base URL in config
 - <csr-id-0901fdc3aafabaab2a88047a7df08393ee7b2205/> properly map from external keys to raw ports in sim
   We were getting lucky earlier that the key was the same as the raw port.
   This fixes the connection logic to properly handle the keyed lookup.
 - <csr-id-807eb0afe3f5fcbec573959b5e4323f762cebe6e/> make `cargo sim` fuzzing command work again [ci-full]
   Accidentally broken when we moved to sharing the trybuild-lib as a
   dylib.
 - <csr-id-6d2e7d05102c79e75e410804988b8a4b3b563aea/> simulator on Windows and test macOS in CI [ci-full]
   Now that we have a bunch of platform-specific bits for dynamic
   libraries, we should test all our supported dev platforms.
 - <csr-id-4687ce56791cf749bcc1ead0472d938b3ecf485a/> fix `bidi_external_many_bytes` compilation and add example tests
 - <csr-id-b59e30d2589eede7f1edbd4893ea8d945ebe4c46/> ensure that `Stream::scan` actually remembers state with unbounded input
 - <csr-id-1b818e321805f3134b66359fc0a6c70599a71422/> update backtrace snapshots for Rust 1.90 and remove unused types
   The line number of `core::ops::function::FnOnce::call_once` in the
   standard library changed.
 - <csr-id-882fd1e5ced68a252e0c3746cb6e2aced3651c07/> avoid unused warnings in trybuild compilation
 - <csr-id-c40876ec4bd3b31254d683e479b9a235f3d11f67/> refactor github actions workflows, make stable the default toolchain

### Documentation (BREAKING)

 - <csr-id-03afe4b20879d0a6aefc5e3eeac29339cb49d599/> `*::defer_tick` rustdoc, remove `Singleton::defer_tick`
 - <csr-id-1af3a666b1d0787f0c023411b7f88ad3f8da5423/> add docs for `for_each` / `dest_sink`, restrict to strict streams
   Breaking Change: `for_each` / `dest_sink` now require a totally-ordered,
   retry-free stream since the downstream may not tolerate such
   non-determinism. This helps highlight cases where the developer needs to
   reason carefully about the safety of their side effects.
 - <csr-id-2cb21e533dbc109d061812decb673e878e20cb8d/> more stream network APIs, privatize internals

### New Features (BREAKING)

 - <csr-id-6b1d66aa61056ffb4dd2896e98288489e64d654f/> add specialized `sim_input` / `sim_output` to reduce simulation boilerplate
 - <csr-id-5579acd1c7101a3f14c49236e1933398de0f0958/> cluster member ids are now clone instead of copy
   This is part one of a series of changes. The first part just changes
   MemberIds from being Copy to Clone, so that they can later support more
   use cases.
 - <csr-id-a15797058950245d9eb762d885d35e5326bcf8b3/> restrict `KeyedSingleton` to not allow asynchronous key removal
   Previously, `KeyedSingleton` supported `filter` on unbounded collections
   and `latest` to yield snapshots from a tick. Both of these APIs are
   problematic because they let developers asynchronously remove elements
   from the collection, which goes against the "Singleton" naming. We have
   reasonable alternatives for all these use-sites, so remove for now to
   minimize the semantic complexity (also for the simulator).
   
   Eventually, we will want to bring back `KeyedOptional` which permits
   such asynchronous removal.
 - <csr-id-e535156ceb7e83550b68a6ae6b5e925f57f1882f/> add `Ordering` and `Retries` traits with basic axioms
   Reduces the need to use `nondet!` inside broadcast APIs, and also
   prepares us for graph viz metadata by requiring these traits to be
   implemented for the type parameters in `Stream` / `KeyedStream`.
 - <csr-id-eadd7d0cfcbdc312bf336b8aec961f6d421c6551/> refine types when values of a `KeyedSingleton` are immutable
   There are many cases where once a value is released into a
   `KeyedSingleton`, it will never be changes. In such cases, we can permit
   APIs like `.entries` even if the set of entries is growing.
   
   We use this type to improve the API surface for looking up values for a
   request. Now, a `KeyedSingleton` of requests can look up values from
   another `KeyedSingleton`.
 - <csr-id-f9f5317b151bae78a0afdc5440c182f4dd091c67/> start adding APIs for various forms of keyed streams "joins", add KVS counter server
   Also fixes incorrect output metadata for `KeyedStream::fold`, and
   removes `KeyedSingleton::all_ticks` for now until we a) actually need it
   and b) can think carefully about its semantics.
 - <csr-id-1bb22625bf51c08620304624e0195ecbfbcb1371/> expose a stream of membership events for bidi externals
 - <csr-id-5d40134fbd4a82a2ee8b24b02b52abd506880435/> introduce support for dynamic external clients
   So far, Hydro has only supported deployments where there is a statically
   known number of single-connection external clients for sending /
   receiving data. This is not practical in production applications where
   external users will dynamically connect to the Hydro service.
   
   This takes the first step towards addressing this, by setting up the
   networking mechanism for handling dynamically connected clients and
   adding an API for sending/receiving data.
   
   This also changes the `source_external_bytes` APIs to return the raw
   `BytesMut` sent over the network, rather than adding a freezing step.
   
   Finally, we show an end-to-end example using this interface to write a
   simple HTTP server.

### Bug Fixes (BREAKING)

 - <csr-id-21ce30cdd04a25bf4a67e00ec16e592183748bf4/> fix cardinality for `Optional::or`
   Using `HydroNode::Chain` is very dangerous for singletons / optionals,
   because it can lead to cardinality > 1 within a single batch, which
   breaks a fundamental invariant.
   
   This introduces a new `HydroNode::ChainFirst` operator that only emits
   the first value from the chain. This is paired with a new DFIR operator
   `chain_first` for this behavior.
   
   We also rewrite some `Singleton` logic to use `Optional` under the hood,
   which reduces the places where we deal with chaining in the IR,
   hopefully avoiding future incidents.
 - <csr-id-0150a0559dee5d1fe10356f366e01915345db1b4/> introduce `generator` API and ensure that `fold_early_stop` actually terminates
   Previously, `fold_early_stop` would _reset_ its state instead of
   terminating and ignoring future elements, which broke downstream users
   such as `first`.
   
   Now, we introduce a new `generate` API that offers a more flexible API
   (versus scan) for iterative processing that yields elements, and use it
   to implement `fold_early_stop`, which fixes the bugs. We also remove the
   old `scan_keyed` API in favor of `KeyedStream::scan`.
   
   There is still an issue that the `None` value for each group's generator
   state will be kept around indefninitely. We will need to pass around
   termination markers for each group to garbage collect these.

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 153 commits contributed to the release.
 - 117 days passed between releases.
 - 150 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 150 unique issues were worked on: [#1957](https://github.com/hydro-project/hydro/issues/1957), [#1966](https://github.com/hydro-project/hydro/issues/1966), [#1971](https://github.com/hydro-project/hydro/issues/1971), [#1974](https://github.com/hydro-project/hydro/issues/1974), [#1975](https://github.com/hydro-project/hydro/issues/1975), [#1978](https://github.com/hydro-project/hydro/issues/1978), [#1979](https://github.com/hydro-project/hydro/issues/1979), [#1981](https://github.com/hydro-project/hydro/issues/1981), [#1982](https://github.com/hydro-project/hydro/issues/1982), [#1983](https://github.com/hydro-project/hydro/issues/1983), [#1984](https://github.com/hydro-project/hydro/issues/1984), [#1985](https://github.com/hydro-project/hydro/issues/1985), [#1990](https://github.com/hydro-project/hydro/issues/1990), [#1992](https://github.com/hydro-project/hydro/issues/1992), [#1996](https://github.com/hydro-project/hydro/issues/1996), [#2011](https://github.com/hydro-project/hydro/issues/2011), [#2016](https://github.com/hydro-project/hydro/issues/2016), [#2024](https://github.com/hydro-project/hydro/issues/2024), [#2026](https://github.com/hydro-project/hydro/issues/2026), [#2028](https://github.com/hydro-project/hydro/issues/2028), [#2032](https://github.com/hydro-project/hydro/issues/2032), [#2033](https://github.com/hydro-project/hydro/issues/2033), [#2042](https://github.com/hydro-project/hydro/issues/2042), [#2047](https://github.com/hydro-project/hydro/issues/2047), [#2049](https://github.com/hydro-project/hydro/issues/2049), [#2050](https://github.com/hydro-project/hydro/issues/2050), [#2053](https://github.com/hydro-project/hydro/issues/2053), [#2056](https://github.com/hydro-project/hydro/issues/2056), [#2058](https://github.com/hydro-project/hydro/issues/2058), [#2060](https://github.com/hydro-project/hydro/issues/2060), [#2063](https://github.com/hydro-project/hydro/issues/2063), [#2065](https://github.com/hydro-project/hydro/issues/2065), [#2066](https://github.com/hydro-project/hydro/issues/2066), [#2067](https://github.com/hydro-project/hydro/issues/2067), [#2068](https://github.com/hydro-project/hydro/issues/2068), [#2069](https://github.com/hydro-project/hydro/issues/2069), [#2071](https://github.com/hydro-project/hydro/issues/2071), [#2072](https://github.com/hydro-project/hydro/issues/2072), [#2073](https://github.com/hydro-project/hydro/issues/2073), [#2074](https://github.com/hydro-project/hydro/issues/2074), [#2075](https://github.com/hydro-project/hydro/issues/2075), [#2076](https://github.com/hydro-project/hydro/issues/2076), [#2078](https://github.com/hydro-project/hydro/issues/2078), [#2079](https://github.com/hydro-project/hydro/issues/2079), [#2081](https://github.com/hydro-project/hydro/issues/2081), [#2082](https://github.com/hydro-project/hydro/issues/2082), [#2085](https://github.com/hydro-project/hydro/issues/2085), [#2092](https://github.com/hydro-project/hydro/issues/2092), [#2093](https://github.com/hydro-project/hydro/issues/2093), [#2094](https://github.com/hydro-project/hydro/issues/2094), [#2095](https://github.com/hydro-project/hydro/issues/2095), [#2096](https://github.com/hydro-project/hydro/issues/2096), [#2097](https://github.com/hydro-project/hydro/issues/2097), [#2098](https://github.com/hydro-project/hydro/issues/2098), [#2099](https://github.com/hydro-project/hydro/issues/2099), [#2100](https://github.com/hydro-project/hydro/issues/2100), [#2101](https://github.com/hydro-project/hydro/issues/2101), [#2102](https://github.com/hydro-project/hydro/issues/2102), [#2103](https://github.com/hydro-project/hydro/issues/2103), [#2104](https://github.com/hydro-project/hydro/issues/2104), [#2105](https://github.com/hydro-project/hydro/issues/2105), [#2106](https://github.com/hydro-project/hydro/issues/2106), [#2107](https://github.com/hydro-project/hydro/issues/2107), [#2108](https://github.com/hydro-project/hydro/issues/2108), [#2111](https://github.com/hydro-project/hydro/issues/2111), [#2112](https://github.com/hydro-project/hydro/issues/2112), [#2114](https://github.com/hydro-project/hydro/issues/2114), [#2115](https://github.com/hydro-project/hydro/issues/2115), [#2116](https://github.com/hydro-project/hydro/issues/2116), [#2117](https://github.com/hydro-project/hydro/issues/2117), [#2118](https://github.com/hydro-project/hydro/issues/2118), [#2120](https://github.com/hydro-project/hydro/issues/2120), [#2122](https://github.com/hydro-project/hydro/issues/2122), [#2123](https://github.com/hydro-project/hydro/issues/2123), [#2124](https://github.com/hydro-project/hydro/issues/2124), [#2125](https://github.com/hydro-project/hydro/issues/2125), [#2126](https://github.com/hydro-project/hydro/issues/2126), [#2127](https://github.com/hydro-project/hydro/issues/2127), [#2129](https://github.com/hydro-project/hydro/issues/2129), [#2131](https://github.com/hydro-project/hydro/issues/2131), [#2136](https://github.com/hydro-project/hydro/issues/2136), [#2137](https://github.com/hydro-project/hydro/issues/2137), [#2140](https://github.com/hydro-project/hydro/issues/2140), [#2144](https://github.com/hydro-project/hydro/issues/2144), [#2145](https://github.com/hydro-project/hydro/issues/2145), [#2146](https://github.com/hydro-project/hydro/issues/2146), [#2148](https://github.com/hydro-project/hydro/issues/2148), [#2149](https://github.com/hydro-project/hydro/issues/2149), [#2150](https://github.com/hydro-project/hydro/issues/2150), [#2151](https://github.com/hydro-project/hydro/issues/2151), [#2156](https://github.com/hydro-project/hydro/issues/2156), [#2158](https://github.com/hydro-project/hydro/issues/2158), [#2164](https://github.com/hydro-project/hydro/issues/2164), [#2168](https://github.com/hydro-project/hydro/issues/2168), [#2169](https://github.com/hydro-project/hydro/issues/2169), [#2170](https://github.com/hydro-project/hydro/issues/2170), [#2171](https://github.com/hydro-project/hydro/issues/2171), [#2172](https://github.com/hydro-project/hydro/issues/2172), [#2173](https://github.com/hydro-project/hydro/issues/2173), [#2180](https://github.com/hydro-project/hydro/issues/2180), [#2181](https://github.com/hydro-project/hydro/issues/2181), [#2183](https://github.com/hydro-project/hydro/issues/2183), [#2184](https://github.com/hydro-project/hydro/issues/2184), [#2187](https://github.com/hydro-project/hydro/issues/2187), [#2188](https://github.com/hydro-project/hydro/issues/2188), [#2190](https://github.com/hydro-project/hydro/issues/2190), [#2192](https://github.com/hydro-project/hydro/issues/2192), [#2194](https://github.com/hydro-project/hydro/issues/2194), [#2196](https://github.com/hydro-project/hydro/issues/2196), [#2204](https://github.com/hydro-project/hydro/issues/2204), [#2205](https://github.com/hydro-project/hydro/issues/2205), [#2209](https://github.com/hydro-project/hydro/issues/2209), [#2210](https://github.com/hydro-project/hydro/issues/2210), [#2211](https://github.com/hydro-project/hydro/issues/2211), [#2212](https://github.com/hydro-project/hydro/issues/2212), [#2213](https://github.com/hydro-project/hydro/issues/2213), [#2214](https://github.com/hydro-project/hydro/issues/2214), [#2215](https://github.com/hydro-project/hydro/issues/2215), [#2216](https://github.com/hydro-project/hydro/issues/2216), [#2217](https://github.com/hydro-project/hydro/issues/2217), [#2218](https://github.com/hydro-project/hydro/issues/2218), [#2219](https://github.com/hydro-project/hydro/issues/2219), [#2225](https://github.com/hydro-project/hydro/issues/2225), [#2227](https://github.com/hydro-project/hydro/issues/2227), [#2229](https://github.com/hydro-project/hydro/issues/2229), [#2231](https://github.com/hydro-project/hydro/issues/2231), [#2243](https://github.com/hydro-project/hydro/issues/2243), [#2246](https://github.com/hydro-project/hydro/issues/2246), [#2247](https://github.com/hydro-project/hydro/issues/2247), [#2253](https://github.com/hydro-project/hydro/issues/2253), [#2255](https://github.com/hydro-project/hydro/issues/2255), [#2256](https://github.com/hydro-project/hydro/issues/2256), [#2257](https://github.com/hydro-project/hydro/issues/2257), [#2261](https://github.com/hydro-project/hydro/issues/2261), [#2262](https://github.com/hydro-project/hydro/issues/2262), [#2265](https://github.com/hydro-project/hydro/issues/2265), [#2272](https://github.com/hydro-project/hydro/issues/2272), [#2273](https://github.com/hydro-project/hydro/issues/2273), [#2279](https://github.com/hydro-project/hydro/issues/2279), [#2283](https://github.com/hydro-project/hydro/issues/2283), [#2287](https://github.com/hydro-project/hydro/issues/2287), [#2288](https://github.com/hydro-project/hydro/issues/2288), [#2289](https://github.com/hydro-project/hydro/issues/2289), [#2295](https://github.com/hydro-project/hydro/issues/2295), [#2296](https://github.com/hydro-project/hydro/issues/2296), [#2298](https://github.com/hydro-project/hydro/issues/2298), [#2304](https://github.com/hydro-project/hydro/issues/2304), [#2306](https://github.com/hydro-project/hydro/issues/2306), [#2313](https://github.com/hydro-project/hydro/issues/2313), [#2319](https://github.com/hydro-project/hydro/issues/2319)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1957](https://github.com/hydro-project/hydro/issues/1957)**
    - ReduceKeyedWatermark operator ([`f829a6a`](https://github.com/hydro-project/hydro/commit/f829a6ac160055b2879e532095923b7dcc970352))
 * **[#1966](https://github.com/hydro-project/hydro/issues/1966)**
    - Introduce support for dynamic external clients ([`5d40134`](https://github.com/hydro-project/hydro/commit/5d40134fbd4a82a2ee8b24b02b52abd506880435))
 * **[#1971](https://github.com/hydro-project/hydro/issues/1971)**
    - Add `Stream::scan_keyed` and `Stream::fold_keyed_early_stop` ([`cfc73d9`](https://github.com/hydro-project/hydro/commit/cfc73d9cd100a92192481b0f5612398b8b8fea76))
 * **[#1974](https://github.com/hydro-project/hydro/issues/1974)**
    - Add `KeyedStream` to track steams with unordered keys but possibly-ordered values ([`6b4eafe`](https://github.com/hydro-project/hydro/commit/6b4eafe07b5739581fd9d17364893ef823b8a6dc))
 * **[#1975](https://github.com/hydro-project/hydro/issues/1975)**
    - Simplify networking APIs according to Process/Cluster types ([`1a344a9`](https://github.com/hydro-project/hydro/commit/1a344a98fce99d004e0ba86a67c7509d807c37bb))
 * **[#1978](https://github.com/hydro-project/hydro/issues/1978)**
    - Remove unnecessary `ConnectedSourceSink` trait ([`97b879d`](https://github.com/hydro-project/hydro/commit/97b879db93081b9dda3eecc834d06b55e5636030))
 * **[#1979](https://github.com/hydro-project/hydro/issues/1979)**
    - Update crate description ([`0fd3ee7`](https://github.com/hydro-project/hydro/commit/0fd3ee774593621144f167ca9942d80ea256bc79))
 * **[#1981](https://github.com/hydro-project/hydro/issues/1981)**
    - Expose a stream of membership events for bidi externals ([`1bb2262`](https://github.com/hydro-project/hydro/commit/1bb22625bf51c08620304624e0195ecbfbcb1371))
 * **[#1982](https://github.com/hydro-project/hydro/issues/1982)**
    - Implement dynamic-client chat example ([`e842c25`](https://github.com/hydro-project/hydro/commit/e842c25b32df6a09f8507e7530b7be3a963e1ea0))
 * **[#1983](https://github.com/hydro-project/hydro/issues/1983)**
    - Add keyed singletons and optionals to eliminate unsafety in membership tracking ([`920d9a3`](https://github.com/hydro-project/hydro/commit/920d9a394223a218ccbc077de61e2135886a2b15))
 * **[#1984](https://github.com/hydro-project/hydro/issues/1984)**
    - Remove uses of legacy `*_keyed` APIs ([`2e2cd77`](https://github.com/hydro-project/hydro/commit/2e2cd770fd18cd219ec1acdd2c74d46a5ee1b2de))
 * **[#1985](https://github.com/hydro-project/hydro/issues/1985)**
    - Keyed stream docs ([`36951f9`](https://github.com/hydro-project/hydro/commit/36951f957ff1f165e84ce7d1dc48c3f1e83caebd))
 * **[#1990](https://github.com/hydro-project/hydro/issues/1990)**
    - Nondet instead of unsafe, snapshot instead of latest_tick, batch instead of tick_batch ([`804f995`](https://github.com/hydro-project/hydro/commit/804f9955dfc9ea64cb0f5177bcda5b9347fafe80))
 * **[#1992](https://github.com/hydro-project/hydro/issues/1992)**
    - Rename `Stream::union` to `Stream::interleave` and reduce local non-determinism ([`0fa650a`](https://github.com/hydro-project/hydro/commit/0fa650ab2e6cae0d7cce08ef63266544767f68a0))
 * **[#1996](https://github.com/hydro-project/hydro/issues/1996)**
    - Start adding APIs for various forms of keyed streams "joins", add KVS counter server ([`f9f5317`](https://github.com/hydro-project/hydro/commit/f9f5317b151bae78a0afdc5440c182f4dd091c67))
 * **[#2011](https://github.com/hydro-project/hydro/issues/2011)**
    - Remove `KeyedOptional` ([`381be86`](https://github.com/hydro-project/hydro/commit/381be86c8729403d60575bbd7297b852b6b09ec0))
 * **[#2016](https://github.com/hydro-project/hydro/issues/2016)**
    - Adjust cluster membership APIs to allow dynamic clusters ([`1c26bc7`](https://github.com/hydro-project/hydro/commit/1c26bc7899f29cb5b75446381ac5545f7ce017d8))
 * **[#2024](https://github.com/hydro-project/hydro/issues/2024)**
    - Update pinned nightly to 2025-08-20, fix lints ([`97426b8`](https://github.com/hydro-project/hydro/commit/97426b8a7e3b3af8a58b4c44c768c3f48cd0ed71))
 * **[#2026](https://github.com/hydro-project/hydro/issues/2026)**
    - Introduce named IR nodes for consistent references ([`790d526`](https://github.com/hydro-project/hydro/commit/790d526bb608c9022cacac0a528a56e3ccf53bf2))
 * **[#2028](https://github.com/hydro-project/hydro/issues/2028)**
    - Refactor github actions workflows, make stable the default toolchain ([`c40876e`](https://github.com/hydro-project/hydro/commit/c40876ec4bd3b31254d683e479b9a235f3d11f67))
 * **[#2032](https://github.com/hydro-project/hydro/issues/2032)**
    - Rename `ClusterId` to `MemberId` ([`628c1c8`](https://github.com/hydro-project/hydro/commit/628c1c870f1833dd05b3f57ee3e2e1235183cecb))
 * **[#2033](https://github.com/hydro-project/hydro/issues/2033)**
    - Refine types when values of a `KeyedSingleton` are immutable ([`eadd7d0`](https://github.com/hydro-project/hydro/commit/eadd7d0cfcbdc312bf336b8aec961f6d421c6551))
 * **[#2042](https://github.com/hydro-project/hydro/issues/2042)**
    - Rename `HydroLeaf` => `HydroRoot`, split out metadata struct for roots ([`b786c0f`](https://github.com/hydro-project/hydro/commit/b786c0f82f4f14e7285f1e2f5797e1e65dbc8a3d))
 * **[#2047](https://github.com/hydro-project/hydro/issues/2047)**
    - Share `HydroIrOpMetadata` between roots and nodes ([`def348c`](https://github.com/hydro-project/hydro/commit/def348cfcba4b01b308c5eeed81ba4d9e0384fd8))
 * **[#2049](https://github.com/hydro-project/hydro/issues/2049)**
    - Set up lints so we can find missing docs ([`5a7049d`](https://github.com/hydro-project/hydro/commit/5a7049dbedefa6359bcf4e40350591851d93a673))
 * **[#2050](https://github.com/hydro-project/hydro/issues/2050)**
    - Docs for `test_util` module ([`83c7ff6`](https://github.com/hydro-project/hydro/commit/83c7ff61536c81ea527180411889b9eb643658d1))
 * **[#2053](https://github.com/hydro-project/hydro/issues/2053)**
    - Rename `graph_util` => `graph::config` ([`7a80803`](https://github.com/hydro-project/hydro/commit/7a80803561f1fc423e8e7872ce18718f261a0c1c))
 * **[#2056](https://github.com/hydro-project/hydro/issues/2056)**
    - Update nightly snapshots ([`fabb3cc`](https://github.com/hydro-project/hydro/commit/fabb3ccfc1365a9f94ce310b3a29684a18c73e50))
 * **[#2058](https://github.com/hydro-project/hydro/issues/2058)**
    - Docs for `backtrace` module ([`3a3cf6e`](https://github.com/hydro-project/hydro/commit/3a3cf6e1fcd710677706def1975114954c6be8a1))
 * **[#2060](https://github.com/hydro-project/hydro/issues/2060)**
    - Reduce namespace pollution ([`4925e2c`](https://github.com/hydro-project/hydro/commit/4925e2c77a8e57d45d200c98a31859571a04d150))
 * **[#2063](https://github.com/hydro-project/hydro/issues/2063)**
    - Update nightly snapshots ([`e84bd80`](https://github.com/hydro-project/hydro/commit/e84bd8083b5df395adedc6b4115dd2f33ce84865))
 * **[#2065](https://github.com/hydro-project/hydro/issues/2065)**
    - Cleanly separate generic deployment from `hydro_deploy` backend ([`caffe98`](https://github.com/hydro-project/hydro/commit/caffe98b371f3887db0e19b0a3aba2fb1b4418dd))
 * **[#2066](https://github.com/hydro-project/hydro/issues/2066)**
    - Add `doc(cfg(...))` annotation for `graph` module ([`31c87e3`](https://github.com/hydro-project/hydro/commit/31c87e3dc310c89af7d625f64101113332e0cc0d))
 * **[#2067](https://github.com/hydro-project/hydro/issues/2067)**
    - Set up prelude, move collections under `live_collections` module ([`05145bf`](https://github.com/hydro-project/hydro/commit/05145bf191bf0fcc794d282c3b18c0bd378a20ac))
 * **[#2068](https://github.com/hydro-project/hydro/issues/2068)**
    - Document the `nondet` module ([`9c69c45`](https://github.com/hydro-project/hydro/commit/9c69c45d10e7061f45eb648573bd29a9885132d1))
 * **[#2069](https://github.com/hydro-project/hydro/issues/2069)**
    - Move `backtrace` module under `ir` ([`27167e5`](https://github.com/hydro-project/hydro/commit/27167e54b6ad04ba5ad7cc08d2ef4060d30e99ff))
 * **[#2071](https://github.com/hydro-project/hydro/issues/2071)**
    - Move `ir` module under `builder` ([`3d4bee4`](https://github.com/hydro-project/hydro/commit/3d4bee4cfd19a57ea6f2dcfb161a48ad2ebd5255))
 * **[#2072](https://github.com/hydro-project/hydro/issues/2072)**
    - Move `rewrites` module under `builder` ([`f711947`](https://github.com/hydro-project/hydro/commit/f71194766394e51791872291b46c86655c318bc8))
 * **[#2073](https://github.com/hydro-project/hydro/issues/2073)**
    - Move `boundedness` module under `live_collections` ([`4bf1c05`](https://github.com/hydro-project/hydro/commit/4bf1c05583c838e7e4d183382fd72743402f889d))
 * **[#2074](https://github.com/hydro-project/hydro/issues/2074)**
    - Make internal `Location` APIs private, extract `location::dynamic` module, and start docs ([`69754b5`](https://github.com/hydro-project/hydro/commit/69754b503dc9ac32e8f9ec6fb14a0fac4f8930ce))
 * **[#2075](https://github.com/hydro-project/hydro/issues/2075)**
    - Clean up API for cycles / forward references, document ([`5f8a4da`](https://github.com/hydro-project/hydro/commit/5f8a4da212eba8b673f9c7a464c9e92d7c0602cd))
 * **[#2076](https://github.com/hydro-project/hydro/issues/2076)**
    - Update nightly snapshots ([`c18fa35`](https://github.com/hydro-project/hydro/commit/c18fa3525afa9998adf721f7deaa982ef758fffa))
 * **[#2078](https://github.com/hydro-project/hydro/issues/2078)**
    - Avoid unused warnings in trybuild compilation ([`882fd1e`](https://github.com/hydro-project/hydro/commit/882fd1e5ced68a252e0c3746cb6e2aced3651c07))
 * **[#2079](https://github.com/hydro-project/hydro/issues/2079)**
    - Replace `internal_constants` with configurable parameters ([`1c13515`](https://github.com/hydro-project/hydro/commit/1c135152168c95199f887a8e6d619b12efbcf067))
 * **[#2081](https://github.com/hydro-project/hydro/issues/2081)**
    - Move all compilation logic to `compile` module ([`13726f6`](https://github.com/hydro-project/hydro/commit/13726f66e8befbe8c0aa808ef33be8622656467e))
 * **[#2082](https://github.com/hydro-project/hydro/issues/2082)**
    - Update nightly snapshots ([`2bca9db`](https://github.com/hydro-project/hydro/commit/2bca9dbfe48a0f1ec46aabeeca0242475396607c))
 * **[#2085](https://github.com/hydro-project/hydro/issues/2085)**
    - Start on docs for live collections ([`6c29e98`](https://github.com/hydro-project/hydro/commit/6c29e98b49b18f5134ca898ee70a4e5a75049d8f))
 * **[#2092](https://github.com/hydro-project/hydro/issues/2092)**
    - Update nightly snapshots ([`879b249`](https://github.com/hydro-project/hydro/commit/879b249c9e84c74befb11b7e3cab157d52eb7c23))
 * **[#2093](https://github.com/hydro-project/hydro/issues/2093)**
    - More stream network APIs, privatize internals ([`2cb21e5`](https://github.com/hydro-project/hydro/commit/2cb21e533dbc109d061812decb673e878e20cb8d))
 * **[#2094](https://github.com/hydro-project/hydro/issues/2094)**
    - Polish for networking APIs ([`520cdd9`](https://github.com/hydro-project/hydro/commit/520cdd9f4ae21c4b70ed279a56e9acd14c572b06))
 * **[#2095](https://github.com/hydro-project/hydro/issues/2095)**
    - Keyed variants of networking APIs, send external ([`eb049d6`](https://github.com/hydro-project/hydro/commit/eb049d6a7cd5df5762174d1ab8b7eff286975fa1))
 * **[#2096](https://github.com/hydro-project/hydro/issues/2096)**
    - `runtime_context` module ([`a8dedb3`](https://github.com/hydro-project/hydro/commit/a8dedb3d2e9d62a6e6f14a11e902c0bc8af97359))
 * **[#2097](https://github.com/hydro-project/hydro/issues/2097)**
    - Introduce `generator` API and ensure that `fold_early_stop` actually terminates ([`0150a05`](https://github.com/hydro-project/hydro/commit/0150a0559dee5d1fe10356f366e01915345db1b4))
 * **[#2098](https://github.com/hydro-project/hydro/issues/2098)**
    - Initial docs for `deploy` module ([`947910e`](https://github.com/hydro-project/hydro/commit/947910e104429b66fe1d7a85b06040197a4b19a3))
 * **[#2099](https://github.com/hydro-project/hydro/issues/2099)**
    - Add `Ordering` and `Retries` traits with basic axioms ([`e535156`](https://github.com/hydro-project/hydro/commit/e535156ceb7e83550b68a6ae6b5e925f57f1882f))
 * **[#2100](https://github.com/hydro-project/hydro/issues/2100)**
    - Add basic docs around atomics for stream / keyed streams / singleton / optional ([`fb5baec`](https://github.com/hydro-project/hydro/commit/fb5baec61063b3064116d17a2c9f62531478f677))
 * **[#2101](https://github.com/hydro-project/hydro/issues/2101)**
    - Rustdoc for `KeyedStream::chain` ([`84b71ba`](https://github.com/hydro-project/hydro/commit/84b71ba542de72df877f009cb0c797eb776a0352))
 * **[#2102](https://github.com/hydro-project/hydro/issues/2102)**
    - Rustdoc for `Stream::collect_vec` ([`2a80162`](https://github.com/hydro-project/hydro/commit/2a80162140b1b4a7f6f3e605893c82daff2bd104))
 * **[#2103](https://github.com/hydro-project/hydro/issues/2103)**
    - Move backtrace test to separate module for stable line numbers ([`4922300`](https://github.com/hydro-project/hydro/commit/4922300dbdd3a5290e8251a8e5c9eda4291fdb01))
 * **[#2104](https://github.com/hydro-project/hydro/issues/2104)**
    - Add docs for `for_each` / `dest_sink`, restrict to strict streams ([`1af3a66`](https://github.com/hydro-project/hydro/commit/1af3a666b1d0787f0c023411b7f88ad3f8da5423))
 * **[#2105](https://github.com/hydro-project/hydro/issues/2105)**
    - Clean up leftover snapshots ([`8f6c478`](https://github.com/hydro-project/hydro/commit/8f6c478b774c017b5d3fdbf2beea3d9427e04a03))
 * **[#2106](https://github.com/hydro-project/hydro/issues/2106)**
    - Avoid rustfmt thrashing ([`338785e`](https://github.com/hydro-project/hydro/commit/338785e707ab378c086cbf55a49e74dc9fc2b2d5))
 * **[#2107](https://github.com/hydro-project/hydro/issues/2107)**
    - Struct docs for `Singleton` / `Optional`, and polish others ([`ce07ec2`](https://github.com/hydro-project/hydro/commit/ce07ec2d9baef0293f9186c335958fdbcc524502))
 * **[#2108](https://github.com/hydro-project/hydro/issues/2108)**
    - Fix cardinality for `Optional::or` ([`21ce30c`](https://github.com/hydro-project/hydro/commit/21ce30cdd04a25bf4a67e00ec16e592183748bf4))
 * **[#2111](https://github.com/hydro-project/hydro/issues/2111)**
    - Rename `continue_if*` to `filter_if*` and document ([`537309f`](https://github.com/hydro-project/hydro/commit/537309f9aac44498aa617c8517fdbc21616cbebf))
 * **[#2112](https://github.com/hydro-project/hydro/issues/2112)**
    - `Singleton::zip` and `Optional::zip` ([`1ab3fcc`](https://github.com/hydro-project/hydro/commit/1ab3fcc117ba9eb6690054a0aa58d071f323fdde))
 * **[#2114](https://github.com/hydro-project/hydro/issues/2114)**
    - `Singleton/Optional::latest*` and `ZipResult` ([`b067f84`](https://github.com/hydro-project/hydro/commit/b067f84b91c217b41504dfc79b52c5ceb48dcd5d))
 * **[#2115](https://github.com/hydro-project/hydro/issues/2115)**
    - `Singleton/Optional::all_ticks*` ([`7633b23`](https://github.com/hydro-project/hydro/commit/7633b239c55f4d6bf91db70cda8a86839d0781c6))
 * **[#2116](https://github.com/hydro-project/hydro/issues/2116)**
    - `Singleton/Optional::into_stream` ([`3899333`](https://github.com/hydro-project/hydro/commit/38993338dc36378c5ff025ab4b19020ff6817c36))
 * **[#2117](https://github.com/hydro-project/hydro/issues/2117)**
    - Start on docs for `KeyedSingleton` ([`c3fcaab`](https://github.com/hydro-project/hydro/commit/c3fcaab754ec185ad7a0f1a5b476d909908ba20a))
 * **[#2118](https://github.com/hydro-project/hydro/issues/2118)**
    - Remove `::delta` operators from collections ([`5778e00`](https://github.com/hydro-project/hydro/commit/5778e00be619c4bfb913a39080adabb71a48a0f7))
 * **[#2120](https://github.com/hydro-project/hydro/issues/2120)**
    - Remaining `KeyedSingleton`-specific APIs ([`8f21a25`](https://github.com/hydro-project/hydro/commit/8f21a256e22f46f3a1e93233284a848ec4019066))
 * **[#2122](https://github.com/hydro-project/hydro/issues/2122)**
    - Update backtrace snapshots for Rust 1.90 and remove unused types ([`1b818e3`](https://github.com/hydro-project/hydro/commit/1b818e321805f3134b66359fc0a6c70599a71422))
 * **[#2123](https://github.com/hydro-project/hydro/issues/2123)**
    - `Stream::persist` rustdoc ([`e456e66`](https://github.com/hydro-project/hydro/commit/e456e66c1f0641c88909a54fe4b4c239337069d1))
 * **[#2124](https://github.com/hydro-project/hydro/issues/2124)**
    - Remaining `Optional`-specific APIs ([`48c42c5`](https://github.com/hydro-project/hydro/commit/48c42c58d85273d6267dd84a4dd80b05a9b846bb))
 * **[#2125](https://github.com/hydro-project/hydro/issues/2125)**
    - `*::defer_tick` rustdoc, remove `Singleton::defer_tick` ([`03afe4b`](https://github.com/hydro-project/hydro/commit/03afe4b20879d0a6aefc5e3eeac29339cb49d599))
 * **[#2126](https://github.com/hydro-project/hydro/issues/2126)**
    - Ensure that `Stream::scan` actually remembers state with unbounded input ([`b59e30d`](https://github.com/hydro-project/hydro/commit/b59e30d2589eede7f1edbd4893ea8d945ebe4c46))
 * **[#2127](https://github.com/hydro-project/hydro/issues/2127)**
    - Add `flat_map` / `flatten` to `KeyedStream` ([`584ebf1`](https://github.com/hydro-project/hydro/commit/584ebf1a6400953fcbd41b53c22483ecf5d81638))
 * **[#2129](https://github.com/hydro-project/hydro/issues/2129)**
    - Add API for safely broadcasting a stream across several keys ([`fc67ee7`](https://github.com/hydro-project/hydro/commit/fc67ee7b66a554a5041495d36912c31974eb34e4))
 * **[#2131](https://github.com/hydro-project/hydro/issues/2131)**
    - Update nightly snapshots ([`efce466`](https://github.com/hydro-project/hydro/commit/efce466bd1704e8a80c7bdce31c798eba9b2fea1))
 * **[#2136](https://github.com/hydro-project/hydro/issues/2136)**
    - Migrate Hydro IR to have Flo semantics at all levels ([`a4d8af6`](https://github.com/hydro-project/hydro/commit/a4d8af603e6ad14659d1d43ca168495c883a58eb))
 * **[#2137](https://github.com/hydro-project/hydro/issues/2137)**
    - Pin Rust to 1.89 ([`bcef055`](https://github.com/hydro-project/hydro/commit/bcef0557add258930a76900d6f2ce641c7f9b148))
 * **[#2140](https://github.com/hydro-project/hydro/issues/2140)**
    - Reduce atomic pollution in quorum counting ([`057192a`](https://github.com/hydro-project/hydro/commit/057192afde1373caedbbfc24516c28a96d12928c))
 * **[#2144](https://github.com/hydro-project/hydro/issues/2144)**
    - Add `KeyedSingleton::into_singleton` ([`6675bca`](https://github.com/hydro-project/hydro/commit/6675bcaeb61152115a9bca3e009db217c42f72cf))
 * **[#2145](https://github.com/hydro-project/hydro/issues/2145)**
    - Add support for tick-cycles to `KeyedStream` ([`aff7be6`](https://github.com/hydro-project/hydro/commit/aff7be602f35d12f910eb559a89b17421e448844))
 * **[#2146](https://github.com/hydro-project/hydro/issues/2146)**
    - Shift `Stream::max_by_key` to `KeyedSingleton::get_max_key`, which is actually deterministic ([`bd2ccb6`](https://github.com/hydro-project/hydro/commit/bd2ccb680f335a9a01264eda658c8f0e39215c49))
 * **[#2148](https://github.com/hydro-project/hydro/issues/2148)**
    - Use `KeyedStream` under the hood of `KeyedSingleton` ([`ea25d65`](https://github.com/hydro-project/hydro/commit/ea25d65f7167193f3ec485950730e8e62606f58b))
 * **[#2149](https://github.com/hydro-project/hydro/issues/2149)**
    - Directly manipulate IR in `KeyedStream` ([`de04ee7`](https://github.com/hydro-project/hydro/commit/de04ee7eb7c9917f302fc22c362319b58ecf913b))
 * **[#2150](https://github.com/hydro-project/hydro/issues/2150)**
    - Directly manipulate IR in `KeyedSingleton` ([`09ff181`](https://github.com/hydro-project/hydro/commit/09ff1816be22fee9498ecd5f9b9e59109c31b2bf))
 * **[#2151](https://github.com/hydro-project/hydro/issues/2151)**
    - Capture rich metadata on collection kinds in the IR ([`1f5826d`](https://github.com/hydro-project/hydro/commit/1f5826d52cc2db0efebc4a1f76cc3792e5dab04d))
 * **[#2156](https://github.com/hydro-project/hydro/issues/2156)**
    - Don't pass around locations when emitting DFIR ([`868b00e`](https://github.com/hydro-project/hydro/commit/868b00e0ab1fba4934cecd879e4c7481c04c13dc))
 * **[#2158](https://github.com/hydro-project/hydro/issues/2158)**
    - Deterministic simulator for Hydro programs ([`224b2db`](https://github.com/hydro-project/hydro/commit/224b2db7dc7e7c5cbd4c6ce024e0410957ce6747))
 * **[#2164](https://github.com/hydro-project/hydro/issues/2164)**
    - Convert traits `fn prop_kind() -> PropKind` to associated `const` ([`1ac5295`](https://github.com/hydro-project/hydro/commit/1ac529525ae9ac4ac47575787d436e9513d8c0aa))
 * **[#2168](https://github.com/hydro-project/hydro/issues/2168)**
    - Simplify decision logging code when replaying simulations #2167 ([`1688bc9`](https://github.com/hydro-project/hydro/commit/1688bc9c21ae54bf8ae3813824c49aa9819d886b))
 * **[#2169](https://github.com/hydro-project/hydro/issues/2169)**
    - Sim support for `batch` on unordered streams ([`cea261d`](https://github.com/hydro-project/hydro/commit/cea261dd8b585a3c30a889650c1aa29ed0d54ad9))
 * **[#2170](https://github.com/hydro-project/hydro/issues/2170)**
    - Update back to Rust 1.90.0 ([`623ed9e`](https://github.com/hydro-project/hydro/commit/623ed9ea41a04b442a44f85208ca51e22fb743b6))
 * **[#2171](https://github.com/hydro-project/hydro/issues/2171)**
    - Add sim tests for Paxos proposer indexing ([`ee3cd96`](https://github.com/hydro-project/hydro/commit/ee3cd96ed2c482c0ff97df8cc4276ef150da6a20))
 * **[#2172](https://github.com/hydro-project/hydro/issues/2172)**
    - Reduce syntactic overhead of connecting test inputs / outputs ([`0be5729`](https://github.com/hydro-project/hydro/commit/0be5729dd87a91a70001f88283b380d3da8df7d0))
 * **[#2173](https://github.com/hydro-project/hydro/issues/2173)**
    - Add APIs for unordered stream assertions and tests for `collect_quorum` ([`a4bdf39`](https://github.com/hydro-project/hydro/commit/a4bdf399f90581f409c89a72ae960405998fb33b))
 * **[#2180](https://github.com/hydro-project/hydro/issues/2180)**
    - Ensure sim logs show up in captured stdout/stderr ([`0e2698d`](https://github.com/hydro-project/hydro/commit/0e2698dd4e070951dbda6f87bbfbeee3044fea22))
 * **[#2181](https://github.com/hydro-project/hydro/issues/2181)**
    - Replay failed simulation instances and show logs ([`1fbd6e0`](https://github.com/hydro-project/hydro/commit/1fbd6e05d782388aa3542023b685172e6275baf8))
 * **[#2183](https://github.com/hydro-project/hydro/issues/2183)**
    - Avoid redundant simulations for ordering within unordered batches ([`10f5948`](https://github.com/hydro-project/hydro/commit/10f5948a95651a19245be188abc0783d9431d8a7))
 * **[#2184](https://github.com/hydro-project/hydro/issues/2184)**
    - Check that simulated unordered batching generates out-of-order cases ([`6ec4299`](https://github.com/hydro-project/hydro/commit/6ec4299e25f7e9bd9e564a1c75d6f74e33c8c619))
 * **[#2187](https://github.com/hydro-project/hydro/issues/2187)**
    - Share `__staged` across trybuild targets ([`a65893a`](https://github.com/hydro-project/hydro/commit/a65893a65bc43cb13c516c95a8d86ad424446565))
 * **[#2188](https://github.com/hydro-project/hydro/issues/2188)**
    - Fix `bidi_external_many_bytes` compilation and add example tests ([`4687ce5`](https://github.com/hydro-project/hydro/commit/4687ce56791cf749bcc1ead0472d938b3ecf485a))
 * **[#2190](https://github.com/hydro-project/hydro/issues/2190)**
    - Support singletons in simulator ([`0abd1ce`](https://github.com/hydro-project/hydro/commit/0abd1ce44df16353047a416b235aa79f070ace2c))
 * **[#2192](https://github.com/hydro-project/hydro/issues/2192)**
    - Use dynamically linked libraries in test mode ([`891a25d`](https://github.com/hydro-project/hydro/commit/891a25d3f72b2fa10a5154940624a146bb460ed7))
 * **[#2194](https://github.com/hydro-project/hydro/issues/2194)**
    - Simulator on Windows and test macOS in CI [ci-full] ([`6d2e7d0`](https://github.com/hydro-project/hydro/commit/6d2e7d05102c79e75e410804988b8a4b3b563aea))
 * **[#2196](https://github.com/hydro-project/hydro/issues/2196)**
    - Migrate graph visualization to JSON format with deterministic output and semantic tagging ([`47061e1`](https://github.com/hydro-project/hydro/commit/47061e191d743b2d40ff3bed32198e29b00df85d))
 * **[#2204](https://github.com/hydro-project/hydro/issues/2204)**
    - Support `Stream::count` in simulator ([`e9ee6cf`](https://github.com/hydro-project/hydro/commit/e9ee6cfad870c54c05e9dccc45bdbfdb43aea362))
 * **[#2205](https://github.com/hydro-project/hydro/issues/2205)**
    - Make `cargo sim` fuzzing command work again [ci-full] ([`807eb0a`](https://github.com/hydro-project/hydro/commit/807eb0afe3f5fcbec573959b5e4323f762cebe6e))
 * **[#2209](https://github.com/hydro-project/hydro/issues/2209)**
    - Allow `sim` feature without `deploy` feature ([`fa4e9d9`](https://github.com/hydro-project/hydro/commit/fa4e9d9914ed52aa5a7237c32a0dc57d713ec14a))
 * **[#2210](https://github.com/hydro-project/hydro/issues/2210)**
    - Support Process -> Process network in sim ([`855a32e`](https://github.com/hydro-project/hydro/commit/855a32ec56c34a0325009e21d6bf8108087ae46e))
 * **[#2211](https://github.com/hydro-project/hydro/issues/2211)**
    - Support Cluster -> Process network in sim ([`909f433`](https://github.com/hydro-project/hydro/commit/909f43330b32caf502d2b79100c77f8177a90045))
 * **[#2212](https://github.com/hydro-project/hydro/issues/2212)**
    - Support ticks on clusters in sim ([`8fda9ef`](https://github.com/hydro-project/hydro/commit/8fda9ef71d6964eff53747df4380510128e0ee00))
 * **[#2213](https://github.com/hydro-project/hydro/issues/2213)**
    - Support `source_cluster_members` in sim ([`5222db3`](https://github.com/hydro-project/hydro/commit/5222db340b18b5784981180642fe9ade71725819))
 * **[#2214](https://github.com/hydro-project/hydro/issues/2214)**
    - Support Process -> Cluster network in sim ([`1e72c21`](https://github.com/hydro-project/hydro/commit/1e72c212eedd279664cc48823c1b273c9d89a39c))
 * **[#2215](https://github.com/hydro-project/hydro/issues/2215)**
    - Support Cluster -> Cluster network in sim ([`5eb4bf6`](https://github.com/hydro-project/hydro/commit/5eb4bf6aafe41a984936c3eb39c18bdbc875b648))
 * **[#2216](https://github.com/hydro-project/hydro/issues/2216)**
    - Properly map from external keys to raw ports in sim ([`0901fdc`](https://github.com/hydro-project/hydro/commit/0901fdc3aafabaab2a88047a7df08393ee7b2205))
 * **[#2217](https://github.com/hydro-project/hydro/issues/2217)**
    - Support atomic regions in sim ([`77f1382`](https://github.com/hydro-project/hydro/commit/77f138296baeeec2bddebbe0dbde2eb3468b4ea9))
 * **[#2218](https://github.com/hydro-project/hydro/issues/2218)**
    - Support batching ordered keyed streams in sim ([`573d30e`](https://github.com/hydro-project/hydro/commit/573d30ea8bdb74635d76b46ca13f40a627e427b8))
 * **[#2219](https://github.com/hydro-project/hydro/issues/2219)**
    - Restrict `KeyedSingleton` to not allow asynchronous key removal ([`a157970`](https://github.com/hydro-project/hydro/commit/a15797058950245d9eb762d885d35e5326bcf8b3))
 * **[#2225](https://github.com/hydro-project/hydro/issues/2225)**
    - Allow accessing HydroNodes' inputs, assign all HydroNodes (except Placeholder) an ID ([`d9b4700`](https://github.com/hydro-project/hydro/commit/d9b4700ecc0488bf305664078f1054af6bcf17da))
 * **[#2227](https://github.com/hydro-project/hydro/issues/2227)**
    - New template and walkthrough ([`3fd84aa`](https://github.com/hydro-project/hydro/commit/3fd84aa8812fa027db293727d8e304708db66916))
 * **[#2229](https://github.com/hydro-project/hydro/issues/2229)**
    - Support `KeyedSingleton::snapshot` in sim ([`0c6666b`](https://github.com/hydro-project/hydro/commit/0c6666bfdcda799f8c835bb7198f7d24e1c1c41d))
 * **[#2231](https://github.com/hydro-project/hydro/issues/2231)**
    - Update default visualizer base URL in config ([`3ebe9c7`](https://github.com/hydro-project/hydro/commit/3ebe9c790b49f4fa3c26c6f707b6b46069170dc1))
 * **[#2243](https://github.com/hydro-project/hydro/issues/2243)**
    - Don't return results from `SimSender::send` ([`b256cba`](https://github.com/hydro-project/hydro/commit/b256cba932a8d6d7a6be7b1c98c2f8c20b299375))
 * **[#2246](https://github.com/hydro-project/hydro/issues/2246)**
    - Add `Location::bind_single_client` for bidi single client ([`4a43594`](https://github.com/hydro-project/hydro/commit/4a4359495fff0b3cb63ec7909271f7fce443589b))
 * **[#2247](https://github.com/hydro-project/hydro/issues/2247)**
    - Add `KeyedStream::cross_singleton` ([`2214764`](https://github.com/hydro-project/hydro/commit/22147646f9616095504012176165116fbaa6e203))
 * **[#2253](https://github.com/hydro-project/hydro/issues/2253)**
    - Include Hydro template sources into workspace tree and test example ([`b92fcd6`](https://github.com/hydro-project/hydro/commit/b92fcd6552d7d278ebbc14deb2f35e93f30bb636))
 * **[#2255](https://github.com/hydro-project/hydro/issues/2255)**
    - Support batching unordered keyed streams in simulator ([`0d41e8c`](https://github.com/hydro-project/hydro/commit/0d41e8c46ba5d6d9555ca37d85d06de28c700dc1))
 * **[#2256](https://github.com/hydro-project/hydro/issues/2256)**
    - Introduce `sliced!` syntax for processing with anonymous ticks ([`194280b`](https://github.com/hydro-project/hydro/commit/194280baf21d554e2deb3c225ed9fdad197c3db2))
 * **[#2257](https://github.com/hydro-project/hydro/issues/2257)**
    - Fix type inference failure when simulating non-atomic keyed singleton ([`7a072b1`](https://github.com/hydro-project/hydro/commit/7a072b11d59473d9971f9c866e9f6748985218c0))
 * **[#2261](https://github.com/hydro-project/hydro/issues/2261)**
    - Fix import in `runtime_context` test ([`48fa7f8`](https://github.com/hydro-project/hydro/commit/48fa7f81cec70c829c3b92c36eda82ac94fe6e5c))
 * **[#2262](https://github.com/hydro-project/hydro/issues/2262)**
    - Single counter tutorial and prepare code for later tutorials ([`aaa0ec1`](https://github.com/hydro-project/hydro/commit/aaa0ec1f9e6e359faec8ad8ecd304bdd637e348f))
 * **[#2265](https://github.com/hydro-project/hydro/issues/2265)**
    - Cluster member ids are now clone instead of copy ([`5579acd`](https://github.com/hydro-project/hydro/commit/5579acd1c7101a3f14c49236e1933398de0f0958))
 * **[#2272](https://github.com/hydro-project/hydro/issues/2272)**
    - Add cluster-membership ir node ([`98b899b`](https://github.com/hydro-project/hydro/commit/98b899baa342617bc8634220324849b1067f6233))
 * **[#2273](https://github.com/hydro-project/hydro/issues/2273)**
    - Avoid `sim_fuzzer` test overwriting fuzz reproducer ([`629ca70`](https://github.com/hydro-project/hydro/commit/629ca7042094b3d3d43ea04a3da30034dd5cc2f5))
 * **[#2279](https://github.com/hydro-project/hydro/issues/2279)**
    - Fixup feature usage ([`6c11dc1`](https://github.com/hydro-project/hydro/commit/6c11dc10acd7499eb6373a12c3a516a42b3c9551))
 * **[#2283](https://github.com/hydro-project/hydro/issues/2283)**
    - Exclude crate/module in lib snapshot file names [ci-full] ([`dc170e6`](https://github.com/hydro-project/hydro/commit/dc170e63f62e890bfd0dd054e5a930607fd67545))
 * **[#2287](https://github.com/hydro-project/hydro/issues/2287)**
    - Support `Stream::assume_ordering` inside ticks in simulator ([`98f76cd`](https://github.com/hydro-project/hydro/commit/98f76cd891a9596f61bf09b1751aa234af3de2d9))
 * **[#2288](https://github.com/hydro-project/hydro/issues/2288)**
    - Fix full path replacement for staged code errors ([`f0acd7c`](https://github.com/hydro-project/hydro/commit/f0acd7cb0e60d163c9e5a7c053ebdba995c8f289))
 * **[#2289](https://github.com/hydro-project/hydro/issues/2289)**
    - Support `KeyedStream::assume_ordering` inside ticks in simulator ([`55ebb4e`](https://github.com/hydro-project/hydro/commit/55ebb4e2ea9eb5decff1cb3edbf203f8c23d6f3b))
 * **[#2295](https://github.com/hydro-project/hydro/issues/2295)**
    - Update to rust 1.91.1 ([`d22507c`](https://github.com/hydro-project/hydro/commit/d22507cf6064e4b9f6a02404d58f644cde3dcf0b))
 * **[#2296](https://github.com/hydro-project/hydro/issues/2296)**
    - Fix URL to hydroscope ([`6dcd117`](https://github.com/hydro-project/hydro/commit/6dcd1177d89c70dd7353e48a975532607ad3add0))
 * **[#2298](https://github.com/hydro-project/hydro/issues/2298)**
    - Add `KeyedStream` APIs for compound keys and sending with keys ([`ca0e0f4`](https://github.com/hydro-project/hydro/commit/ca0e0f43a8ef545cc8b403058376d467f3da05da))
 * **[#2304](https://github.com/hydro-project/hydro/issues/2304)**
    - Add specialized `sim_input` / `sim_output` to reduce simulation boilerplate ([`6b1d66a`](https://github.com/hydro-project/hydro/commit/6b1d66aa61056ffb4dd2896e98288489e64d654f))
 * **[#2306](https://github.com/hydro-project/hydro/issues/2306)**
    - Improve quality of sim assertion backtraces ([`fd8d59d`](https://github.com/hydro-project/hydro/commit/fd8d59dcad4a2cf576a3948e4ea03f03bf216a3f))
 * **[#2313](https://github.com/hydro-project/hydro/issues/2313)**
    - Don't reference dfir_rs in deploy_runtime ([`8027431`](https://github.com/hydro-project/hydro/commit/80274315e135fc6b87d50e3111821329eb9e2ef2))
 * **[#2319](https://github.com/hydro-project/hydro/issues/2319)**
    - Move KeyedStream trait constraints from impl to methods ([`2b0c4d8`](https://github.com/hydro-project/hydro/commit/2b0c4d829d81312b546d9b0af8ab0158a2a678a6))
 * **Uncategorized**
    - Release copy_span v0.1.0, hydro_deploy v0.15.0, hydro_lang v0.15.0, hydro_std v0.15.0 ([`bdfd6e0`](https://github.com/hydro-project/hydro/commit/bdfd6e0d10a49f1b6c45f9514982a1c60da80b9f))
    - Release sinktools v0.0.1, hydro_deploy_integration v0.15.0, lattices_macro v0.5.11, variadics_macro v0.6.2, lattices v0.6.2, multiplatform_test v0.6.0, dfir_rs v0.15.0, copy_span v0.1.0, hydro_deploy v0.15.0, hydro_lang v0.15.0, hydro_std v0.15.0 ([`ac88df1`](https://github.com/hydro-project/hydro/commit/ac88df1e98af9fa2027488252f6014efa7bef229))
    - Release hydro_build_utils v0.0.1, dfir_lang v0.15.0, dfir_macro v0.15.0, variadics v0.0.10, sinktools v0.0.1, hydro_deploy_integration v0.15.0, lattices_macro v0.5.11, variadics_macro v0.6.2, lattices v0.6.2, multiplatform_test v0.6.0, dfir_rs v0.15.0, copy_span v0.1.0, hydro_deploy v0.15.0, hydro_lang v0.15.0, hydro_std v0.15.0, safety bump 5 crates ([`092de25`](https://github.com/hydro-project/hydro/commit/092de252238dfb9fa6b01e777c6dd8bf9db93398))
</details>

## 0.14.0 (2025-07-31)

<csr-id-a3280d9b95576aaaf188779feb57ab0a28088a90/>
<csr-id-3d40d1a65c41dca3893867fb567993a27491fa0c/>
<csr-id-98baec71a6f1d01d55a3c983fdbb7824c45305cd/>
<csr-id-22a7d0d9a057356a4a01ccdad6febc8aa229d325/>
<csr-id-49c1918b9563f9ece6f2fc422a3b3c91d592e0cc/>
<csr-id-59041df58be2de0717b851cc1c3355479cd722f2/>
<csr-id-eaac1f40d1050da65d2356597f36f37f0cf439ef/>
<csr-id-5ab815f3567d51e9bd114f90af8e837fe0732cd8/>
<csr-id-fb016b017a42df95286cb2236ef987ea68be9ea7/>
<csr-id-6e29285d4c30901abce3352c2cf358f36f9173c6/>

### New Features

 - <csr-id-173d9c0f1cc955f2a478195bcf3de0b055284008/> Use partitioning analysis results to partition
   Test/insta changes stem from changed implementation of
   broadcast_bincode, will change again once #1949 is implemented.
   Also added missing cases for Persists hidden behind CrossProduct,
   Difference, AntiJoin, Join, and Scan for decoupler.
 - <csr-id-4035cae8536bf9f8421fee9a8ccca7eda7e846d6/> make it easier to open trybuild-generated files with Rust Analyzer
   To fully compile the generated sources without error, the Stageleft
   environment variable needt to be passed to build scripts, so
   pre-configure that in workspace settings.
 - <csr-id-4d15ff19e604e5b3193abf51bc540ab1a435f7c5/> graph viz for Hydro lang
 - <csr-id-bd1afdff5fd7b8dc6d2c567cd2659542a84c6216/> allow running generated binaries with single-threaded Tokio runtime
   Before, we had a janky architecture for establishing network connections
   which relied on blocking on futures outside an async context, which
   required a multi-threaded runtime. Now, we establish all connections
   before launching the DFIR code, so that no blocking is required there.
 - <csr-id-d44b225f697f8d7ccdf80b0d5dc2afdea1955324/> capture stack traces for each IR node
   Because Hydro is staged, the stack traces capture the structure of the
   program, which is helpful for profiling / visualization.
 - <csr-id-c4b9590552d7e05b352a0d4a215f1bbf274ccc61/> add `scan` operator
 - <csr-id-99a8f1dfdde087578f25c19e502ad13e1d98a394/> Decoupling analysis
   A Gurobi license is required to run code that uses `hydro_optimize` (for ILP over decoupling decisions)
 - <csr-id-6b0483d201f9d9871c9693765bd61284258a5bce/> add `*_idempotent` variations for (keyed) fold / reduce
   We were missing variants where the stream is totally ordered with
   consecutive retries, which show up when sampling singletons. This adds
   those in.
 - <csr-id-b333b45e0936bbe481d7fbc285790d942779c494/> upgrade Stageleft to eliminate `__staged` compilation during development
   Before Stageleft 0.9, we always compiled the `__staged` module in stage
   0, which resulted in significant compilation penalties and Rust Analyzer
   thrashing since any file changes triggered a re-run of the `build.rs`.
   With Stageleft 0.9, we can defer compiling this module to the trybuild
   stage 1.
   
   Stageleft 0.9 also cleans up how paths are rewritten to use the
   `__staged` module, so we can simplify our logic as well. The only
   significant rewrite remaining is when running unit tests, where we have
   to regenerate `__staged` to access test-only module, and therefore have
   to rewrite all paths to use that module.
   
   Finally, in the spirit of improving compilation efficiency, we disable
   incremental builds for trybuild stage 1. We generate files with hash
   based on contents, so we were never benefitting from incremental
   compilation anyways. This reduces the disk space used significantly.
 - <csr-id-863cb9eecd9e408fc8eb7c010415bd117d56c4ac/> Assign cycles IDs that are globally unique (across clusters/processes)
   Co-authored with @shadaj

### Bug Fixes

 - <csr-id-1fc9f0dc938a50afc41cfe3fa8d6e34d0d1c947d/> emit appropriate `Persist` / `Unpersist` nodes for `scan`
 - <csr-id-8858abd784a3f20504264fcfeafde2fa5cc6a615/> ensure that singletons and optionals always have cardinality 1 inside a tick
   Otherwise, cycling a singleton can result in a memory leak, as we found
   in PBFT implementation. Now, we strictly require that inside a tick,
   singletons/optionals are represented by a stream with 1 or fewer
   elements.
 - <csr-id-739b622f7a6ee3e58289863519419bd925c1e788/> don't snapshot-test backtraces
   Backtraces aren't stable across Unix / Windows. Just have a separate
   test for them.
   
   Also defers resolution of backtraces until we actually need them to
   improve performance.
 - <csr-id-6699197d60a5efe8fd2fe951463649eca54ea9db/> correctly enable staged-trybuild mode when cross-compiling
   `RUSTFLAGS` are not passed to build scripts, use a regular environment
   variable instead. Should also dramatically improve cache hit rate for
   sccache since the rustflags for non-stageleft crates are untouched.

### New Features (BREAKING)

 - <csr-id-45bd6e9759410dcb747c9224758c82f9874378d2/> add stream markers for tracking non-deterministic retries
   This introduces an additional type paramter to `Stream` called
   `Retries`, which tracks the presence (or lack) of non-determinstic
   retries in the stream. `ExactlyOnce` means that each element has
   deterministic order, while `AtLeastOnce` means that there may be
   non-deterministic duplicates.
   
   A `TotalOrder, AtLeastOnce` stream describes elements with consecutive
   duplication, but deterministic order if we ignore those immediate
   elements. A `NoOrder, AtLeastOnce` stream has set semantics.
   
   Also fixes a bug in the return type for `*_keyed_*`, where the output
   type was previously `TotalOrder` but now is `NoOrder`. We stream the
   results of a keyed aggregation out of a `HashMap`, so the order will
   indeed be non-deterministic.

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 27 commits contributed to the release.
 - 104 days passed between releases.
 - 25 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 25 unique issues were worked on: [#1803](https://github.com/hydro-project/hydro/issues/1803), [#1843](https://github.com/hydro-project/hydro/issues/1843), [#1859](https://github.com/hydro-project/hydro/issues/1859), [#1902](https://github.com/hydro-project/hydro/issues/1902), [#1905](https://github.com/hydro-project/hydro/issues/1905), [#1907](https://github.com/hydro-project/hydro/issues/1907), [#1909](https://github.com/hydro-project/hydro/issues/1909), [#1910](https://github.com/hydro-project/hydro/issues/1910), [#1916](https://github.com/hydro-project/hydro/issues/1916), [#1930](https://github.com/hydro-project/hydro/issues/1930), [#1936](https://github.com/hydro-project/hydro/issues/1936), [#1937](https://github.com/hydro-project/hydro/issues/1937), [#1938](https://github.com/hydro-project/hydro/issues/1938), [#1939](https://github.com/hydro-project/hydro/issues/1939), [#1941](https://github.com/hydro-project/hydro/issues/1941), [#1944](https://github.com/hydro-project/hydro/issues/1944), [#1945](https://github.com/hydro-project/hydro/issues/1945), [#1947](https://github.com/hydro-project/hydro/issues/1947), [#1948](https://github.com/hydro-project/hydro/issues/1948), [#1951](https://github.com/hydro-project/hydro/issues/1951), [#1952](https://github.com/hydro-project/hydro/issues/1952), [#1956](https://github.com/hydro-project/hydro/issues/1956), [#1958](https://github.com/hydro-project/hydro/issues/1958), [#1959](https://github.com/hydro-project/hydro/issues/1959), [#1962](https://github.com/hydro-project/hydro/issues/1962)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1803](https://github.com/hydro-project/hydro/issues/1803)**
    - Use `async-ssh2-russh` (instead of `libssh2` bindings), fix #1463 ([`5ab815f`](https://github.com/hydro-project/hydro/commit/5ab815f3567d51e9bd114f90af8e837fe0732cd8))
 * **[#1843](https://github.com/hydro-project/hydro/issues/1843)**
    - Update pinned nightly to 2025-04-27, update span API usage ([`98baec7`](https://github.com/hydro-project/hydro/commit/98baec71a6f1d01d55a3c983fdbb7824c45305cd))
 * **[#1859](https://github.com/hydro-project/hydro/issues/1859)**
    - Decoupling analysis ([`99a8f1d`](https://github.com/hydro-project/hydro/commit/99a8f1dfdde087578f25c19e502ad13e1d98a394))
 * **[#1902](https://github.com/hydro-project/hydro/issues/1902)**
    - Assign cycles IDs that are globally unique (across clusters/processes) ([`863cb9e`](https://github.com/hydro-project/hydro/commit/863cb9eecd9e408fc8eb7c010415bd117d56c4ac))
 * **[#1905](https://github.com/hydro-project/hydro/issues/1905)**
    - Migrate tests from hydro_test_local ([`eaac1f4`](https://github.com/hydro-project/hydro/commit/eaac1f40d1050da65d2356597f36f37f0cf439ef))
 * **[#1907](https://github.com/hydro-project/hydro/issues/1907)**
    - Upgrade Stageleft to eliminate `__staged` compilation during development ([`b333b45`](https://github.com/hydro-project/hydro/commit/b333b45e0936bbe481d7fbc285790d942779c494))
 * **[#1909](https://github.com/hydro-project/hydro/issues/1909)**
    - Remove support for macro entrypoints ([`6e29285`](https://github.com/hydro-project/hydro/commit/6e29285d4c30901abce3352c2cf358f36f9173c6))
 * **[#1910](https://github.com/hydro-project/hydro/issues/1910)**
    - Add stream markers for tracking non-deterministic retries ([`45bd6e9`](https://github.com/hydro-project/hydro/commit/45bd6e9759410dcb747c9224758c82f9874378d2))
 * **[#1916](https://github.com/hydro-project/hydro/issues/1916)**
    - Add `*_idempotent` variations for (keyed) fold / reduce ([`6b0483d`](https://github.com/hydro-project/hydro/commit/6b0483d201f9d9871c9693765bd61284258a5bce))
 * **[#1930](https://github.com/hydro-project/hydro/issues/1930)**
    - Add `scan` operator ([`c4b9590`](https://github.com/hydro-project/hydro/commit/c4b9590552d7e05b352a0d4a215f1bbf274ccc61))
 * **[#1936](https://github.com/hydro-project/hydro/issues/1936)**
    - Graph viz for Hydro lang ([`4d15ff1`](https://github.com/hydro-project/hydro/commit/4d15ff19e604e5b3193abf51bc540ab1a435f7c5))
 * **[#1937](https://github.com/hydro-project/hydro/issues/1937)**
    - Capture stack traces for each IR node ([`d44b225`](https://github.com/hydro-project/hydro/commit/d44b225f697f8d7ccdf80b0d5dc2afdea1955324))
 * **[#1938](https://github.com/hydro-project/hydro/issues/1938)**
    - Allow running generated binaries with single-threaded Tokio runtime ([`bd1afdf`](https://github.com/hydro-project/hydro/commit/bd1afdff5fd7b8dc6d2c567cd2659542a84c6216))
 * **[#1939](https://github.com/hydro-project/hydro/issues/1939)**
    - Minimize Tokio feature flags ([`59041df`](https://github.com/hydro-project/hydro/commit/59041df58be2de0717b851cc1c3355479cd722f2))
 * **[#1941](https://github.com/hydro-project/hydro/issues/1941)**
    - Correctly enable staged-trybuild mode when cross-compiling ([`6699197`](https://github.com/hydro-project/hydro/commit/6699197d60a5efe8fd2fe951463649eca54ea9db))
 * **[#1944](https://github.com/hydro-project/hydro/issues/1944)**
    - Update `proc-macro-crate` ([`3d40d1a`](https://github.com/hydro-project/hydro/commit/3d40d1a65c41dca3893867fb567993a27491fa0c))
 * **[#1945](https://github.com/hydro-project/hydro/issues/1945)**
    - Make it easier to open trybuild-generated files with Rust Analyzer ([`4035cae`](https://github.com/hydro-project/hydro/commit/4035cae8536bf9f8421fee9a8ccca7eda7e846d6))
 * **[#1947](https://github.com/hydro-project/hydro/issues/1947)**
    - Don't snapshot-test backtraces ([`739b622`](https://github.com/hydro-project/hydro/commit/739b622f7a6ee3e58289863519419bd925c1e788))
 * **[#1948](https://github.com/hydro-project/hydro/issues/1948)**
    - Ensure that singletons and optionals always have cardinality 1 inside a tick ([`8858abd`](https://github.com/hydro-project/hydro/commit/8858abd784a3f20504264fcfeafde2fa5cc6a615))
 * **[#1951](https://github.com/hydro-project/hydro/issues/1951)**
    - Enable `viz` feature only in dev-dependencies ([`a3280d9`](https://github.com/hydro-project/hydro/commit/a3280d9b95576aaaf188779feb57ab0a28088a90))
 * **[#1952](https://github.com/hydro-project/hydro/issues/1952)**
    - Use partitioning analysis results to partition ([`173d9c0`](https://github.com/hydro-project/hydro/commit/173d9c0f1cc955f2a478195bcf3de0b055284008))
 * **[#1956](https://github.com/hydro-project/hydro/issues/1956)**
    - Rename `ExternalProcess` to `External` ([`49c1918`](https://github.com/hydro-project/hydro/commit/49c1918b9563f9ece6f2fc422a3b3c91d592e0cc))
 * **[#1958](https://github.com/hydro-project/hydro/issues/1958)**
    - Invert external sources and clean up locations in IR ([`fb016b0`](https://github.com/hydro-project/hydro/commit/fb016b017a42df95286cb2236ef987ea68be9ea7))
 * **[#1959](https://github.com/hydro-project/hydro/issues/1959)**
    - Emit appropriate `Persist` / `Unpersist` nodes for `scan` ([`1fc9f0d`](https://github.com/hydro-project/hydro/commit/1fc9f0dc938a50afc41cfe3fa8d6e34d0d1c947d))
 * **[#1962](https://github.com/hydro-project/hydro/issues/1962)**
    - Separate externals from other location kinds, clean up network operators ([`22a7d0d`](https://github.com/hydro-project/hydro/commit/22a7d0d9a057356a4a01ccdad6febc8aa229d325))
 * **Uncategorized**
    - Release example_test v0.0.0, dfir_rs v0.14.0, hydro_deploy v0.14.0, hydro_lang v0.14.0, hydro_optimize v0.13.0, hydro_std v0.14.0 ([`5f69ee0`](https://github.com/hydro-project/hydro/commit/5f69ee080a9e257bc07cdc4deda90ce5525a3d0e))
    - Release dfir_lang v0.14.0, dfir_macro v0.14.0, hydro_deploy_integration v0.14.0, lattices_macro v0.5.10, variadics_macro v0.6.1, dfir_rs v0.14.0, hydro_deploy v0.14.0, hydro_lang v0.14.0, hydro_optimize v0.13.0, hydro_std v0.14.0, safety bump 6 crates ([`0683595`](https://github.com/hydro-project/hydro/commit/06835950c12884d661100c13f73ad23a98bfad9f))
</details>

## 0.13.2 (2025-04-17)

<csr-id-b7b040817eb3b5f601989592465a3829f93ef7b7/>
<csr-id-fe91f37ec43b20c1652560aebb15ac8d1596c0a4/>

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 3 commits contributed to the release.
 - 5 days passed between releases.
 - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 2 unique issues were worked on: [#1827](https://github.com/hydro-project/hydro/issues/1827), [#1840](https://github.com/hydro-project/hydro/issues/1840)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1827](https://github.com/hydro-project/hydro/issues/1827)**
    - Use where clauses to increase readability ([`fe91f37`](https://github.com/hydro-project/hydro/commit/fe91f37ec43b20c1652560aebb15ac8d1596c0a4))
 * **[#1840](https://github.com/hydro-project/hydro/issues/1840)**
    - Update pinned nightly to 2025-04-05, clippy fixes ([`b7b0408`](https://github.com/hydro-project/hydro/commit/b7b040817eb3b5f601989592465a3829f93ef7b7))
 * **Uncategorized**
    - Release hydro_lang v0.13.2 ([`056cf81`](https://github.com/hydro-project/hydro/commit/056cf818b8c4b6a382b9a4be07b640cf83bed651))
</details>

## 0.13.1 (2025-04-12)

### Bug Fixes

 - <csr-id-e41388edeaeffec689d46503bfdea467a53be797/> Enable file_lock feature in nightly builds
   This appears to be a regression from the commit that uses fs2 on stable
   builds.
   
   @mingweisamuel based on the CI error here it's because the feature was previously stabilized and has since been un-stabilized

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 2 commits contributed to the release.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 1 unique issue was worked on: [#1839](https://github.com/hydro-project/hydro/issues/1839)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1839](https://github.com/hydro-project/hydro/issues/1839)**
    - Enable file_lock feature in nightly builds ([`e41388e`](https://github.com/hydro-project/hydro/commit/e41388edeaeffec689d46503bfdea467a53be797))
 * **Uncategorized**
    - Release hydro_lang v0.13.1 ([`2cb6ee8`](https://github.com/hydro-project/hydro/commit/2cb6ee81665eb24ce76959fc977287e7fc9d3cdf))
</details>

## 0.13.0 (2025-04-11)

<csr-id-79ee5041c2b73bca38a02463a073c082bc33a91c/>

### New Features

 - <csr-id-6d24901550fa873fc8b4b474f9f6316d98cf7aa8/> implement profiling for macOS and Windows using samply
 - <csr-id-bfac9f1c29eee56eae9d4d2524b417235a0e5849/> only serialize once in broadcast
 - <csr-id-5ac247ca2006bbb45c5511c78dc6d9028f7451da/> update Stageleft and reduce reliance on DFIR re-exports
 - <csr-id-e0c4abb02054fc3d5dc866286b18f3f2bcd2ad36/> update Stageleft to reduce viral dependencies
   Now that Stageleft handles quoted snippets that refer to local
   dependencies, we do not need to duplicate deps into downstream crates.
 - <csr-id-127df13b7d7fc12d5265f1d7517f3b66a774dc07/> add resolve_futures and resolve_futures_ordered APIs

### Bug Fixes

<csr-id-28c342ff26b14700aeec97e90a96b51a4ffe0165/>
<csr-id-f783e67c9d5cfa0b8127755bed0856b5fe457b26/>
<csr-id-53d2913bc66c67b45a2baa591740a5f06a087d57/>

 - <csr-id-2219e6b954649906d002e7d4cd3f228b3c9369fe/> correctly resolve `__staged` paths for the crate being launched
 - <csr-id-fbb5fab72c5a64a07653c9b6389186ad079703ec/> handle `-1` addresses from samply, fix `_counter()` rollover
   This fixes samply profiling on my "ancient" 2019 x86-64 macbook pro
   15.3.2 (24D81)
   
   This pull request aims to fix the handling of –1 address values from
   samply by updating tracing filenames and refactoring related error and
   type handling. Key changes include:
   - Better error messages when `dtrace` or `samply` are not instaled.

### New Features (BREAKING)

 - <csr-id-dfb7a1b5ad47f03822e9b7cae7dae81914b305e2/> don't pull in dfir_rs during the compilation stage
   Because `hydro_lang` is responsible for _generating_ DFIR code, it
   doesn't actually need to depend on the runtime (`dfir_rs`), other than
   when it is used in the (legacy) macro mode or when we want to include
   utilities for runtime logic (`resource_measurement`). This sticks those
   pieces under feature flags and makes `dfir_rs` an optional dependency,
   which reduces the compile tree for crates like `hydro_test`.

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 13 commits contributed to the release.
 - 27 days passed between releases.
 - 12 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 12 unique issues were worked on: [#1741](https://github.com/hydro-project/hydro/issues/1741), [#1791](https://github.com/hydro-project/hydro/issues/1791), [#1796](https://github.com/hydro-project/hydro/issues/1796), [#1797](https://github.com/hydro-project/hydro/issues/1797), [#1798](https://github.com/hydro-project/hydro/issues/1798), [#1799](https://github.com/hydro-project/hydro/issues/1799), [#1802](https://github.com/hydro-project/hydro/issues/1802), [#1806](https://github.com/hydro-project/hydro/issues/1806), [#1812](https://github.com/hydro-project/hydro/issues/1812), [#1814](https://github.com/hydro-project/hydro/issues/1814), [#1816](https://github.com/hydro-project/hydro/issues/1816), [#1817](https://github.com/hydro-project/hydro/issues/1817)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1741](https://github.com/hydro-project/hydro/issues/1741)**
    - Add resolve_futures and resolve_futures_ordered APIs ([`127df13`](https://github.com/hydro-project/hydro/commit/127df13b7d7fc12d5265f1d7517f3b66a774dc07))
 * **[#1791](https://github.com/hydro-project/hydro/issues/1791)**
    - Update Stageleft to reduce viral dependencies ([`e0c4abb`](https://github.com/hydro-project/hydro/commit/e0c4abb02054fc3d5dc866286b18f3f2bcd2ad36))
 * **[#1796](https://github.com/hydro-project/hydro/issues/1796)**
    - Update Stageleft and reduce reliance on DFIR re-exports ([`5ac247c`](https://github.com/hydro-project/hydro/commit/5ac247ca2006bbb45c5511c78dc6d9028f7451da))
 * **[#1797](https://github.com/hydro-project/hydro/issues/1797)**
    - Don't pull in dfir_rs during the compilation stage ([`dfb7a1b`](https://github.com/hydro-project/hydro/commit/dfb7a1b5ad47f03822e9b7cae7dae81914b305e2))
 * **[#1798](https://github.com/hydro-project/hydro/issues/1798)**
    - Avoid Cargo.toml corruption when concurrently opened in a single process ([`53d2913`](https://github.com/hydro-project/hydro/commit/53d2913bc66c67b45a2baa591740a5f06a087d57))
 * **[#1799](https://github.com/hydro-project/hydro/issues/1799)**
    - Fix doctests without feature unification and improve atomic trybuild logic ([`f783e67`](https://github.com/hydro-project/hydro/commit/f783e67c9d5cfa0b8127755bed0856b5fe457b26))
 * **[#1802](https://github.com/hydro-project/hydro/issues/1802)**
    - Decrease size of IR enums to prevent stack overflow on windows, fix #1801 ([`28c342f`](https://github.com/hydro-project/hydro/commit/28c342ff26b14700aeec97e90a96b51a4ffe0165))
 * **[#1806](https://github.com/hydro-project/hydro/issues/1806)**
    - Only serialize once in broadcast ([`bfac9f1`](https://github.com/hydro-project/hydro/commit/bfac9f1c29eee56eae9d4d2524b417235a0e5849))
 * **[#1812](https://github.com/hydro-project/hydro/issues/1812)**
    - Implement profiling for macOS and Windows using samply ([`6d24901`](https://github.com/hydro-project/hydro/commit/6d24901550fa873fc8b4b474f9f6316d98cf7aa8))
 * **[#1814](https://github.com/hydro-project/hydro/issues/1814)**
    - Handle `-1` addresses from samply, fix `_counter()` rollover ([`fbb5fab`](https://github.com/hydro-project/hydro/commit/fbb5fab72c5a64a07653c9b6389186ad079703ec))
 * **[#1816](https://github.com/hydro-project/hydro/issues/1816)**
    - Use `fs2` file locking to fix stable build testing #1780 ([`79ee504`](https://github.com/hydro-project/hydro/commit/79ee5041c2b73bca38a02463a073c082bc33a91c))
 * **[#1817](https://github.com/hydro-project/hydro/issues/1817)**
    - Correctly resolve `__staged` paths for the crate being launched ([`2219e6b`](https://github.com/hydro-project/hydro/commit/2219e6b954649906d002e7d4cd3f228b3c9369fe))
 * **Uncategorized**
    - Release dfir_lang v0.13.0, dfir_datalog_core v0.13.0, dfir_datalog v0.13.0, dfir_macro v0.13.0, hydro_deploy_integration v0.13.0, dfir_rs v0.13.0, hydro_deploy v0.13.0, hydro_lang v0.13.0, hydro_std v0.13.0, hydro_cli v0.13.0, safety bump 8 crates ([`400fd8f`](https://github.com/hydro-project/hydro/commit/400fd8f2e8cada253f54980e7edce0631be70a82))
</details>

## 0.12.1 (2025-03-15)

<csr-id-38e6721be69f6a41aa47a01a9d06d56a01be1355/>
<csr-id-f14174e92875b3264ef811effd954ed76cb3c948/>
<csr-id-056ac62611319b7bd10a751d7e231423a1b8dc4e/>
<csr-id-7dd71d67da162d2e4f3043b271a52037a3c983c0/>

### Documentation

 - <csr-id-b235a42a3071e55da7b09bdc8bc710b18e0fe053/> demote python deploy docs, fix docsrs configs, fix #1392, fix #1629
   Running thru the quickstart in order to write more about Rust
   `hydro_deploy`, ran into some confusion due to feature-gated items not
   showing up in docs.
   
   `rustdocflags = [ '--cfg=docsrs', '--cfg=stageleft_runtime' ]` uses the
   standard `[cfg(docrs)]` as well as enabled our
   `[cfg(stageleft_runtime)]` so things `impl<H: Host + 'static>
   IntoProcessSpec<'_, HydroDeploy> for Arc<H>` show up.
   
   Also set `--all-features` for the docsrs build

### Bug Fixes

 - <csr-id-ed662013a29f0acaaf02fec8d90086ebfe868af8/> fix failing Clippy on stable due to unused variable
 - <csr-id-fdcf96a817825d1801b50055395e0284a0db2942/> use file locks to avoid clobbering Cargo configs
 - <csr-id-530604ccce4e1825ea5a35caa696dec5e846fefb/> fix codegen non-determinism that triggers rebuilds
   Also makes the generated `Cargo.toml` fixed regardless of the "extra
   Hydro features" or "test mode", by shifting them into special features
   defined on the trybuild repo. Overall, this results in the only dynamic
   piece being the generated `src/bin` files, which means that deploying
   the same code multiple times does not result in any recompilation.

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 10 commits contributed to the release.
 - 7 days passed between releases.
 - 8 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 8 unique issues were worked on: [#1768](https://github.com/hydro-project/hydro/issues/1768), [#1773](https://github.com/hydro-project/hydro/issues/1773), [#1774](https://github.com/hydro-project/hydro/issues/1774), [#1779](https://github.com/hydro-project/hydro/issues/1779), [#1780](https://github.com/hydro-project/hydro/issues/1780), [#1784](https://github.com/hydro-project/hydro/issues/1784), [#1785](https://github.com/hydro-project/hydro/issues/1785), [#1787](https://github.com/hydro-project/hydro/issues/1787)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1768](https://github.com/hydro-project/hydro/issues/1768)**
    - Update pinned nightly to 2025-03-10, clippy cleanups ([`f14174e`](https://github.com/hydro-project/hydro/commit/f14174e92875b3264ef811effd954ed76cb3c948))
 * **[#1773](https://github.com/hydro-project/hydro/issues/1773)**
    - Remove "hydroflow" for `hydro_deploy_integration`, `hydro_deploy::rust_crate`, fix #1712 ([`7dd71d6`](https://github.com/hydro-project/hydro/commit/7dd71d67da162d2e4f3043b271a52037a3c983c0))
 * **[#1774](https://github.com/hydro-project/hydro/issues/1774)**
    - Remove stageleft from repo, fix #1764 ([`38e6721`](https://github.com/hydro-project/hydro/commit/38e6721be69f6a41aa47a01a9d06d56a01be1355))
 * **[#1779](https://github.com/hydro-project/hydro/issues/1779)**
    - Fix codegen non-determinism that triggers rebuilds ([`530604c`](https://github.com/hydro-project/hydro/commit/530604ccce4e1825ea5a35caa696dec5e846fefb))
 * **[#1780](https://github.com/hydro-project/hydro/issues/1780)**
    - Use file locks to avoid clobbering Cargo configs ([`fdcf96a`](https://github.com/hydro-project/hydro/commit/fdcf96a817825d1801b50055395e0284a0db2942))
 * **[#1784](https://github.com/hydro-project/hydro/issues/1784)**
    - Fix failing Clippy on stable due to unused variable ([`ed66201`](https://github.com/hydro-project/hydro/commit/ed662013a29f0acaaf02fec8d90086ebfe868af8))
 * **[#1785](https://github.com/hydro-project/hydro/issues/1785)**
    - Cleanup old clippy lints, remove deprecated `relalg` crate ([`056ac62`](https://github.com/hydro-project/hydro/commit/056ac62611319b7bd10a751d7e231423a1b8dc4e))
 * **[#1787](https://github.com/hydro-project/hydro/issues/1787)**
    - Demote python deploy docs, fix docsrs configs, fix #1392, fix #1629 ([`b235a42`](https://github.com/hydro-project/hydro/commit/b235a42a3071e55da7b09bdc8bc710b18e0fe053))
 * **Uncategorized**
    - Release include_mdtests v0.0.0, dfir_rs v0.12.1, hydro_deploy v0.12.1, hydro_lang v0.12.1, hydro_std v0.12.1, hydro_cli v0.12.1 ([`faf0d3e`](https://github.com/hydro-project/hydro/commit/faf0d3ed9f172275f2e2f219c5ead1910c209a36))
    - Release dfir_lang v0.12.1, dfir_datalog_core v0.12.1, dfir_datalog v0.12.1, dfir_macro v0.12.1, hydro_deploy_integration v0.12.1, lattices v0.6.1, pusherator v0.0.12, dfir_rs v0.12.1, hydro_deploy v0.12.1, hydro_lang v0.12.1, hydro_std v0.12.1, hydro_cli v0.12.1 ([`23221b5`](https://github.com/hydro-project/hydro/commit/23221b53b30918707ddaa85529d04cd7919166b4))
</details>

## 0.12.0 (2025-03-08)

<csr-id-49a387d4a21f0763df8ec94de73fb953c9cd333a/>
<csr-id-c293cca6855695107e9cef5c5df99fb04a571934/>
<csr-id-b1514be40f44201866bf9420bd4fc7d2b35c5e9c/>
<csr-id-44fb2806cf2d165d86695910f4755e0944c11832/>
<csr-id-41e5bb93eb9c19a88167a63bce0ceb800f8f300d/>
<csr-id-80407a2f0fdaa8b8a81688d181166a0da8aa7b52/>
<csr-id-2fd6119afed850a0c50ecc69e5c4d8de61a2f4cb/>
<csr-id-524fa67232b54f5faeb797b43070f2f197c558dd/>
<csr-id-3966d9063dae52e65b077321e0bd1150f2b0c3f1/>
<csr-id-11df2e623f7db2cebd657ddbdd5aaac7649ddbb3/>
<csr-id-5cd0a9625822620dcc99b99356edfecbf0549497/>
<csr-id-ec3795a678d261a38085405b6e9bfea943dafefb/>

### Documentation

 - <csr-id-fc53a348b57eef09abb66d9249c2d84bf5207d0f/> document APIs for `Stream`
 - <csr-id-343a33f2ab98bef61252d49370fa2aa1980331d4/> initial website docs on core Hydro concepts
 - <csr-id-d7741d55a3ea9b172e962e7398f0414d0427c3f9/> add initial Rustdoc for some Stream APIs

### New Features

 - <csr-id-2ad0be3a843431afdff21ad0119d3661b77666b8/> add APIs for getting DFIR without deploying
   Also modifies DFIR to elide Stageleft `type_hint`s when pretty printing
   an operator (e.g. for Mermaid). Also, because we stratify the graph
   before we can print it, adds basic support for printing stratified
   graphs as a surface string.
 - <csr-id-841886661a589cd94c5ea1b958246e3ec7e7135a/> Insert counter to measure cardinality for specific operators
 - <csr-id-dabb2df936d79ae314d9a6e479d7cc6b7c7ecf68/> Partitioning
 - <csr-id-980d62735b80034cd04f39ca29b7e8a7ce4e4731/> Decoupling
   Mechanism for decoupling at specified nodes
   
   ---------
 - <csr-id-1d48fde45a741e5eec59ce3b27a4a8f195198428/> Link DFIR operators to Hydro operators in perf
 - <csr-id-5ba6236555113dc019fe61adaf1d5aa34e07bb58/> provide in-memory access to perf tracing results
 - <csr-id-edd7ce1c3f16932b8cb597fb5c4baf31bc6895e0/> Compartmentalized Paxos & kv_replica bug fix
 - <csr-id-53b26fcfb5ac942680e830078f4411922f917f91/> Add ability to customize operator tag for stack tracing/flamegraphs
   Actually inserting Hydro-level operator IDs/names is TODO
   
   #1479
 - <csr-id-69831f9dc724ba7915b8ade8134839c42786ac76/> Add metadata field to HydroNode
 - <csr-id-1ca762d5fac0f56f2778c5d19357564050d09cf3/> make `Stream::cloned` work with borrowed elements
 - <csr-id-6ff7fc2c7c0f835c33b99f847cd3765221ed8f7e/> provide APIs for blanket-deploying locations
   This makes it easy to implement patterns like deploying everything to
   localhost.
 - <csr-id-ca291dd618fc4065c4e30097c5ea605226383cec/> send_partitioned operator and move decoupling
   Allows specifying a distribution policy (for deciding which partition to
   send each message to) before networking. Designed to be as easy as
   possible to inject (so the distribution policy function definition takes
   in the cluster ID, for example, even though it doesn't need to, because
   this way we can avoid project->map->join)
 - <csr-id-612e628dc56cbe31c3fb83a41142a7749b3e8492/> allow developers to add their own re-export rewrites

### Bug Fixes

 - <csr-id-23164c12ea83eb337824dcc3946d5be0ac11fb5a/> update trybuild error message after Rust update
 - <csr-id-c624cd3f4030cd4bad3d6c6146d8c0b8d7687bc9/> send_bincode_lifetime test
   Test expected stderr stemmed from importing the wrong library, not from
   the actual error regarding lifetimes
 - <csr-id-48b275c1247f4f6fe7e6b63a5ae184c5d85b6fa1/> use correct `__staged` path when rewriting `crate::` imports
   Previously, a rewrite would first turn `crate` into `crate::__staged`,
   and another would rewrite `crate::__staged` into `hydro_test::__staged`.
   The latter global rewrite is unnecessary because the stageleft logic
   already will use the full crate name when handling public types, so we
   drop it.
 - <csr-id-24da1a92be3cfa0b5de1ca1e6a573b652b987416/> avoid crashes and miscompilations with unused locations
   Previously, if a location was not used in the graph, we would crash or
   use faulty IDs in the generated code. This also changes semantics
   slightly so that if there is a cluster with no assigned computation, it
   will be treated as an empty cluster at runtime (the list of cluster IDs
   will be an empty slice).

### Documentation (BREAKING)

 - <csr-id-89d9c15d5b000fb4ad246c3d511110ed25211ffa/> rename `singleton_first_tick` to `optional_first_tick` and add example of doctest

### Bug Fixes (BREAKING)

 - <csr-id-5cdbbd0e5950b6b464a5194478198a7e338fcd74/> raise a panic if a user forgets to complete a cycle
 - <csr-id-a7e22cdd312b8483163aa89751833e1657703b8d/> reduce where `#[cfg(stageleft_runtime)]` needs to be used
   Simplifies the logic for generating the public clone of the code, which
   eliminates the need to sprinkle `#[cfg(stageleft_runtime)]` (renamed
   from `#[stageleft::runtime]`) everywhere. Also adds logic to pass
   through `cfg` attrs when re-exporting public types.

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 30 commits contributed to the release.
 - 74 days passed between releases.
 - 29 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 29 unique issues were worked on: [#1632](https://github.com/hydro-project/hydro/issues/1632), [#1636](https://github.com/hydro-project/hydro/issues/1636), [#1638](https://github.com/hydro-project/hydro/issues/1638), [#1641](https://github.com/hydro-project/hydro/issues/1641), [#1650](https://github.com/hydro-project/hydro/issues/1650), [#1652](https://github.com/hydro-project/hydro/issues/1652), [#1657](https://github.com/hydro-project/hydro/issues/1657), [#1659](https://github.com/hydro-project/hydro/issues/1659), [#1668](https://github.com/hydro-project/hydro/issues/1668), [#1676](https://github.com/hydro-project/hydro/issues/1676), [#1678](https://github.com/hydro-project/hydro/issues/1678), [#1681](https://github.com/hydro-project/hydro/issues/1681), [#1689](https://github.com/hydro-project/hydro/issues/1689), [#1695](https://github.com/hydro-project/hydro/issues/1695), [#1701](https://github.com/hydro-project/hydro/issues/1701), [#1702](https://github.com/hydro-project/hydro/issues/1702), [#1706](https://github.com/hydro-project/hydro/issues/1706), [#1707](https://github.com/hydro-project/hydro/issues/1707), [#1713](https://github.com/hydro-project/hydro/issues/1713), [#1719](https://github.com/hydro-project/hydro/issues/1719), [#1721](https://github.com/hydro-project/hydro/issues/1721), [#1723](https://github.com/hydro-project/hydro/issues/1723), [#1724](https://github.com/hydro-project/hydro/issues/1724), [#1728](https://github.com/hydro-project/hydro/issues/1728), [#1734](https://github.com/hydro-project/hydro/issues/1734), [#1735](https://github.com/hydro-project/hydro/issues/1735), [#1737](https://github.com/hydro-project/hydro/issues/1737), [#1747](https://github.com/hydro-project/hydro/issues/1747), [#1758](https://github.com/hydro-project/hydro/issues/1758)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1632](https://github.com/hydro-project/hydro/issues/1632)**
    - Add metadata field to HydroNode ([`69831f9`](https://github.com/hydro-project/hydro/commit/69831f9dc724ba7915b8ade8134839c42786ac76))
 * **[#1636](https://github.com/hydro-project/hydro/issues/1636)**
    - Add example of doctest for `map` ([`11df2e6`](https://github.com/hydro-project/hydro/commit/11df2e623f7db2cebd657ddbdd5aaac7649ddbb3))
 * **[#1638](https://github.com/hydro-project/hydro/issues/1638)**
    - Allow developers to add their own re-export rewrites ([`612e628`](https://github.com/hydro-project/hydro/commit/612e628dc56cbe31c3fb83a41142a7749b3e8492))
 * **[#1641](https://github.com/hydro-project/hydro/issues/1641)**
    - Avoid crashes and miscompilations with unused locations ([`24da1a9`](https://github.com/hydro-project/hydro/commit/24da1a92be3cfa0b5de1ca1e6a573b652b987416))
 * **[#1650](https://github.com/hydro-project/hydro/issues/1650)**
    - Add initial Rustdoc for some Stream APIs ([`d7741d5`](https://github.com/hydro-project/hydro/commit/d7741d55a3ea9b172e962e7398f0414d0427c3f9))
 * **[#1652](https://github.com/hydro-project/hydro/issues/1652)**
    - Send_partitioned operator and move decoupling ([`ca291dd`](https://github.com/hydro-project/hydro/commit/ca291dd618fc4065c4e30097c5ea605226383cec))
 * **[#1657](https://github.com/hydro-project/hydro/issues/1657)**
    - Use correct `__staged` path when rewriting `crate::` imports ([`48b275c`](https://github.com/hydro-project/hydro/commit/48b275c1247f4f6fe7e6b63a5ae184c5d85b6fa1))
 * **[#1659](https://github.com/hydro-project/hydro/issues/1659)**
    - Rename `singleton_first_tick` to `optional_first_tick` and add example of doctest ([`89d9c15`](https://github.com/hydro-project/hydro/commit/89d9c15d5b000fb4ad246c3d511110ed25211ffa))
 * **[#1668](https://github.com/hydro-project/hydro/issues/1668)**
    - Initial website docs on core Hydro concepts ([`343a33f`](https://github.com/hydro-project/hydro/commit/343a33f2ab98bef61252d49370fa2aa1980331d4))
 * **[#1676](https://github.com/hydro-project/hydro/issues/1676)**
    - Provide APIs for blanket-deploying locations ([`6ff7fc2`](https://github.com/hydro-project/hydro/commit/6ff7fc2c7c0f835c33b99f847cd3765221ed8f7e))
 * **[#1678](https://github.com/hydro-project/hydro/issues/1678)**
    - Make `Stream::cloned` work with borrowed elements ([`1ca762d`](https://github.com/hydro-project/hydro/commit/1ca762d5fac0f56f2778c5d19357564050d09cf3))
 * **[#1681](https://github.com/hydro-project/hydro/issues/1681)**
    - Rename timestamp to atomic and provide batching shortcuts ([`524fa67`](https://github.com/hydro-project/hydro/commit/524fa67232b54f5faeb797b43070f2f197c558dd))
 * **[#1689](https://github.com/hydro-project/hydro/issues/1689)**
    - Document APIs for `Stream` ([`fc53a34`](https://github.com/hydro-project/hydro/commit/fc53a348b57eef09abb66d9249c2d84bf5207d0f))
 * **[#1695](https://github.com/hydro-project/hydro/issues/1695)**
    - Rename `_interleaved` to `_anonymous` ([`2fd6119`](https://github.com/hydro-project/hydro/commit/2fd6119afed850a0c50ecc69e5c4d8de61a2f4cb))
 * **[#1701](https://github.com/hydro-project/hydro/issues/1701)**
    - Compartmentalized Paxos & kv_replica bug fix ([`edd7ce1`](https://github.com/hydro-project/hydro/commit/edd7ce1c3f16932b8cb597fb5c4baf31bc6895e0))
 * **[#1702](https://github.com/hydro-project/hydro/issues/1702)**
    - Add ability to customize operator tag for stack tracing/flamegraphs ([`53b26fc`](https://github.com/hydro-project/hydro/commit/53b26fcfb5ac942680e830078f4411922f917f91))
 * **[#1706](https://github.com/hydro-project/hydro/issues/1706)**
    - Send_bincode_lifetime test ([`c624cd3`](https://github.com/hydro-project/hydro/commit/c624cd3f4030cd4bad3d6c6146d8c0b8d7687bc9))
 * **[#1707](https://github.com/hydro-project/hydro/issues/1707)**
    - Update trybuild error message after Rust update ([`23164c1`](https://github.com/hydro-project/hydro/commit/23164c12ea83eb337824dcc3946d5be0ac11fb5a))
 * **[#1713](https://github.com/hydro-project/hydro/issues/1713)**
    - Use DFIR name instead of Hydroflow in some places, fix #1644 ([`3966d90`](https://github.com/hydro-project/hydro/commit/3966d9063dae52e65b077321e0bd1150f2b0c3f1))
 * **[#1719](https://github.com/hydro-project/hydro/issues/1719)**
    - Provide in-memory access to perf tracing results ([`5ba6236`](https://github.com/hydro-project/hydro/commit/5ba6236555113dc019fe61adaf1d5aa34e07bb58))
 * **[#1721](https://github.com/hydro-project/hydro/issues/1721)**
    - Reduce where `#[cfg(stageleft_runtime)]` needs to be used ([`a7e22cd`](https://github.com/hydro-project/hydro/commit/a7e22cdd312b8483163aa89751833e1657703b8d))
 * **[#1723](https://github.com/hydro-project/hydro/issues/1723)**
    - Link DFIR operators to Hydro operators in perf ([`1d48fde`](https://github.com/hydro-project/hydro/commit/1d48fde45a741e5eec59ce3b27a4a8f195198428))
 * **[#1724](https://github.com/hydro-project/hydro/issues/1724)**
    - Decoupling ([`980d627`](https://github.com/hydro-project/hydro/commit/980d62735b80034cd04f39ca29b7e8a7ce4e4731))
 * **[#1728](https://github.com/hydro-project/hydro/issues/1728)**
    - Partitioning ([`dabb2df`](https://github.com/hydro-project/hydro/commit/dabb2df936d79ae314d9a6e479d7cc6b7c7ecf68))
 * **[#1734](https://github.com/hydro-project/hydro/issues/1734)**
    - Raise a panic if a user forgets to complete a cycle ([`5cdbbd0`](https://github.com/hydro-project/hydro/commit/5cdbbd0e5950b6b464a5194478198a7e338fcd74))
 * **[#1735](https://github.com/hydro-project/hydro/issues/1735)**
    - Insert counter to measure cardinality for specific operators ([`8418866`](https://github.com/hydro-project/hydro/commit/841886661a589cd94c5ea1b958246e3ec7e7135a))
 * **[#1737](https://github.com/hydro-project/hydro/issues/1737)**
    - Enable lints, cleanups for Rust 2024 #1732 ([`5cd0a96`](https://github.com/hydro-project/hydro/commit/5cd0a9625822620dcc99b99356edfecbf0549497))
 * **[#1747](https://github.com/hydro-project/hydro/issues/1747)**
    - Upgrade to Rust 2024 edition ([`ec3795a`](https://github.com/hydro-project/hydro/commit/ec3795a678d261a38085405b6e9bfea943dafefb))
 * **[#1758](https://github.com/hydro-project/hydro/issues/1758)**
    - Add APIs for getting DFIR without deploying ([`2ad0be3`](https://github.com/hydro-project/hydro/commit/2ad0be3a843431afdff21ad0119d3661b77666b8))
 * **Uncategorized**
    - Release dfir_lang v0.12.0, dfir_datalog_core v0.12.0, dfir_datalog v0.12.0, dfir_macro v0.12.0, hydroflow_deploy_integration v0.12.0, lattices_macro v0.5.9, variadics v0.0.9, variadics_macro v0.6.0, lattices v0.6.0, multiplatform_test v0.5.0, pusherator v0.0.11, dfir_rs v0.12.0, hydro_deploy v0.12.0, stageleft_macro v0.6.0, stageleft v0.7.0, stageleft_tool v0.6.0, hydro_lang v0.12.0, hydro_std v0.12.0, hydro_cli v0.12.0, safety bump 10 crates ([`973c925`](https://github.com/hydro-project/hydro/commit/973c925e87ed78344494581bd7ce1bbb4186a2f3))
</details>

## 0.11.0 (2024-12-23)

<csr-id-0dc709ed5a53c723f47fa1d10063e57bb50a63c8/>
<csr-id-9ea5f061ee0f116caf8fc4ea99b62a9c7691be2a/>
<csr-id-ec55910f5a41d4f08059b5feda4b96fbd058c959/>
<csr-id-251b1039c71d45d3f86123dba1926026ded80824/>
<csr-id-78f6a3299fff822abaea50841800a07f0e2ae128/>
<csr-id-9f3c8c468c58b7ec50d1c104fc24db0920d13c0d/>
<csr-id-03b3a349013a71b324276bca5329c33d400a73ff/>
<csr-id-accb13cad718c99d350e4bafe82e0ca38bf94c62/>
<csr-id-3291c07b37c9f9031837a2a32953e8f8854ec298/>
<csr-id-162e49cf8a8cf944cded7f775d6f78afe4a89837/>
<csr-id-a6f60c92ae7168eb86eb311ca7b7afb10025c7de/>
<csr-id-2a22d50285ae1be1a5f888d5d15321cc1bb13c82/>
<csr-id-5e58e346612a094c7e637919c84ab1e78b59be27/>
<csr-id-54f461acfce091276b8ce7574c0690e6d648546d/>

### Documentation

 - <csr-id-204bd117ca3a8845b4986539efb91a0c612dfa05/> add `repository` field to `Cargo.toml`s, fix #1452
   #1452 
   
   Will trigger new releases of the following:
   `unchanged = 'hydroflow_deploy_integration', 'variadics',
   'variadics_macro', 'pusherator'`
   
   (All other crates already have changes, so would be released anyway)
 - <csr-id-27c40e2ca5a822f6ebd31c7f01213aa6d407418a/> update `CHANGELOG.md`s for big rename
   Generated before rename per `RELEASING.md` instructions.
 - <csr-id-987f7ad8668d9740ceea577a595035228898d530/> cleanups for the rename, fixing links

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 15 commits contributed to the release.
 - 38 days passed between releases.
 - 15 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 15 unique issues were worked on: [#1559](https://github.com/hydro-project/hydroflow/issues/1559), [#1562](https://github.com/hydro-project/hydroflow/issues/1562), [#1565](https://github.com/hydro-project/hydroflow/issues/1565), [#1566](https://github.com/hydro-project/hydroflow/issues/1566), [#1568](https://github.com/hydro-project/hydroflow/issues/1568), [#1574](https://github.com/hydro-project/hydroflow/issues/1574), [#1575](https://github.com/hydro-project/hydroflow/issues/1575), [#1583](https://github.com/hydro-project/hydroflow/issues/1583), [#1584](https://github.com/hydro-project/hydroflow/issues/1584), [#1589](https://github.com/hydro-project/hydroflow/issues/1589), [#1590](https://github.com/hydro-project/hydroflow/issues/1590), [#1597](https://github.com/hydro-project/hydroflow/issues/1597), [#1598](https://github.com/hydro-project/hydroflow/issues/1598), [#1606](https://github.com/hydro-project/hydroflow/issues/1606), [#1611](https://github.com/hydro-project/hydroflow/issues/1611)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1559](https://github.com/hydro-project/hydroflow/issues/1559)**
    - Restrict lifetime parameters to be actually invariant ([`f6989ba`](https://github.com/hydro-project/hydroflow/commit/f6989baf12631cf43a814123e274466740c2f159))
 * **[#1562](https://github.com/hydro-project/hydroflow/issues/1562)**
    - Don't re-export all of `hydroflow` ([`9f3c8c4`](https://github.com/hydro-project/hydroflow/commit/9f3c8c468c58b7ec50d1c104fc24db0920d13c0d))
 * **[#1565](https://github.com/hydro-project/hydroflow/issues/1565)**
    - Rename `union` to `chain` and restrict LHS to be bounded ([`eb1ad3a`](https://github.com/hydro-project/hydroflow/commit/eb1ad3a54705efb06ee3f0647deaa9a52731ae6e))
 * **[#1566](https://github.com/hydro-project/hydroflow/issues/1566)**
    - Add `round_robin` helpers for networking ([`22de01f`](https://github.com/hydro-project/hydroflow/commit/22de01f5f566cd8cf7cb3bd31ae8bed99bf1e9ab))
 * **[#1568](https://github.com/hydro-project/hydroflow/issues/1568)**
    - Introduce an unordered variant of streams to strengthen determinism guarantees ([`4c5ca31`](https://github.com/hydro-project/hydroflow/commit/4c5ca31486a9cfcbcba3af03aa30084a8b8dfcce))
 * **[#1574](https://github.com/hydro-project/hydroflow/issues/1574)**
    - Allow cluster self ID to be referenced as a global constant ([`a93a5e5`](https://github.com/hydro-project/hydroflow/commit/a93a5e59e1681d325b3433193bb86254d23bdc77))
 * **[#1575](https://github.com/hydro-project/hydroflow/issues/1575)**
    - Allow runtime context to be referenced as a global constant ([`f96676d`](https://github.com/hydro-project/hydroflow/commit/f96676d2d53d824c5c168e3db69722c2e9956fe2))
 * **[#1583](https://github.com/hydro-project/hydroflow/issues/1583)**
    - Generalize quorum logic ([`ec55910`](https://github.com/hydro-project/hydroflow/commit/ec55910f5a41d4f08059b5feda4b96fbd058c959))
 * **[#1584](https://github.com/hydro-project/hydroflow/issues/1584)**
    - Mark non-deterministic operators as unsafe and introduce timestamped streams ([`9393899`](https://github.com/hydro-project/hydroflow/commit/939389953875bf5f94ea84503a7a35efd7342282))
 * **[#1589](https://github.com/hydro-project/hydroflow/issues/1589)**
    - Further reduce namespace pollution ([`78f6a32`](https://github.com/hydro-project/hydroflow/commit/78f6a3299fff822abaea50841800a07f0e2ae128))
 * **[#1590](https://github.com/hydro-project/hydroflow/issues/1590)**
    - Use same hashing library everywhere ([`0dc709e`](https://github.com/hydro-project/hydroflow/commit/0dc709ed5a53c723f47fa1d10063e57bb50a63c8))
 * **[#1597](https://github.com/hydro-project/hydroflow/issues/1597)**
    - Use `match_box` macro to compile on stable ([`9ea5f06`](https://github.com/hydro-project/hydroflow/commit/9ea5f061ee0f116caf8fc4ea99b62a9c7691be2a))
 * **[#1598](https://github.com/hydro-project/hydroflow/issues/1598)**
    - Drop nightly feature flag from trybuild codegen ([`032cde6`](https://github.com/hydro-project/hydroflow/commit/032cde6492390733e3e82d7126cc84989bf31853))
 * **[#1606](https://github.com/hydro-project/hydroflow/issues/1606)**
    - Use `cfg(nightly)` instead of feature, remove `-Z` flag, use `Diagnostic::try_emit` ([`251b103`](https://github.com/hydro-project/hydroflow/commit/251b1039c71d45d3f86123dba1926026ded80824))
 * **[#1611](https://github.com/hydro-project/hydroflow/issues/1611)**
    - Minimize dependencies pulled into `trybuild` builds ([`c65b4c4`](https://github.com/hydro-project/hydroflow/commit/c65b4c49f3a3f2dcc7c8c28d1871b88c6c954822))
</details>

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 9 commits contributed to the release.
 - 7 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 6 unique issues were worked on: [#1501](https://github.com/hydro-project/hydro/issues/1501), [#1617](https://github.com/hydro-project/hydro/issues/1617), [#1620](https://github.com/hydro-project/hydro/issues/1620), [#1623](https://github.com/hydro-project/hydro/issues/1623), [#1624](https://github.com/hydro-project/hydro/issues/1624), [#1627](https://github.com/hydro-project/hydro/issues/1627)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1501](https://github.com/hydro-project/hydro/issues/1501)**
    - Add `repository` field to `Cargo.toml`s, fix #1452 ([`204bd11`](https://github.com/hydro-project/hydro/commit/204bd117ca3a8845b4986539efb91a0c612dfa05))
 * **[#1617](https://github.com/hydro-project/hydro/issues/1617)**
    - Rename HydroflowPlus to Hydro ([`54f461a`](https://github.com/hydro-project/hydro/commit/54f461acfce091276b8ce7574c0690e6d648546d))
 * **[#1620](https://github.com/hydro-project/hydro/issues/1620)**
    - Rename Hydroflow -> DFIR ([`5e58e34`](https://github.com/hydro-project/hydro/commit/5e58e346612a094c7e637919c84ab1e78b59be27))
 * **[#1623](https://github.com/hydro-project/hydro/issues/1623)**
    - Cleanup snapshots ([`2a22d50`](https://github.com/hydro-project/hydro/commit/2a22d50285ae1be1a5f888d5d15321cc1bb13c82))
 * **[#1624](https://github.com/hydro-project/hydro/issues/1624)**
    - Cleanups for the rename, fixing links ([`987f7ad`](https://github.com/hydro-project/hydro/commit/987f7ad8668d9740ceea577a595035228898d530))
 * **[#1627](https://github.com/hydro-project/hydro/issues/1627)**
    - Bump versions manually for renamed crates, per `RELEASING.md` ([`a6f60c9`](https://github.com/hydro-project/hydro/commit/a6f60c92ae7168eb86eb311ca7b7afb10025c7de))
 * **Uncategorized**
    - Release stageleft_macro v0.5.0, stageleft v0.6.0, stageleft_tool v0.5.0, hydro_lang v0.11.0, hydro_std v0.11.0, hydro_cli v0.11.0 ([`7633c38`](https://github.com/hydro-project/hydro/commit/7633c38c4a56acf7e5b3b6f2a72ccc1d6e6eeba1))
    - Release dfir_lang v0.11.0, dfir_datalog_core v0.11.0, dfir_datalog v0.11.0, dfir_macro v0.11.0, hydroflow_deploy_integration v0.11.0, lattices_macro v0.5.8, variadics v0.0.8, variadics_macro v0.5.6, lattices v0.5.9, multiplatform_test v0.4.0, pusherator v0.0.10, dfir_rs v0.11.0, hydro_deploy v0.11.0, stageleft_macro v0.5.0, stageleft v0.6.0, stageleft_tool v0.5.0, hydro_lang v0.11.0, hydro_std v0.11.0, hydro_cli v0.11.0, safety bump 6 crates ([`361b443`](https://github.com/hydro-project/hydro/commit/361b4439ef9c781860f18d511668ab463a8c5203))
    - Update `CHANGELOG.md`s for big rename ([`27c40e2`](https://github.com/hydro-project/hydro/commit/27c40e2ca5a822f6ebd31c7f01213aa6d407418a))
</details>

## v0.10.0 (2024-11-08)

<csr-id-d5677604e93c07a5392f4229af94a0b736eca382/>
<csr-id-a1b45203178165683cb4b5ae611c598cc9c14853/>
<csr-id-e9d05bf11a0e85da8ed1a0fe00be7769298308c2/>
<csr-id-9f744052dd4ac744f5a1baa4e0cb9253adaeba1b/>
<csr-id-5b819a2dc6c507222a3e22d71efcde8b43cebad5/>
<csr-id-244207c2acd2243ece6e787d54eadacf06e9e8bb/>
<csr-id-bf9dcd5a923dd4b5efa337a9127086e5609a1722/>
<csr-id-d9634f242a97c06bdb53011bf3d75256425a1598/>
<csr-id-534fe974101e38ecb847cd759dbaf503ff97f822/>
<csr-id-0a5abab3dac224c9591bcdd837d07c6e5c2773c6/>
<csr-id-38b17cd977fb6c00ddc37e7a5b30e45dba17329e/>
<csr-id-8b7b1c60fd33b78f9a4b0873bbbd150260ae2ad5/>
<csr-id-1b18b358c87caa37a6519612131c8674653a2407/>
<csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/>
<csr-id-47cb703e771f7d1c451ceb9d185ada96410949da/>
<csr-id-0bd3a2d2230cbef24210f71a3ea83d82d1cc7244/>
<csr-id-9107841700db0ae72de6269ab6f132be0ae51cd9/>
<csr-id-919099ea3a414560b473ec89b993eeb26dfa2579/>
<csr-id-5657563c989566e7c7b69dcb395e40b024c83c6c/>
<csr-id-e5b456bdafcb80aae6039e4c90a2e60098e499bf/>
<csr-id-30c4f708faff7875ab42e551dd4bccbe231dfdad/>
<csr-id-8ad997b2dfd23bb09f7d361d763d6b5e78f406d6/>

### Chore

 - <csr-id-d5677604e93c07a5392f4229af94a0b736eca382/> update pinned rust version, clippy lints, remove some dead code

### Refactor

<csr-id-dff2a40669736014349cf12744d6a057a7992e11/>

 - <csr-id-dff2a40669736014349cf12744d6a057a7992e11/> start splitting out leader election into a separate module
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1485).
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485

### New Features

 - <csr-id-baedf23eaa056bc0dad8331d116bb71176764206/> improve quickstart ergonomics
 - <csr-id-98a21e36bd50d312402e46357fea6330816d0139/> add utility to dedup tees when debugging IR
 - <csr-id-2141c5f04cb7e9cb7cd2f50f849f6c4b3d745377/> add decouple and simple test and two_pc
 - <csr-id-074f2cf76158a126370a7e6b184bc6b928eb6fe2/> implement support for external network outputs
 - <csr-id-afe78c343658472513b34d28658634b253148aee/> add ability to have staged flows inside unit tests
   Whenever a Hydroflow+ program is compiled, it depends on a generated
   `__staged` module, which contains the entire contents of the crate but
   with every type / function made `pub` and exported, so that the compiled
   UDFs can resolve local references appropriately.
   
   Previously, we would not do this for `#[cfg(test)]` modules, since they
   may use `dev-dependencies` and therefore the generated module may fail
   to compile when not in test mode. To solve this, when running a unit
   test (marked with `hydroflow_plus::deploy::init_test()`) that uses
   trybuild, we emit a version of the `__staged` module with `#[cfg(test)]`
   modules included _into the generated trybuild sources_ because we can
   guarantee via trybuild that the appropriate `dev-dependencies` are
   available.
   
   This by itself allows crates depending on `hydroflow_plus` to have local
   unit tests with Hydroflow+ logic inside them. But we also want to use
   this support for unit tests inside `hydroflow_plus` itself. To enable
   that, we eliminate the `hydroflow_plus_deploy` crate and move its
   contents directly to `hydroflow_plus` itself so that we can access the
   trybuild machinery without incurring a circular dependency.
   
   Also fixes #1408
 - <csr-id-8a809315cd37929687fcabc34a12042db25d5767/> add API for external network inputs
   This is a key step towards being able to unit-test HF+ graphs, by being
   able to have controlled inputs. Outputs next.
 - <csr-id-60d9becaf0b67f9819316ce6d76bd867f7d46505/> splice UDFs with type hints to avoid inference failures

### Bug Fixes

 - <csr-id-2faffdbf2cc886da22e496df64f46aefa380766c/> properly handle `crate::` imports
 - <csr-id-275a0edf1fb8eba467728c24edf3a984c8eaca75/> be more careful about which parts of proposer and acceptor have to be maintained atomically
 - <csr-id-87a68346aa10051d9d205d791407ce85546802da/> adjust default features to allow compilation to musl targets
   Previously, the default `deploy` feature would pull in Hydro Deploy and
   its transitive native dependencies.
   
   Also sets up `examples/paxos.rs` with CLI flags to deploy to GCP.
 - <csr-id-d4320e311562a004c01342a2b0f03ab6e2520562/> add missing `sample_every` for singletons
   Discovered during a live-coding demo, we only had it for optionals
   before.

### Refactor

<csr-id-dff2a40669736014349cf12744d6a057a7992e11/>

 - <csr-id-a1b45203178165683cb4b5ae611c598cc9c14853/> move rewrites to a submodule
 - <csr-id-e9d05bf11a0e85da8ed1a0fe00be7769298308c2/> move `HfCompiled` and friends to a module
 - <csr-id-9f744052dd4ac744f5a1baa4e0cb9253adaeba1b/> use `location.flow_state()` to avoid clone
 - <csr-id-5b819a2dc6c507222a3e22d71efcde8b43cebad5/> deduplicate some error messages and drop unused `Interval` IR node
 - <csr-id-244207c2acd2243ece6e787d54eadacf06e9e8bb/> dedup signatures for `Stream` operators
 - <csr-id-bf9dcd5a923dd4b5efa337a9127086e5609a1722/> clean up traits for cycles and forward references
 - <csr-id-d9634f242a97c06bdb53011bf3d75256425a1598/> split up location module and store locations directly in streams
 - <csr-id-534fe974101e38ecb847cd759dbaf503ff97f822/> use `usize` for slot numbers
 - <csr-id-0a5abab3dac224c9591bcdd837d07c6e5c2773c6/> make Paxos-KV generic
 - <csr-id-38b17cd977fb6c00ddc37e7a5b30e45dba17329e/> simplify latency calculations
 - <csr-id-8b7b1c60fd33b78f9a4b0873bbbd150260ae2ad5/> complete split into leader election and sequencing phases
 - <csr-id-dff2a40669736014349cf12744d6a057a7992e11/> start splitting out leader election into a separate module
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1485).
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots
   * #1493
   * #1492
   * #1489
   * #1488
   * #1487
   * #1486
   * __->__ #1485
 - <csr-id-1b18b358c87caa37a6519612131c8674653a2407/> simplify `persist_pullup` code
   Instead of matching on `&mut` and juggling ownership, instead match on
   the owned node and always replaced `*node = new_node` (sometimes itself)
 - <csr-id-c752affc2ee2c5d82d19dd992f6a89b7070b8773/> use max and min in Paxos and make client generic over ballots

### Style

 - <csr-id-47cb703e771f7d1c451ceb9d185ada96410949da/> fixes for nightly clippy
   a couple few spurious `too_many_arguments` and a spurious
   `zombie_processes` still on current nightly (`clippy 0.1.84 (4392847410
   2024-10-21)`)

### New Features (BREAKING)

 - <csr-id-8d8b4b2288746e0aa2a95329d91297820aee7586/> implicitly apply default optimizations
   This also changes the behavior of `with_default_optimize` to be
   terminal, if users want to apply optimizations after these they should
   explicitly invoke the optimizations.
 - <csr-id-5d5209b4a5556618d8a8c8219e1e2a4e837256ef/> add an explicit API for creating tick contexts
   Previously, each location had a (semantic) global clock that drives
   ticks, and so all streams in a tick domain were all in the same atomic
   block. For future optimizations, we'd like developers to be able to
   place streams on the same location into different clocks to eliminate
   synchronization between them, which in turn would allow the computations
   in those separate clocks to be potentially decoupled across machines.
 - <csr-id-edd86496240e4ebb39e0cf3bc153d8f282ff2870/> strongly-typed runtime cluster IDs
   Instead of `u32`s everywhere, we now have a `ClusterId<C>` type that
   ensures that cluster IDs are not misused.
 - <csr-id-4f3b51b4b9187f1187be23e6f04034778fe76388/> provide an API for creating cycles across tick iterations
   Towards making it more clear which parts of a program depend on ticks
   versus don't.

### Refactor (BREAKING)

 - <csr-id-0bd3a2d2230cbef24210f71a3ea83d82d1cc7244/> eliminate remaining `Hf` name prefixes
 - <csr-id-9107841700db0ae72de6269ab6f132be0ae51cd9/> location type parameter before boundedness
   When looking at a prefix in an IDE, the location type argument is
   generally more useful.
 - <csr-id-919099ea3a414560b473ec89b993eeb26dfa2579/> dedup signatures for `Singleton` and `Optional`
   Also renames `cross_singleton` to `zip` when both sides are
   singleton-like.
 - <csr-id-5657563c989566e7c7b69dcb395e40b024c83c6c/> fold `Tick` vs `NoTick` into the location type parameter
   Now, when the location is a top-level `Process` or `Cluster` that
   corresponds to a `NoTick`, and for streams inside a tick we wrap the
   location type (e.g. `Tick<Process<...>>`). This simplifies type
   signatures for a lot of our example code.
 - <csr-id-e5b456bdafcb80aae6039e4c90a2e60098e499bf/> simplify intervals and split Paxos-KV into separate module
 - <csr-id-30c4f708faff7875ab42e551dd4bccbe231dfdad/> move input APIs back to being on locations
 - <csr-id-8ad997b2dfd23bb09f7d361d763d6b5e78f406d6/> move `self_id` and `members` to be APIs on cluster instead of builder

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 39 commits contributed to the release.
 - 69 days passed between releases.
 - 38 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 38 unique issues were worked on: [#1434](https://github.com/hydro-project/hydroflow/issues/1434), [#1441](https://github.com/hydro-project/hydroflow/issues/1441), [#1443](https://github.com/hydro-project/hydroflow/issues/1443), [#1444](https://github.com/hydro-project/hydroflow/issues/1444), [#1449](https://github.com/hydro-project/hydroflow/issues/1449), [#1450](https://github.com/hydro-project/hydroflow/issues/1450), [#1451](https://github.com/hydro-project/hydroflow/issues/1451), [#1453](https://github.com/hydro-project/hydroflow/issues/1453), [#1455](https://github.com/hydro-project/hydroflow/issues/1455), [#1461](https://github.com/hydro-project/hydroflow/issues/1461), [#1464](https://github.com/hydro-project/hydroflow/issues/1464), [#1468](https://github.com/hydro-project/hydroflow/issues/1468), [#1471](https://github.com/hydro-project/hydroflow/issues/1471), [#1477](https://github.com/hydro-project/hydroflow/issues/1477), [#1485](https://github.com/hydro-project/hydroflow/issues/1485), [#1486](https://github.com/hydro-project/hydroflow/issues/1486), [#1488](https://github.com/hydro-project/hydroflow/issues/1488), [#1491](https://github.com/hydro-project/hydroflow/issues/1491), [#1505](https://github.com/hydro-project/hydroflow/issues/1505), [#1515](https://github.com/hydro-project/hydroflow/issues/1515), [#1516](https://github.com/hydro-project/hydroflow/issues/1516), [#1517](https://github.com/hydro-project/hydroflow/issues/1517), [#1519](https://github.com/hydro-project/hydroflow/issues/1519), [#1521](https://github.com/hydro-project/hydroflow/issues/1521), [#1523](https://github.com/hydro-project/hydroflow/issues/1523), [#1524](https://github.com/hydro-project/hydroflow/issues/1524), [#1525](https://github.com/hydro-project/hydroflow/issues/1525), [#1526](https://github.com/hydro-project/hydroflow/issues/1526), [#1527](https://github.com/hydro-project/hydroflow/issues/1527), [#1540](https://github.com/hydro-project/hydroflow/issues/1540), [#1541](https://github.com/hydro-project/hydroflow/issues/1541), [#1542](https://github.com/hydro-project/hydroflow/issues/1542), [#1543](https://github.com/hydro-project/hydroflow/issues/1543), [#1550](https://github.com/hydro-project/hydroflow/issues/1550), [#1551](https://github.com/hydro-project/hydroflow/issues/1551), [#1553](https://github.com/hydro-project/hydroflow/issues/1553), [#1554](https://github.com/hydro-project/hydroflow/issues/1554), [#1557](https://github.com/hydro-project/hydroflow/issues/1557)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1434](https://github.com/hydro-project/hydroflow/issues/1434)**
    - Splice UDFs with type hints to avoid inference failures ([`60d9bec`](https://github.com/hydro-project/hydroflow/commit/60d9becaf0b67f9819316ce6d76bd867f7d46505))
 * **[#1441](https://github.com/hydro-project/hydroflow/issues/1441)**
    - Provide an API for creating cycles across tick iterations ([`4f3b51b`](https://github.com/hydro-project/hydroflow/commit/4f3b51b4b9187f1187be23e6f04034778fe76388))
 * **[#1443](https://github.com/hydro-project/hydroflow/issues/1443)**
    - Use max and min in Paxos and make client generic over ballots ([`c752aff`](https://github.com/hydro-project/hydroflow/commit/c752affc2ee2c5d82d19dd992f6a89b7070b8773))
 * **[#1444](https://github.com/hydro-project/hydroflow/issues/1444)**
    - Update pinned rust version, clippy lints, remove some dead code ([`d567760`](https://github.com/hydro-project/hydroflow/commit/d5677604e93c07a5392f4229af94a0b736eca382))
 * **[#1449](https://github.com/hydro-project/hydroflow/issues/1449)**
    - Add API for external network inputs ([`8a80931`](https://github.com/hydro-project/hydroflow/commit/8a809315cd37929687fcabc34a12042db25d5767))
 * **[#1450](https://github.com/hydro-project/hydroflow/issues/1450)**
    - Add ability to have staged flows inside unit tests ([`afe78c3`](https://github.com/hydro-project/hydroflow/commit/afe78c343658472513b34d28658634b253148aee))
 * **[#1451](https://github.com/hydro-project/hydroflow/issues/1451)**
    - Implement support for external network outputs ([`074f2cf`](https://github.com/hydro-project/hydroflow/commit/074f2cf76158a126370a7e6b184bc6b928eb6fe2))
 * **[#1453](https://github.com/hydro-project/hydroflow/issues/1453)**
    - Add decouple and simple test and two_pc ([`2141c5f`](https://github.com/hydro-project/hydroflow/commit/2141c5f04cb7e9cb7cd2f50f849f6c4b3d745377))
 * **[#1455](https://github.com/hydro-project/hydroflow/issues/1455)**
    - Simplify `persist_pullup` code ([`1b18b35`](https://github.com/hydro-project/hydroflow/commit/1b18b358c87caa37a6519612131c8674653a2407))
 * **[#1461](https://github.com/hydro-project/hydroflow/issues/1461)**
    - Add missing `sample_every` for singletons ([`d4320e3`](https://github.com/hydro-project/hydroflow/commit/d4320e311562a004c01342a2b0f03ab6e2520562))
 * **[#1464](https://github.com/hydro-project/hydroflow/issues/1464)**
    - Adjust default features to allow compilation to musl targets ([`87a6834`](https://github.com/hydro-project/hydroflow/commit/87a68346aa10051d9d205d791407ce85546802da))
 * **[#1468](https://github.com/hydro-project/hydroflow/issues/1468)**
    - Move `self_id` and `members` to be APIs on cluster instead of builder ([`8ad997b`](https://github.com/hydro-project/hydroflow/commit/8ad997b2dfd23bb09f7d361d763d6b5e78f406d6))
 * **[#1471](https://github.com/hydro-project/hydroflow/issues/1471)**
    - Move input APIs back to being on locations ([`30c4f70`](https://github.com/hydro-project/hydroflow/commit/30c4f708faff7875ab42e551dd4bccbe231dfdad))
 * **[#1477](https://github.com/hydro-project/hydroflow/issues/1477)**
    - Strongly-typed runtime cluster IDs ([`edd8649`](https://github.com/hydro-project/hydroflow/commit/edd86496240e4ebb39e0cf3bc153d8f282ff2870))
 * **[#1485](https://github.com/hydro-project/hydroflow/issues/1485)**
    - Start splitting out leader election into a separate module ([`dff2a40`](https://github.com/hydro-project/hydroflow/commit/dff2a40669736014349cf12744d6a057a7992e11))
 * **[#1486](https://github.com/hydro-project/hydroflow/issues/1486)**
    - Complete split into leader election and sequencing phases ([`8b7b1c6`](https://github.com/hydro-project/hydroflow/commit/8b7b1c60fd33b78f9a4b0873bbbd150260ae2ad5))
 * **[#1488](https://github.com/hydro-project/hydroflow/issues/1488)**
    - Be more careful about which parts of proposer and acceptor have to be maintained atomically ([`275a0ed`](https://github.com/hydro-project/hydroflow/commit/275a0edf1fb8eba467728c24edf3a984c8eaca75))
 * **[#1491](https://github.com/hydro-project/hydroflow/issues/1491)**
    - Add utility to dedup tees when debugging IR ([`98a21e3`](https://github.com/hydro-project/hydroflow/commit/98a21e36bd50d312402e46357fea6330816d0139))
 * **[#1505](https://github.com/hydro-project/hydroflow/issues/1505)**
    - Fixes for nightly clippy ([`47cb703`](https://github.com/hydro-project/hydroflow/commit/47cb703e771f7d1c451ceb9d185ada96410949da))
 * **[#1515](https://github.com/hydro-project/hydroflow/issues/1515)**
    - Simplify latency calculations ([`38b17cd`](https://github.com/hydro-project/hydroflow/commit/38b17cd977fb6c00ddc37e7a5b30e45dba17329e))
 * **[#1516](https://github.com/hydro-project/hydroflow/issues/1516)**
    - Simplify intervals and split Paxos-KV into separate module ([`e5b456b`](https://github.com/hydro-project/hydroflow/commit/e5b456bdafcb80aae6039e4c90a2e60098e499bf))
 * **[#1517](https://github.com/hydro-project/hydroflow/issues/1517)**
    - Make Paxos-KV generic ([`0a5abab`](https://github.com/hydro-project/hydroflow/commit/0a5abab3dac224c9591bcdd837d07c6e5c2773c6))
 * **[#1519](https://github.com/hydro-project/hydroflow/issues/1519)**
    - Fold `Tick` vs `NoTick` into the location type parameter ([`5657563`](https://github.com/hydro-project/hydroflow/commit/5657563c989566e7c7b69dcb395e40b024c83c6c))
 * **[#1521](https://github.com/hydro-project/hydroflow/issues/1521)**
    - Use `usize` for slot numbers ([`534fe97`](https://github.com/hydro-project/hydroflow/commit/534fe974101e38ecb847cd759dbaf503ff97f822))
 * **[#1523](https://github.com/hydro-project/hydroflow/issues/1523)**
    - Split up location module and store locations directly in streams ([`d9634f2`](https://github.com/hydro-project/hydroflow/commit/d9634f242a97c06bdb53011bf3d75256425a1598))
 * **[#1524](https://github.com/hydro-project/hydroflow/issues/1524)**
    - Clean up traits for cycles and forward references ([`bf9dcd5`](https://github.com/hydro-project/hydroflow/commit/bf9dcd5a923dd4b5efa337a9127086e5609a1722))
 * **[#1525](https://github.com/hydro-project/hydroflow/issues/1525)**
    - Dedup signatures for `Stream` operators ([`244207c`](https://github.com/hydro-project/hydroflow/commit/244207c2acd2243ece6e787d54eadacf06e9e8bb))
 * **[#1526](https://github.com/hydro-project/hydroflow/issues/1526)**
    - Dedup signatures for `Singleton` and `Optional` ([`919099e`](https://github.com/hydro-project/hydroflow/commit/919099ea3a414560b473ec89b993eeb26dfa2579))
 * **[#1527](https://github.com/hydro-project/hydroflow/issues/1527)**
    - Properly handle `crate::` imports ([`2faffdb`](https://github.com/hydro-project/hydroflow/commit/2faffdbf2cc886da22e496df64f46aefa380766c))
 * **[#1540](https://github.com/hydro-project/hydroflow/issues/1540)**
    - Deduplicate some error messages and drop unused `Interval` IR node ([`5b819a2`](https://github.com/hydro-project/hydroflow/commit/5b819a2dc6c507222a3e22d71efcde8b43cebad5))
 * **[#1541](https://github.com/hydro-project/hydroflow/issues/1541)**
    - Use `location.flow_state()` to avoid clone ([`9f74405`](https://github.com/hydro-project/hydroflow/commit/9f744052dd4ac744f5a1baa4e0cb9253adaeba1b))
 * **[#1542](https://github.com/hydro-project/hydroflow/issues/1542)**
    - Move `HfCompiled` and friends to a module ([`e9d05bf`](https://github.com/hydro-project/hydroflow/commit/e9d05bf11a0e85da8ed1a0fe00be7769298308c2))
 * **[#1543](https://github.com/hydro-project/hydroflow/issues/1543)**
    - Move rewrites to a submodule ([`a1b4520`](https://github.com/hydro-project/hydroflow/commit/a1b45203178165683cb4b5ae611c598cc9c14853))
 * **[#1550](https://github.com/hydro-project/hydroflow/issues/1550)**
    - Add an explicit API for creating tick contexts ([`5d5209b`](https://github.com/hydro-project/hydroflow/commit/5d5209b4a5556618d8a8c8219e1e2a4e837256ef))
 * **[#1551](https://github.com/hydro-project/hydroflow/issues/1551)**
    - Location type parameter before boundedness ([`9107841`](https://github.com/hydro-project/hydroflow/commit/9107841700db0ae72de6269ab6f132be0ae51cd9))
 * **[#1553](https://github.com/hydro-project/hydroflow/issues/1553)**
    - Improve quickstart ergonomics ([`baedf23`](https://github.com/hydro-project/hydroflow/commit/baedf23eaa056bc0dad8331d116bb71176764206))
 * **[#1554](https://github.com/hydro-project/hydroflow/issues/1554)**
    - Eliminate remaining `Hf` name prefixes ([`0bd3a2d`](https://github.com/hydro-project/hydroflow/commit/0bd3a2d2230cbef24210f71a3ea83d82d1cc7244))
 * **[#1557](https://github.com/hydro-project/hydroflow/issues/1557)**
    - Implicitly apply default optimizations ([`8d8b4b2`](https://github.com/hydro-project/hydroflow/commit/8d8b4b2288746e0aa2a95329d91297820aee7586))
 * **Uncategorized**
    - Release hydroflow_lang v0.10.0, hydroflow_datalog_core v0.10.0, hydroflow_datalog v0.10.0, hydroflow_deploy_integration v0.10.0, hydroflow_macro v0.10.0, lattices_macro v0.5.7, variadics v0.0.7, variadics_macro v0.5.5, lattices v0.5.8, multiplatform_test v0.3.0, pusherator v0.0.9, hydroflow v0.10.0, hydro_deploy v0.10.0, stageleft_macro v0.4.0, stageleft v0.5.0, stageleft_tool v0.4.0, hydroflow_plus v0.10.0, hydro_cli v0.10.0, safety bump 8 crates ([`dcd48fc`](https://github.com/hydro-project/hydroflow/commit/dcd48fc7ee805898d9b5ef0d082870e30615e95b))
</details>

<csr-unknown>
 start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack. start splitting out leader election into a separate moduleStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1485ReviewStack.<csr-unknown/>

## v0.9.0 (2024-08-30)

<csr-id-11af32828bab6e4a4264d2635ff71a12bb0bb778/>
<csr-id-0a465e55dd39c76bc1aefb020460a639d792fe87/>
<csr-id-5f2789a13d1602f170e678fe9bbc59caf69db4b5/>
<csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/>
<csr-id-fa417205569d8c49c85b0c2324118e0f9b1c8407/>

### Chore

 - <csr-id-11af32828bab6e4a4264d2635ff71a12bb0bb778/> lower min dependency versions where possible, update `Cargo.lock`
   Moved from #1418
   
   ---------

### Refactor (BREAKING)

<csr-id-128aaecd40edce57dc254afdcd61ecd5b9948d71/>
<csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/>

 - <csr-id-128aaecd40edce57dc254afdcd61ecd5b9948d71/> simplify process/cluster specs
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1394).
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377

### Refactor (BREAKING)

<csr-id-128aaecd40edce57dc254afdcd61ecd5b9948d71/>
<csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/>

 - <csr-id-128aaecd40edce57dc254afdcd61ecd5b9948d71/> simplify process/cluster specs
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1394).
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377

### Documentation

 - <csr-id-f5f1eb0c612f5c0c1752360d972ef6853c5e12f0/> cleanup doc comments for clippy latest

### New Features

 - <csr-id-71f69aa5e9f2ba187f07c44c0a9f2becfe72aab1/> add API for cycle with initial value
 - <csr-id-82de6f5fc89fd44fd2ac18fddd94d121b4b10c8a/> add unbounded top-level singletons
 - <csr-id-7bf9ee2f707ddd5d8f51853ab7babe035fd8d964/> add paxos
 - <csr-id-46a8a2cb08732bb21096e824bc4542d208c68fb2/> use trybuild to compile subgraph binaries
 - <csr-id-eaf497b601928be37530bc8d81717d200fd5987a/> add operators necessary for Paxos / PBFT

### Bug Fixes

<csr-id-b518e674560971ebd1b32c737151214b8d3310b0/>
<csr-id-c12b2495c70f170eba655e458f4591ef7d0941a4/>
<csr-id-ab12e5b66718f06adc3c34bf879c9581d79ee0d2/>

 - <csr-id-22c72189bb76412955d29b03c5d99894c558a07c/> remove `FlowProps`
 - <csr-id-1aeacb212227f654e8f0cdc8a59816a68f059177/> rewrite IR in place to avoid stack overflow and disable cloning
   Cloning was unsafe because values behind a `Rc<RefCell<...>>` in the
   case of tee would be entangled with the old IR.
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1404).
   * #1405
   * #1398
   * __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
 - <csr-id-1aeacb212227f654e8f0cdc8a59816a68f059177/> rewrite IR in place to avoid stack overflow and disable cloning
   Cloning was unsafe because values behind a `Rc<RefCell<...>>` in the
   case of tee would be entangled with the old IR.
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1404).
   * #1405
   * #1398
   * __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
 - <csr-id-1aeacb212227f654e8f0cdc8a59816a68f059177/> rewrite IR in place to avoid stack overflow and disable cloning
   Cloning was unsafe because values behind a `Rc<RefCell<...>>` in the
   case of tee would be entangled with the old IR.
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1404).
   * #1405
   * #1398
   * __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404
* #1398
* __->__ #1404

### New Features (BREAKING)

 - <csr-id-44c6b149bea102e8598460ba0286e370b36fd25a/> separate singletons into their own types
 - <csr-id-536e6442d68b0947da5bfef9991825003e6867fc/> refactor API to have no-tick semantics by default
   Now, by default streams exist at a "top-level" where there are no ticks
   and operators run over the entire collection. To perform iterative
   computations, developers must explicitly entire a tick domain (using
   `tick_batch`), and return to the outer domain (using `all_ticks`).

### Refactor (BREAKING)

<csr-id-128aaecd40edce57dc254afdcd61ecd5b9948d71/>
<csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/>

 - <csr-id-0a465e55dd39c76bc1aefb020460a639d792fe87/> rename integration crates to drop CLI references
 - <csr-id-5f2789a13d1602f170e678fe9bbc59caf69db4b5/> disentangle instantiated nodes from locations
 - <csr-id-128aaecd40edce57dc254afdcd61ecd5b9948d71/> simplify process/cluster specs
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1394).
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach
   * #1395
   * __->__ #1394
 - <csr-id-0eba702f62e7a6816cf931b01a2ea5643bd7321d/> defer network instantiation until after finalizing IR
   ---
   [//]: # (BEGIN SAPLING FOOTER)
   Stack created with [Sapling](https://sapling-scm.com). Best reviewed
   with
   [ReviewStack](https://reviewstack.dev/hydro-project/hydroflow/pull/1377).
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
   * #1395
   * #1394
   * __->__ #1377
 - <csr-id-09d6d44eafc866881e73719813fe9edeb49ca2a6/> start rearranging stages of flow compilation to prepare for trybuild approach

### Style (BREAKING)

 - <csr-id-fa417205569d8c49c85b0c2324118e0f9b1c8407/> rename some `CLI`->`Deploy`, decapitalize acronym names

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 21 commits contributed to the release.
 - 38 days passed between releases.
 - 20 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 20 unique issues were worked on: [#1358](https://github.com/hydro-project/hydroflow/issues/1358), [#1368](https://github.com/hydro-project/hydroflow/issues/1368), [#1375](https://github.com/hydro-project/hydroflow/issues/1375), [#1376](https://github.com/hydro-project/hydroflow/issues/1376), [#1377](https://github.com/hydro-project/hydroflow/issues/1377), [#1394](https://github.com/hydro-project/hydroflow/issues/1394), [#1395](https://github.com/hydro-project/hydroflow/issues/1395), [#1398](https://github.com/hydro-project/hydroflow/issues/1398), [#1399](https://github.com/hydro-project/hydroflow/issues/1399), [#1404](https://github.com/hydro-project/hydroflow/issues/1404), [#1405](https://github.com/hydro-project/hydroflow/issues/1405), [#1410](https://github.com/hydro-project/hydroflow/issues/1410), [#1413](https://github.com/hydro-project/hydroflow/issues/1413), [#1420](https://github.com/hydro-project/hydroflow/issues/1420), [#1421](https://github.com/hydro-project/hydroflow/issues/1421), [#1423](https://github.com/hydro-project/hydroflow/issues/1423), [#1425](https://github.com/hydro-project/hydroflow/issues/1425), [#1427](https://github.com/hydro-project/hydroflow/issues/1427), [#1428](https://github.com/hydro-project/hydroflow/issues/1428), [#1430](https://github.com/hydro-project/hydroflow/issues/1430)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1358](https://github.com/hydro-project/hydroflow/issues/1358)**
    - Start rearranging stages of flow compilation to prepare for trybuild approach ([`09d6d44`](https://github.com/hydro-project/hydroflow/commit/09d6d44eafc866881e73719813fe9edeb49ca2a6))
 * **[#1368](https://github.com/hydro-project/hydroflow/issues/1368)**
    - Overly restrictive input types for `send_bincode_interleaved` ([`ab12e5b`](https://github.com/hydro-project/hydroflow/commit/ab12e5b66718f06adc3c34bf879c9581d79ee0d2))
 * **[#1375](https://github.com/hydro-project/hydroflow/issues/1375)**
    - Add `Clone` bounds to `cross_join` and simplify broadcast logic ([`c12b249`](https://github.com/hydro-project/hydroflow/commit/c12b2495c70f170eba655e458f4591ef7d0941a4))
 * **[#1376](https://github.com/hydro-project/hydroflow/issues/1376)**
    - Add operators necessary for Paxos / PBFT ([`eaf497b`](https://github.com/hydro-project/hydroflow/commit/eaf497b601928be37530bc8d81717d200fd5987a))
 * **[#1377](https://github.com/hydro-project/hydroflow/issues/1377)**
    - Defer network instantiation until after finalizing IR ([`0eba702`](https://github.com/hydro-project/hydroflow/commit/0eba702f62e7a6816cf931b01a2ea5643bd7321d))
 * **[#1394](https://github.com/hydro-project/hydroflow/issues/1394)**
    - Simplify process/cluster specs ([`128aaec`](https://github.com/hydro-project/hydroflow/commit/128aaecd40edce57dc254afdcd61ecd5b9948d71))
 * **[#1395](https://github.com/hydro-project/hydroflow/issues/1395)**
    - Disentangle instantiated nodes from locations ([`5f2789a`](https://github.com/hydro-project/hydroflow/commit/5f2789a13d1602f170e678fe9bbc59caf69db4b5))
 * **[#1398](https://github.com/hydro-project/hydroflow/issues/1398)**
    - Use trybuild to compile subgraph binaries ([`46a8a2c`](https://github.com/hydro-project/hydroflow/commit/46a8a2cb08732bb21096e824bc4542d208c68fb2))
 * **[#1399](https://github.com/hydro-project/hydroflow/issues/1399)**
    - Rename some `CLI`->`Deploy`, decapitalize acronym names ([`fa41720`](https://github.com/hydro-project/hydroflow/commit/fa417205569d8c49c85b0c2324118e0f9b1c8407))
 * **[#1404](https://github.com/hydro-project/hydroflow/issues/1404)**
    - Rewrite IR in place to avoid stack overflow and disable cloning ([`1aeacb2`](https://github.com/hydro-project/hydroflow/commit/1aeacb212227f654e8f0cdc8a59816a68f059177))
 * **[#1405](https://github.com/hydro-project/hydroflow/issues/1405)**
    - Wrong stream type for `source_interval` ([`b518e67`](https://github.com/hydro-project/hydroflow/commit/b518e674560971ebd1b32c737151214b8d3310b0))
 * **[#1410](https://github.com/hydro-project/hydroflow/issues/1410)**
    - Add paxos ([`7bf9ee2`](https://github.com/hydro-project/hydroflow/commit/7bf9ee2f707ddd5d8f51853ab7babe035fd8d964))
 * **[#1413](https://github.com/hydro-project/hydroflow/issues/1413)**
    - Rename integration crates to drop CLI references ([`0a465e5`](https://github.com/hydro-project/hydroflow/commit/0a465e55dd39c76bc1aefb020460a639d792fe87))
 * **[#1420](https://github.com/hydro-project/hydroflow/issues/1420)**
    - Remove `FlowProps` ([`22c7218`](https://github.com/hydro-project/hydroflow/commit/22c72189bb76412955d29b03c5d99894c558a07c))
 * **[#1421](https://github.com/hydro-project/hydroflow/issues/1421)**
    - Refactor API to have no-tick semantics by default ([`536e644`](https://github.com/hydro-project/hydroflow/commit/536e6442d68b0947da5bfef9991825003e6867fc))
 * **[#1423](https://github.com/hydro-project/hydroflow/issues/1423)**
    - Lower min dependency versions where possible, update `Cargo.lock` ([`11af328`](https://github.com/hydro-project/hydroflow/commit/11af32828bab6e4a4264d2635ff71a12bb0bb778))
 * **[#1425](https://github.com/hydro-project/hydroflow/issues/1425)**
    - Separate singletons into their own types ([`44c6b14`](https://github.com/hydro-project/hydroflow/commit/44c6b149bea102e8598460ba0286e370b36fd25a))
 * **[#1427](https://github.com/hydro-project/hydroflow/issues/1427)**
    - Add unbounded top-level singletons ([`82de6f5`](https://github.com/hydro-project/hydroflow/commit/82de6f5fc89fd44fd2ac18fddd94d121b4b10c8a))
 * **[#1428](https://github.com/hydro-project/hydroflow/issues/1428)**
    - Cleanup doc comments for clippy latest ([`f5f1eb0`](https://github.com/hydro-project/hydroflow/commit/f5f1eb0c612f5c0c1752360d972ef6853c5e12f0))
 * **[#1430](https://github.com/hydro-project/hydroflow/issues/1430)**
    - Add API for cycle with initial value ([`71f69aa`](https://github.com/hydro-project/hydroflow/commit/71f69aa5e9f2ba187f07c44c0a9f2becfe72aab1))
 * **Uncategorized**
    - Release hydroflow_lang v0.9.0, hydroflow_datalog_core v0.9.0, hydroflow_datalog v0.9.0, hydroflow_deploy_integration v0.9.0, hydroflow_macro v0.9.0, lattices_macro v0.5.6, lattices v0.5.7, multiplatform_test v0.2.0, variadics v0.0.6, pusherator v0.0.8, hydroflow v0.9.0, stageleft_macro v0.3.0, stageleft v0.4.0, stageleft_tool v0.3.0, hydroflow_plus v0.9.0, hydro_deploy v0.9.0, hydro_cli v0.9.0, hydroflow_plus_deploy v0.9.0, safety bump 8 crates ([`0750117`](https://github.com/hydro-project/hydroflow/commit/0750117de7088c01a439b102adeb4c832889f171))
</details>

<csr-unknown>
 simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. simplify process/cluster specsStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1394ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack. defer network instantiation until after finalizing IRStack created with https://sapling-scm.comSapling. Best reviewedwithhttps://reviewstack.dev/hydro-project/hydroflow/pull/1377ReviewStack.<csr-unknown/>

## v0.8.0 (2024-07-23)

<csr-id-67c0e51fb25ea1a2e3aae197c1984920b46759fa/>

### Reverted

 - <csr-id-256779abece03bee662b351430d27141d10bd5ef/> "feat(hydroflow): Added poll_futures and poll_futures_async operators.", fix #1183
   This reverts commit 997d90a76db9a4e05dbac35073a09548750ce342.
   
   We have been trying to figure out the semantics a bit, and want to give
   it more thought before we commit to maintaining it
   
   Can un-revert and adjust the semantics later when we use it

### Refactor (BREAKING)

 - <csr-id-67c0e51fb25ea1a2e3aae197c1984920b46759fa/> require lifetime on `perist*()` operators

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 3 commits contributed to the release.
 - 59 days passed between releases.
 - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 3 unique issues were worked on: [#1143](https://github.com/hydro-project/hydroflow/issues/1143), [#1216](https://github.com/hydro-project/hydroflow/issues/1216), [#1295](https://github.com/hydro-project/hydroflow/issues/1295)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1143](https://github.com/hydro-project/hydroflow/issues/1143)**
    - "feat(hydroflow): Added poll_futures and poll_futures_async operators.", fix #1183 ([`256779a`](https://github.com/hydro-project/hydroflow/commit/256779abece03bee662b351430d27141d10bd5ef))
 * **[#1216](https://github.com/hydro-project/hydroflow/issues/1216)**
    - "feat(hydroflow): Added poll_futures and poll_futures_async operators.", fix #1183 ([`256779a`](https://github.com/hydro-project/hydroflow/commit/256779abece03bee662b351430d27141d10bd5ef))
 * **[#1295](https://github.com/hydro-project/hydroflow/issues/1295)**
    - Require lifetime on `perist*()` operators ([`67c0e51`](https://github.com/hydro-project/hydroflow/commit/67c0e51fb25ea1a2e3aae197c1984920b46759fa))
 * **Uncategorized**
    - Release hydroflow_lang v0.8.0, hydroflow_datalog_core v0.8.0, hydroflow_datalog v0.8.0, hydroflow_macro v0.8.0, lattices_macro v0.5.5, lattices v0.5.6, variadics v0.0.5, pusherator v0.0.7, hydroflow v0.8.0, hydroflow_plus v0.8.0, hydro_deploy v0.8.0, hydro_cli v0.8.0, hydroflow_plus_cli_integration v0.8.0, safety bump 7 crates ([`ca6c16b`](https://github.com/hydro-project/hydroflow/commit/ca6c16b4a7ce35e155fe7fc6c7d1676c37c9e4de))
</details>

## v0.7.0 (2024-05-24)

<csr-id-c9dfddc680e0ce5415539d7b77bc5beb97ab59d9/>

### Chore

 - <csr-id-c9dfddc680e0ce5415539d7b77bc5beb97ab59d9/> use workaround for `cargo smart-release` not properly ordering `dev-`/`build-dependencies`

### New Features

 - <csr-id-6e571726ff40818fbe9bbe9923511877c20fb243/> add API to get the cluster ID of the current node
   feat(hydroflow_plus): add API to get the cluster ID of the current node
 - <csr-id-997d90a76db9a4e05dbac35073a09548750ce342/> Added poll_futures and poll_futures_async operators.
 - <csr-id-c3f5a37ff746401a2383a900f9004e33072d5b1a/> add prototype of tagging algebraic properties
 - <csr-id-29a263fb564c5ce4bc495ea4e9d20b8b2621b645/> add support for collecting counts and running perf

### Bug Fixes

 - <csr-id-0cafbdb74a665412a83aa900b4eb10c00e2498dd/> handle send_bincode with local structs
   fix(hydroflow_plus): handle send_bincode with local structs

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 7 commits contributed to the release.
 - 44 days passed between releases.
 - 6 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 6 unique issues were worked on: [#1143](https://github.com/hydro-project/hydroflow/issues/1143), [#1151](https://github.com/hydro-project/hydroflow/issues/1151), [#1156](https://github.com/hydro-project/hydroflow/issues/1156), [#1157](https://github.com/hydro-project/hydroflow/issues/1157), [#1194](https://github.com/hydro-project/hydroflow/issues/1194), [#1238](https://github.com/hydro-project/hydroflow/issues/1238)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1143](https://github.com/hydro-project/hydroflow/issues/1143)**
    - Added poll_futures and poll_futures_async operators. ([`997d90a`](https://github.com/hydro-project/hydroflow/commit/997d90a76db9a4e05dbac35073a09548750ce342))
 * **[#1151](https://github.com/hydro-project/hydroflow/issues/1151)**
    - Handle send_bincode with local structs ([`0cafbdb`](https://github.com/hydro-project/hydroflow/commit/0cafbdb74a665412a83aa900b4eb10c00e2498dd))
 * **[#1156](https://github.com/hydro-project/hydroflow/issues/1156)**
    - Add prototype of tagging algebraic properties ([`c3f5a37`](https://github.com/hydro-project/hydroflow/commit/c3f5a37ff746401a2383a900f9004e33072d5b1a))
 * **[#1157](https://github.com/hydro-project/hydroflow/issues/1157)**
    - Add support for collecting counts and running perf ([`29a263f`](https://github.com/hydro-project/hydroflow/commit/29a263fb564c5ce4bc495ea4e9d20b8b2621b645))
 * **[#1194](https://github.com/hydro-project/hydroflow/issues/1194)**
    - Add API to get the cluster ID of the current node ([`6e57172`](https://github.com/hydro-project/hydroflow/commit/6e571726ff40818fbe9bbe9923511877c20fb243))
 * **[#1238](https://github.com/hydro-project/hydroflow/issues/1238)**
    - Use workaround for `cargo smart-release` not properly ordering `dev-`/`build-dependencies` ([`c9dfddc`](https://github.com/hydro-project/hydroflow/commit/c9dfddc680e0ce5415539d7b77bc5beb97ab59d9))
 * **Uncategorized**
    - Release hydroflow_lang v0.7.0, hydroflow_datalog_core v0.7.0, hydroflow_datalog v0.7.0, hydroflow_macro v0.7.0, lattices v0.5.5, multiplatform_test v0.1.0, pusherator v0.0.6, hydroflow v0.7.0, stageleft_macro v0.2.0, stageleft v0.3.0, stageleft_tool v0.2.0, hydroflow_plus v0.7.0, hydro_deploy v0.7.0, hydro_cli v0.7.0, hydroflow_plus_cli_integration v0.7.0, safety bump 8 crates ([`2852147`](https://github.com/hydro-project/hydroflow/commit/285214740627685e911781793e05d234ab2ad2bd))
</details>

## v0.6.1 (2024-04-09)

<csr-id-fc447ffdf8fd1b2189545a991f08588238182f00/>

### Chore

 - <csr-id-fc447ffdf8fd1b2189545a991f08588238182f00/> appease latest nightly clippy
   Also updates `surface_keyed_fold.rs` `test_fold_keyed_infer_basic` test.

### New Features

 - <csr-id-7f68ebf2a23e8e73719229a6f0408bffc7fbe7af/> simplify Location trait to remove lifetimes
 - <csr-id-77f3e5afb9e276d1d6c643574ebac75ed0003939/> simplify lifetime bounds for processes and clusters
   feat(hydroflow_plus): simplify lifetime bounds for processes and
   clusters
   
   This allows `extract` to move the flow builder, which is a prerequisite
   for having developers run the optimizer during deployment as well in
   case it changes the network topology.
 - <csr-id-5b6562662ce3a0dd172ddc1103a591c1c6037e95/> move persist manipulation into a proper optimization
   feat(hydroflow_plus): move persist manipulation into a proper
   optimization
 - <csr-id-cfb3029a6fb0836789db04a7d0d4a1e8b812b629/> add APIs for running optimization passes
   feat(hydroflow_plus): add APIs for running optimization passes

### Bug Fixes

 - <csr-id-2d2c43dc001dbea17d46d73de464c95066b18fa2/> allow BuiltFlow to be cloned even if the deploy flavor can't

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 9 commits contributed to the release.
 - 38 days passed between releases.
 - 6 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 6 unique issues were worked on: [#1083](https://github.com/hydro-project/hydroflow/issues/1083), [#1098](https://github.com/hydro-project/hydroflow/issues/1098), [#1100](https://github.com/hydro-project/hydroflow/issues/1100), [#1101](https://github.com/hydro-project/hydroflow/issues/1101), [#1107](https://github.com/hydro-project/hydroflow/issues/1107), [#1140](https://github.com/hydro-project/hydroflow/issues/1140)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1083](https://github.com/hydro-project/hydroflow/issues/1083)**
    - Add APIs for running optimization passes ([`cfb3029`](https://github.com/hydro-project/hydroflow/commit/cfb3029a6fb0836789db04a7d0d4a1e8b812b629))
 * **[#1098](https://github.com/hydro-project/hydroflow/issues/1098)**
    - Move persist manipulation into a proper optimization ([`5b65626`](https://github.com/hydro-project/hydroflow/commit/5b6562662ce3a0dd172ddc1103a591c1c6037e95))
 * **[#1100](https://github.com/hydro-project/hydroflow/issues/1100)**
    - Simplify lifetime bounds for processes and clusters ([`77f3e5a`](https://github.com/hydro-project/hydroflow/commit/77f3e5afb9e276d1d6c643574ebac75ed0003939))
 * **[#1101](https://github.com/hydro-project/hydroflow/issues/1101)**
    - Simplify Location trait to remove lifetimes ([`7f68ebf`](https://github.com/hydro-project/hydroflow/commit/7f68ebf2a23e8e73719229a6f0408bffc7fbe7af))
 * **[#1107](https://github.com/hydro-project/hydroflow/issues/1107)**
    - Allow BuiltFlow to be cloned even if the deploy flavor can't ([`2d2c43d`](https://github.com/hydro-project/hydroflow/commit/2d2c43dc001dbea17d46d73de464c95066b18fa2))
 * **[#1140](https://github.com/hydro-project/hydroflow/issues/1140)**
    - Appease latest nightly clippy ([`fc447ff`](https://github.com/hydro-project/hydroflow/commit/fc447ffdf8fd1b2189545a991f08588238182f00))
 * **Uncategorized**
    - Release hydroflow_plus v0.6.1, hydro_deploy v0.6.1, hydro_cli v0.6.1, hydroflow_plus_cli_integration v0.6.1 ([`c385c13`](https://github.com/hydro-project/hydroflow/commit/c385c132c9733d1bace82156aa14216b8e7fef9f))
    - Release hydroflow_lang v0.6.2, hydroflow v0.6.2, hydroflow_plus v0.6.1, hydro_deploy v0.6.1, hydro_cli v0.6.1, hydroflow_plus_cli_integration v0.6.1, stageleft_tool v0.1.1 ([`23cfe08`](https://github.com/hydro-project/hydroflow/commit/23cfe0839079aa17d042bbd3976f6d188689d290))
    - Release hydroflow_cli_integration v0.5.2, hydroflow_lang v0.6.1, hydroflow_datalog_core v0.6.1, lattices v0.5.4, hydroflow v0.6.1, stageleft_macro v0.1.1, stageleft v0.2.1, hydroflow_plus v0.6.1, hydro_deploy v0.6.1, hydro_cli v0.6.1, hydroflow_plus_cli_integration v0.6.1, stageleft_tool v0.1.1 ([`cd63f22`](https://github.com/hydro-project/hydroflow/commit/cd63f2258c961a40f0e5dbef20ac329a2d570ad0))
</details>

## v0.6.0 (2024-03-02)

<csr-id-39ab8b0278e9e3fe96552ace0a4ae768a6bc10d8/>

### Chore

 - <csr-id-39ab8b0278e9e3fe96552ace0a4ae768a6bc10d8/> appease various clippy lints

### New Features

 - <csr-id-c1d1b51ee26cc9946af59ac02c040e0a33d15fde/> unify send/demux/tagged APIs
   feat(hydroflow_plus): unify send/demux/tagged APIs
 - <csr-id-eb34ccd13f56e1d07cbae35ead79daeb3b9bad20/> use an IR before lowering to Hydroflow
   Makes it possible to write custom optimization passes.

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 4 commits contributed to the release.
 - 32 days passed between releases.
 - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 3 unique issues were worked on: [#1070](https://github.com/hydro-project/hydroflow/issues/1070), [#1080](https://github.com/hydro-project/hydroflow/issues/1080), [#1084](https://github.com/hydro-project/hydroflow/issues/1084)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1070](https://github.com/hydro-project/hydroflow/issues/1070)**
    - Use an IR before lowering to Hydroflow ([`eb34ccd`](https://github.com/hydro-project/hydroflow/commit/eb34ccd13f56e1d07cbae35ead79daeb3b9bad20))
 * **[#1080](https://github.com/hydro-project/hydroflow/issues/1080)**
    - Unify send/demux/tagged APIs ([`c1d1b51`](https://github.com/hydro-project/hydroflow/commit/c1d1b51ee26cc9946af59ac02c040e0a33d15fde))
 * **[#1084](https://github.com/hydro-project/hydroflow/issues/1084)**
    - Appease various clippy lints ([`39ab8b0`](https://github.com/hydro-project/hydroflow/commit/39ab8b0278e9e3fe96552ace0a4ae768a6bc10d8))
 * **Uncategorized**
    - Release hydroflow_lang v0.6.0, hydroflow_datalog_core v0.6.0, hydroflow_datalog v0.6.0, hydroflow_macro v0.6.0, lattices v0.5.3, variadics v0.0.4, pusherator v0.0.5, hydroflow v0.6.0, stageleft v0.2.0, hydroflow_plus v0.6.0, hydro_deploy v0.6.0, hydro_cli v0.6.0, hydroflow_plus_cli_integration v0.6.0, safety bump 7 crates ([`09ea65f`](https://github.com/hydro-project/hydroflow/commit/09ea65fe9cd45c357c43bffca30e60243fa45cc8))
</details>

## v0.5.1 (2024-01-29)

<csr-id-1b555e57c8c812bed4d6495d2960cbf77fb0b3ef/>

### Chore

 - <csr-id-1b555e57c8c812bed4d6495d2960cbf77fb0b3ef/> manually set lockstep-versioned crates (and `lattices`) to version `0.5.1`
   Setting manually since
   https://github.com/frewsxcv/rust-crates-index/issues/159 is messing with
   smart-release

### Documentation

 - <csr-id-3b36020d16792f26da4df3c5b09652a4ab47ec4f/> actually committing empty CHANGELOG.md is required

### New Features

 - <csr-id-5a03ed41548b5766b945efbd1eedb0dfceb714d9/> add core negation operators
 - <csr-id-7d930a2ccf656d3d6bc5db3e22eb63c5fd6d37d1/> add APIs for declaring external ports on clusters
 - <csr-id-73e9b68ec2f5b2627784addcce9fba684848bb55/> implement keyed fold and reduce
 - <csr-id-5e6ebac1a7f128227ae92a8c195235b27532e17a/> add interleaved shortcut when sending from a cluster
 - <csr-id-af6e3be60fdb69ceec1613347910f4dd49980d34/> push down persists and implement Pi example
   Also fixes type inference issues with reduce the same way as we did for fold.
 - <csr-id-6eeb9be9bc4136041a2855f650ae640c478b7fc9/> improve API naming and polish docs
 - <csr-id-44a308f77bddd67b5c51723ac39f3bc10af52553/> tweak naming of windowing operators
 - <csr-id-1edc5ae5b5f70e1390183e8c8eb27eb0ab32196d/> provide simpler API for launching and minimize dependencies
 - <csr-id-b7aafd3c97897db4bff62c4ab0b7480ef9a799e0/> improve API naming and eliminate wire API for builders
 - <csr-id-d288e51f980577510bb2ed45c04554102c4f1e14/> split API for building single-node graphs
 - <csr-id-26f4d6f610b78a75c41b1ae63366d089ad08b322/> require explicit batching for aggregation operators
 - <csr-id-174607d12277d7544d0f42890c9a5da2ff184df4/> support building graphs for symmetric clusters in Hydroflow+
 - <csr-id-9e275824c88b24d060a7de5822e1359959b36b03/> auto-configure Hydro Deploy based on Hydroflow+ plans
 - <csr-id-27dabcf6878576dc3675788ce3381cb25116033a/> add preliminary `send_to` operator for multi-node graphs
 - <csr-id-e5bdd12e32d6ea72fd91a55c12e09f07a0edaa5c/> add initial test using Hydro CLI from Hydroflow+
   This also required a change to Hydroflow core to make it possible to run the dataflow itself on a single thread (using a LocalSet), even if the surrounding runtime is not single-threaded (required to work around deadlocks because we can't use async APIs inside Hydroflow+). This requires us to spawn any Hydroflow tasks (only for `dest_sink` at the moment) right next to when we run the dataflow rather than when the Hydroflow graph is initialized. From a conceptual perspective, this seems _more right_, since now creating a Hydroflow program will not result in any actual tasks running.
   
   In the third PR of this series, I aim to add a new Hydroflow+ operator that will automate the setup of a `dest_sink`/`source_stream` pair that span nodes.
 - <csr-id-05fb1353cf3e0e8c5da9522365150bd78bd3c5f8/> allow Hydroflow+ programs to emit multiple graphs
   This PR adds support for tagging elements of Hydroflow+ graphs with a node ID, an integer which specifies which Hydroflow graph the computation should be emitted to. The generated code includes the Hydroflow graph for each node ID, so that the appropriate graph can be selected at runtime.
   
   At a larger scale, this is a precursor to adding network operators to Hydroflow+, which will allow distributed logic to be described in a single Hydroflow+ program by specifying points at which data is transferred between different graphs.
 - <csr-id-8b635683e5ac3c4ed2d896ae88e2953db1c6312c/> add a functional surface syntax using staging

### Bug Fixes

 - <csr-id-88a17967d0c9e681a04de4b5796f532f4833272c/> persist cluster IDs for broadcast
   I'll follow this up with a unit test for this, but want to get this fixed ASAP first.
 - <csr-id-bd2bf233302e3638c8f4bc9c0460e1a47edc00aa/> rewrite uses of alloc crate in bincode operators
 - <csr-id-2addaed8a8a441bff7acf9a0a265cc09483fd487/> disallow joining streams on different nodes
 - <csr-id-38411ea007d4feb30dd16bdd1505802a111a67d1/> fix spelling of "propagate"

### `hydroflow_plus` Commit Statistics

<csr-read-only-do-not-edit/>

 - 25 commits contributed to the release.
 - 23 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 20 unique issues were worked on: [#1001](https://github.com/hydro-project/hydroflow/issues/1001), [#1003](https://github.com/hydro-project/hydroflow/issues/1003), [#1004](https://github.com/hydro-project/hydroflow/issues/1004), [#1006](https://github.com/hydro-project/hydroflow/issues/1006), [#1013](https://github.com/hydro-project/hydroflow/issues/1013), [#1021](https://github.com/hydro-project/hydroflow/issues/1021), [#1022](https://github.com/hydro-project/hydroflow/issues/1022), [#1023](https://github.com/hydro-project/hydroflow/issues/1023), [#1035](https://github.com/hydro-project/hydroflow/issues/1035), [#1036](https://github.com/hydro-project/hydroflow/issues/1036), [#899](https://github.com/hydro-project/hydroflow/issues/899), [#976](https://github.com/hydro-project/hydroflow/issues/976), [#978](https://github.com/hydro-project/hydroflow/issues/978), [#981](https://github.com/hydro-project/hydroflow/issues/981), [#982](https://github.com/hydro-project/hydroflow/issues/982), [#984](https://github.com/hydro-project/hydroflow/issues/984), [#989](https://github.com/hydro-project/hydroflow/issues/989), [#991](https://github.com/hydro-project/hydroflow/issues/991), [#993](https://github.com/hydro-project/hydroflow/issues/993), [#995](https://github.com/hydro-project/hydroflow/issues/995)

### `hydroflow_plus` Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **[#1001](https://github.com/hydro-project/hydroflow/issues/1001)**
    - Disallow joining streams on different nodes ([`2addaed`](https://github.com/hydro-project/hydroflow/commit/2addaed8a8a441bff7acf9a0a265cc09483fd487))
 * **[#1003](https://github.com/hydro-project/hydroflow/issues/1003)**
    - Provide simpler API for launching and minimize dependencies ([`1edc5ae`](https://github.com/hydro-project/hydroflow/commit/1edc5ae5b5f70e1390183e8c8eb27eb0ab32196d))
 * **[#1004](https://github.com/hydro-project/hydroflow/issues/1004)**
    - Rewrite uses of alloc crate in bincode operators ([`bd2bf23`](https://github.com/hydro-project/hydroflow/commit/bd2bf233302e3638c8f4bc9c0460e1a47edc00aa))
 * **[#1006](https://github.com/hydro-project/hydroflow/issues/1006)**
    - Tweak naming of windowing operators ([`44a308f`](https://github.com/hydro-project/hydroflow/commit/44a308f77bddd67b5c51723ac39f3bc10af52553))
 * **[#1013](https://github.com/hydro-project/hydroflow/issues/1013)**
    - Improve API naming and polish docs ([`6eeb9be`](https://github.com/hydro-project/hydroflow/commit/6eeb9be9bc4136041a2855f650ae640c478b7fc9))
 * **[#1021](https://github.com/hydro-project/hydroflow/issues/1021)**
    - Push down persists and implement Pi example ([`af6e3be`](https://github.com/hydro-project/hydroflow/commit/af6e3be60fdb69ceec1613347910f4dd49980d34))
 * **[#1022](https://github.com/hydro-project/hydroflow/issues/1022)**
    - Add interleaved shortcut when sending from a cluster ([`5e6ebac`](https://github.com/hydro-project/hydroflow/commit/5e6ebac1a7f128227ae92a8c195235b27532e17a))
 * **[#1023](https://github.com/hydro-project/hydroflow/issues/1023)**
    - Implement keyed fold and reduce ([`73e9b68`](https://github.com/hydro-project/hydroflow/commit/73e9b68ec2f5b2627784addcce9fba684848bb55))
 * **[#1035](https://github.com/hydro-project/hydroflow/issues/1035)**
    - Persist cluster IDs for broadcast ([`88a1796`](https://github.com/hydro-project/hydroflow/commit/88a17967d0c9e681a04de4b5796f532f4833272c))
 * **[#1036](https://github.com/hydro-project/hydroflow/issues/1036)**
    - Add core negation operators ([`5a03ed4`](https://github.com/hydro-project/hydroflow/commit/5a03ed41548b5766b945efbd1eedb0dfceb714d9))
 * **[#899](https://github.com/hydro-project/hydroflow/issues/899)**
    - Add a functional surface syntax using staging ([`8b63568`](https://github.com/hydro-project/hydroflow/commit/8b635683e5ac3c4ed2d896ae88e2953db1c6312c))
 * **[#976](https://github.com/hydro-project/hydroflow/issues/976)**
    - Allow Hydroflow+ programs to emit multiple graphs ([`05fb135`](https://github.com/hydro-project/hydroflow/commit/05fb1353cf3e0e8c5da9522365150bd78bd3c5f8))
 * **[#978](https://github.com/hydro-project/hydroflow/issues/978)**
    - Add initial test using Hydro CLI from Hydroflow+ ([`e5bdd12`](https://github.com/hydro-project/hydroflow/commit/e5bdd12e32d6ea72fd91a55c12e09f07a0edaa5c))
 * **[#981](https://github.com/hydro-project/hydroflow/issues/981)**
    - Add preliminary `send_to` operator for multi-node graphs ([`27dabcf`](https://github.com/hydro-project/hydroflow/commit/27dabcf6878576dc3675788ce3381cb25116033a))
 * **[#982](https://github.com/hydro-project/hydroflow/issues/982)**
    - Auto-configure Hydro Deploy based on Hydroflow+ plans ([`9e27582`](https://github.com/hydro-project/hydroflow/commit/9e275824c88b24d060a7de5822e1359959b36b03))
 * **[#984](https://github.com/hydro-project/hydroflow/issues/984)**
    - Support building graphs for symmetric clusters in Hydroflow+ ([`174607d`](https://github.com/hydro-project/hydroflow/commit/174607d12277d7544d0f42890c9a5da2ff184df4))
 * **[#989](https://github.com/hydro-project/hydroflow/issues/989)**
    - Fix spelling of "propagate" ([`38411ea`](https://github.com/hydro-project/hydroflow/commit/38411ea007d4feb30dd16bdd1505802a111a67d1))
 * **[#991](https://github.com/hydro-project/hydroflow/issues/991)**
    - Require explicit batching for aggregation operators ([`26f4d6f`](https://github.com/hydro-project/hydroflow/commit/26f4d6f610b78a75c41b1ae63366d089ad08b322))
 * **[#993](https://github.com/hydro-project/hydroflow/issues/993)**
    - Split API for building single-node graphs ([`d288e51`](https://github.com/hydro-project/hydroflow/commit/d288e51f980577510bb2ed45c04554102c4f1e14))
 * **[#995](https://github.com/hydro-project/hydroflow/issues/995)**
    - Improve API naming and eliminate wire API for builders ([`b7aafd3`](https://github.com/hydro-project/hydroflow/commit/b7aafd3c97897db4bff62c4ab0b7480ef9a799e0))
 * **Uncategorized**
    - Release hydroflow_plus v0.5.1 ([`58d1d71`](https://github.com/hydro-project/hydroflow/commit/58d1d7166f026a8c7a08a23bc1d77045d7e5f2a9))
    - Release stageleft_macro v0.1.0, stageleft v0.1.0, hydroflow_plus v0.5.1 ([`1a48db5`](https://github.com/hydro-project/hydroflow/commit/1a48db5a1ba058a718ac777367bf6eba3a236b7c))
    - Actually committing empty CHANGELOG.md is required ([`3b36020`](https://github.com/hydro-project/hydroflow/commit/3b36020d16792f26da4df3c5b09652a4ab47ec4f))
    - Manually set lockstep-versioned crates (and `lattices`) to version `0.5.1` ([`1b555e5`](https://github.com/hydro-project/hydroflow/commit/1b555e57c8c812bed4d6495d2960cbf77fb0b3ef))
    - Add APIs for declaring external ports on clusters ([`7d930a2`](https://github.com/hydro-project/hydroflow/commit/7d930a2ccf656d3d6bc5db3e22eb63c5fd6d37d1))
</details>

