`peppy stack join` and `stack remove` now grow and shrink a running instance's producer and observer sets, delivered live to running nodes.
Released on September 22, 2026
Breaking changes
-
peppy stack list --jsonnow nests eachslot_bindingsproducer under aproducerkey, with an optionalcopykey; update anything that parses that output. -
Rust generated
bound_producers()accessors return owned values (NonEmptyProducers,Vec<ProducerRef>) instead of borrowed slices, so bind the result to a variable before calling.first(). -
peppy stack joinadds a copy's own instances to a running instance'sone_or_moreorzero_or_moreproducer or observer slot, delivering the grown set to the running node. -
peppy stack removetakes the members a copy added back out of the running sets, and refuses a removal that would empty aone_or_moreslot, naming it. -
A running node's bound producer and observer sets, and its topic subscriptions, follow copies joining and leaving, so call
bound_producers()orsources()at the point of use. -
Generated set slots gain a
bound_members()accessor returning each producer with the copy its instance belongs to, and Python gains apeppylib.BoundMembertype. -
peppy stack listshows the set members each copy added underSet members:and marks each bound member a copy brought with[copy NAME]. -
Standalone nodes gain
with_bound_producer_in_copyandwith_peer_pin_in_copybuilders for a binding or pair whose instance belongs to a copy.