Skip to main content

Rule

Struct Rule 

Source
pub struct Rule {
    pub text: String,
    pub enabled: bool,
    pub confidence: Option<f64>,
    pub based_on_count: Option<u32>,
    pub id: Option<String>,
    pub sources: Vec<String>,
    pub created_at: Option<String>,
    pub retired_at: Option<String>,
    pub retired_reason: Option<String>,
    pub probation: bool,
}
Expand description

One rule in a domain’s TOML file.

A rule outlives the pass that wrote it, so it carries its own lineage: id is what the validation ledger keys on, sources closes the provenance chain from a live rule back to the reflections it was argued from (batch-level — the learner’s per-rule attributions would be its own unverifiable testimony), and created_at is the staleness signal. Every new field defaults, so rule files written before they existed load unchanged — the same trick as Reflexion::origin, minus the fail-closed semantics, because absent lineage on an already-accepted rule is history, not a threat.

Fields§

§text: String§enabled: bool§confidence: Option<f64>§based_on_count: Option<u32>§id: Option<String>

Minted when the rule first enters the store; stable across consolidations that keep the text.

§sources: Vec<String>

Reflexion ids of the batch that produced (or last rewrote) this rule.

§created_at: Option<String>§retired_at: Option<String>

Set instead of deleting: a retired rule is evidence — the learner is told it was tried and measured harmful, which a deleted line cannot say — and the invalidation is reversible where erasure is not.

§retired_reason: Option<String>§probation: bool

The gate could not measure this rule at birth.

mecha learn --auto applies a batch whose probes all skipped rather than holding it — the D1 ruling, and the only alternative that is not either today’s stall (hold, when unmeasurable batches are the common case) or giving up the writing and followup half of the corpus permanently. What makes that defensible is that the rule is marked and retires sooner: acting without certainty is the bet, and a shorter leash is the hedge.

Distinct from “the ledger has not covered it yet”, which is a property of rule_tallies and true of every new rule for a while. This records that the counterfactual gate ran and could not grade it — the gate’s probes never reach the validation ledger, so nothing else remembers that. Released by release_probation_when_measured_clean once the ledger has graded the rule beyond its convictions — and only then, because an attributed regression always arrives inside an observation, so releasing on coverage alone would strip the leash on the very evidence it exists to act on.

Implementations§

Source§

impl Rule

Source

pub fn active(&self) -> bool

Whether this rule rides in prompts. Retirement implies inactive even if enabled was left true by a hand edit — the stronger claim wins.

Trait Implementations§

Source§

impl Clone for Rule

Source§

fn clone(&self) -> Rule

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Rule

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Rule

Source§

fn default() -> Self

A blank enabled rule — enabled: true mirrors the serde default, so ..Default::default() at a construction site cannot silently disable.

Source§

impl<'de> Deserialize<'de> for Rule

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Rule

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Rule

§

impl RefUnwindSafe for Rule

§

impl Send for Rule

§

impl Sync for Rule

§

impl Unpin for Rule

§

impl UnsafeUnpin for Rule

§

impl UnwindSafe for Rule

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more