diff --git a/hive-c0re/src/workers/wanted.rs b/hive-c0re/src/workers/wanted.rs index 68ec3e17..4ade198a 100644 --- a/hive-c0re/src/workers/wanted.rs +++ b/hive-c0re/src/workers/wanted.rs @@ -1,6 +1,6 @@ //! Converging this hive onto the agent set the swarm controller declares. //! -//! The controller writes one key per hive into the `hive-wanted` bucket (see +//! The controller gives each hive its own `hive-wanted-` bucket (see //! [`swarm_queue_client::wanted`]); this reads its own and acts on it. It is //! the **repair** path, not the fast one: a deploy event //! ([`crate::swarm_status`]) is core NATS, so a hive that was down never hears diff --git a/swarm-controller/src/wanted.rs b/swarm-controller/src/wanted.rs index 7c6314f5..4e25d80a 100644 --- a/swarm-controller/src/wanted.rs +++ b/swarm-controller/src/wanted.rs @@ -2,9 +2,12 @@ //! //! The mirror of [`crate::status`]: that module reads what hives report, //! this one writes what they are told, and both address the same queue. -//! The lifecycle is deliberately identical — a NATS client rather than a -//! bucket handle, resolved on first use and cached, so a controller that -//! starts before the bucket exists picks it up without a restart. +//! Both hold a NATS client rather than a bucket handle, so a controller +//! that starts before a bucket exists picks it up without a restart. +//! +//! Where the mirror stops is the handle itself: `status` resolves one on +//! first use and caches it, while there is one wanted-state bucket **per +//! hive**, so no single handle serves them and `store` resolves per call. //! //! The bucket is the record. Nothing here keeps a second copy of the //! declaration to reconcile against, because the current value can be read