pub struct PacketSinkMigration {
pub sink: &'static str,
pub packet_helper: &'static str,
pub legacy_fallback: &'static str,
pub equivalence_test: &'static str,
pub kill_switch_env: Option<&'static str>,
pub landed_in_commit: &'static str,
}Expand description
Packet-driven sink registry: enumerates the consumer sinks the
coding_agent_session_search-ibuuh.32 migration covers, the
packet-driven helper each one ships, the legacy fallback function
that remains as the demotion path, the byte-equivalence test that
pins the two paths agree, and the env knob (if any) that opts in
to the compare-mode audit.
This struct is the operator-facing answer to the bead acceptance language: “explicit observability showing which paths are packet- driven versus legacy, and a temporary shadow or compare mode plus explicit kill-switch or demotion path so divergence can be diagnosed without trapping users on a broken path.”
Future migrations should append a PacketSinkMigration entry
here and update the equivalence test name; CI tooling (or future
cass doctor --packet-equivalence slices) can serialize this
list to surface the kill-switch catalog without grepping for
helpers across the codebase.
Fields§
§sink: &'static strStable sink identifier (“lexical”, “analytics”, “semantic”).
packet_helper: &'static strFully-qualified path to the packet-driven helper (free function or method) callers should use.
legacy_fallback: &'static strFully-qualified path to the legacy non-packet path that remains in the codebase as the demotion fallback. Removing this without an equivalence-proven replacement is off-contract.
equivalence_test: &'static strTest name (under cargo test) that pins byte-for-byte
equivalence between the two paths.
kill_switch_env: Option<&'static str>Env knob that opts callers into shadow-compare audit when
applicable, or None if the helper is direct-replacement and
the equivalence test is the only gate.
landed_in_commit: &'static strCommit hash at which the packet helper landed (so an operator
debugging a regression can git show the migration directly).
Trait Implementations§
Source§impl Clone for PacketSinkMigration
impl Clone for PacketSinkMigration
Source§fn clone(&self) -> PacketSinkMigration
fn clone(&self) -> PacketSinkMigration
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PacketSinkMigration
impl Debug for PacketSinkMigration
Source§impl Deserialize<'static> for PacketSinkMigration
impl Deserialize<'static> for PacketSinkMigration
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'static>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'static>,
Source§impl PartialEq for PacketSinkMigration
impl PartialEq for PacketSinkMigration
Source§fn eq(&self, other: &PacketSinkMigration) -> bool
fn eq(&self, other: &PacketSinkMigration) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for PacketSinkMigration
impl Serialize for PacketSinkMigration
impl Eq for PacketSinkMigration
impl StructuralPartialEq for PacketSinkMigration
Auto Trait Implementations§
impl Freeze for PacketSinkMigration
impl RefUnwindSafe for PacketSinkMigration
impl Send for PacketSinkMigration
impl Sync for PacketSinkMigration
impl Unpin for PacketSinkMigration
impl UnsafeUnpin for PacketSinkMigration
impl UnwindSafe for PacketSinkMigration
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more