pub struct Source {
pub name: String,
pub medium_type: MediumType,
pub pointer: String,
pub change_detection: Option<String>,
pub scope: Vec<PatternEntry>,
pub engagement: Option<Value>,
pub preparation: Option<String>,
}Expand description
One inline source of a v2 crate::binding::Binding — the full
description of a body of information the pipeline reads, carrying both
halves the retired standalone records used to split: the medium half
(where it lives — type / pointer / change_detection) and the
facet half (which part of it — scope / engagement / preparation).
name is required and unique within the record: it keys per-source
sync/verify state (<mem>/<binding>/<source>#synced) exactly as facet
names did before the consolidation, which is why migration preserves
facet names as source names byte-verbatim.
Fields§
§name: StringStable name — keys per-source sync/verify state.
medium_type: MediumTypeWhat kind of surface this source references (the medium half).
pointer: StringWhere the body of information lives — a path, URL, or mem id,
interpreted per Self::medium_type. Opaque to this layer.
change_detection: Option<String>Optional declared change-detection strategy — none / git /
mtime / auto. Unset (the common case) means auto: the ingest
resolver probes for a git work tree over Self::pointer and picks
git or mtime. A graph-typed source ignores this and always uses
the graph snapshot signal.
scope: Vec<PatternEntry>Allow/deny selection over the source (the facet half). A source with
no allow patterns is unscoped — a typed refusal at run time (no
strategy diffs or enumerates the whole territory; the brief reports
it as unmonitored), not “everything”. A source that truly wants
everything writes **/*.
engagement: Option<Value>Engagement contract — verbs, tools, terminology, discipline. Free-form because the shape differs by medium type; the engine does not interpret it.
preparation: Option<String>Optional deterministic preparation step (string identifier, e.g.
pdf-to-markdown). Unset for every text source today. A source that
names a preparation the engine has no implementation for is refused
at validation time — no silent skip, no crash.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Source
impl<'de> Deserialize<'de> for Source
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Source
impl StructuralPartialEq for Source
Auto Trait Implementations§
impl Freeze for Source
impl RefUnwindSafe for Source
impl Send for Source
impl Sync for Source
impl Unpin for Source
impl UnsafeUnpin for Source
impl UnwindSafe for Source
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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> DowncastSend for T
impl<T> DowncastSend 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§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.impl<T> Fruit for T
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> 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