pub struct DerivedWriteGrant {
pub grantee_node_id: String,
pub topic: String,
pub issued_at_ms: u64,
pub scope: GrantScope,
}Expand description
Capability allowing a node to publish under
substrate/_derived/<topic> (or its subtree, depending on
GrantScope).
Mesh-canonical paths (substrate/_derived/...) are explicitly
outside the per-node prefix rule; without a grant the
substrate write gate refuses every publish to that subtree, even
from a daemon-class node. See
.planning/sensors/PIPELINE-PRIMITIVE-JOURNAL.md §R3.6 for the
design rationale.
MVP scope: grants are issued in-process by the daemon to itself; there is no signature on the grant itself, no revocation API, and no cross-node federation. Those land later (R3.6 calls them out as deferred).
Fields§
§grantee_node_id: StringNode id permitted to write under the topic.
topic: StringTopic segment immediately under _derived/. For whisper this
is "transcript". Stored without the _derived/ prefix so
the registry holds the conceptual capability, not its path
rendering.
issued_at_ms: u64Wall-clock issuance time in milliseconds since UNIX epoch.
scope: GrantScopeWhether the topic is matched as exact-only or as a path prefix.
Trait Implementations§
Source§impl Clone for DerivedWriteGrant
impl Clone for DerivedWriteGrant
Auto Trait Implementations§
impl Freeze for DerivedWriteGrant
impl RefUnwindSafe for DerivedWriteGrant
impl Send for DerivedWriteGrant
impl Sync for DerivedWriteGrant
impl Unpin for DerivedWriteGrant
impl UnsafeUnpin for DerivedWriteGrant
impl UnwindSafe for DerivedWriteGrant
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,
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