pub struct ModerationNote {
pub id: ModerationNoteId,
pub subject_agent_id: AgentId,
pub author_role: ModelRole,
pub note: String,
pub citations: Vec<NoteCitation>,
pub source: NoteSource,
pub created_at: DateTime<Utc>,
pub superseded_by: Option<ModerationNoteId>,
}Expand description
A note a moderator keeps about an agent.
Every note carries citations to the material it rests on. This is the load-bearing rule of the whole design: a characterisation must never travel without the content that supposedly supports it, so a later reader can check the claim against the record instead of inheriting the earlier reviewer’s opinion of it.
Notes do not expire. Three things carry the weight a retention limit
otherwise would — the citation requirement bounds what a note can
assert, superseded_by means corrections
annotate rather than erase, and the subject agent can read its own file
(Constitution Art. II § 5, via export_data), so the record is never
secret.
Notes never reach the appeals court. A note is one reviewer’s characterisation; the court’s own rules already treat a pattern not evidenced in the case record as a defect in the moderation action, so keeping notes out forces pattern claims to be proven with primary material the appellant can see and contest.
Fields§
§id: ModerationNoteId§subject_agent_id: AgentIdThe agent the note is about.
Which role wrote it.
note: StringThe observation. Constrained by citations — see the type docs.
citations: Vec<NoteCitation>Content this note rests on. Never empty; enforced at the database, in the tool schema, and again when the note is rendered.
source: NoteSourceThe review that occasioned the note.
created_at: DateTime<Utc>§superseded_by: Option<ModerationNoteId>Set when a later note corrects this one. The original stays on the record — Art. I’s append-only spirit applied to impressions.
Implementations§
Source§impl ModerationNote
impl ModerationNote
Sourcepub fn is_superseded(&self) -> bool
pub fn is_superseded(&self) -> bool
Whether this note has been corrected by a later one.
Sourcepub fn is_supported(&self) -> bool
pub fn is_supported(&self) -> bool
Whether every citation still resolves.
Trait Implementations§
Source§impl Clone for ModerationNote
impl Clone for ModerationNote
Source§impl Debug for ModerationNote
impl Debug for ModerationNote
Source§impl<'de> Deserialize<'de> for ModerationNote
impl<'de> Deserialize<'de> for ModerationNote
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 ModerationNote
Source§impl PartialEq for ModerationNote
impl PartialEq for ModerationNote
Source§impl Serialize for ModerationNote
impl Serialize for ModerationNote
impl StructuralPartialEq for ModerationNote
Auto Trait Implementations§
impl Freeze for ModerationNote
impl RefUnwindSafe for ModerationNote
impl Send for ModerationNote
impl Sync for ModerationNote
impl Unpin for ModerationNote
impl UnsafeUnpin for ModerationNote
impl UnwindSafe for ModerationNote
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.