pub struct WorkerAdvertisement<'a> {
pub activity_types: &'a BTreeSet<String>,
pub contracts: &'a [ActivityDescriptor],
}Expand description
What a registering worker announced about itself, in the TWO independent forms it announces it in.
These are different sets and they are used for different things, which is
precisely why they must travel together. activity_types is the NAME set the
dispatcher selects on; contracts is the typed-descriptor set admission
compares against the deployed .v4 contracts. A worker can advertise a name
with no contract behind it — it is then selectable but not admissible.
Before this pair existed, admission received only contracts while the
refusal log printed only activity_types, and on 2026-07-30 that produced a
refusal record which listed action assistant as advertised in the same line
that reported it <missing>. Both facts were true of different sets and the
record said which of neither. Carrying both through the gate makes the
refusal state the gap instead of contradicting itself.
Fields§
§activity_types: &'a BTreeSet<String>Activity-type NAMES the worker advertised — the dispatcher’s selection set.
contracts: &'a [ActivityDescriptor]Typed contracts the worker advertised — the set admission compares.
Implementations§
Source§impl WorkerAdvertisement<'_>
impl WorkerAdvertisement<'_>
Sourcepub fn names_without_contracts(&self) -> Vec<String>
pub fn names_without_contracts(&self) -> Vec<String>
Advertised names carrying no typed contract, sorted.
Non-empty means the worker is selectable for actions it cannot be admitted for, which is the exact shape of the 2026-07-30 refusal loop.
Trait Implementations§
Source§impl<'a> Clone for WorkerAdvertisement<'a>
impl<'a> Clone for WorkerAdvertisement<'a>
Source§fn clone(&self) -> WorkerAdvertisement<'a>
fn clone(&self) -> WorkerAdvertisement<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl<'a> Copy for WorkerAdvertisement<'a>
Auto Trait Implementations§
impl<'a> Freeze for WorkerAdvertisement<'a>
impl<'a> RefUnwindSafe for WorkerAdvertisement<'a>
impl<'a> Send for WorkerAdvertisement<'a>
impl<'a> Sync for WorkerAdvertisement<'a>
impl<'a> Unpin for WorkerAdvertisement<'a>
impl<'a> UnsafeUnpin for WorkerAdvertisement<'a>
impl<'a> UnwindSafe for WorkerAdvertisement<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoMaybeUndefined<T> for T
impl<T> IntoMaybeUndefined<T> for T
Source§fn into_maybe_undefined(self) -> MaybeUndefined<T>
fn into_maybe_undefined(self) -> MaybeUndefined<T>
Source§impl<T> IntoOption<T> for T
impl<T> IntoOption<T> for T
Source§fn into_option(self) -> Option<T>
fn into_option(self) -> Option<T>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request