pub enum MemoryRelationKind {
Answers,
Authorizes,
ChosenBecause,
AchievedBy,
FollowsFrom,
SatisfiesConstraint,
ViolatesConstraint,
Supersedes,
Contradicts,
}Expand description
How one remembered thing explains another.
Named in this engine’s terms and not a memory backend’s. What a particular backend calls these, and how it classes them, is a mapping an adapter owns — an engine that spoke one backend’s taxonomy would have to change when that backend did.
Each kind says who is in a position to assert it, because that is the difference between a reason and a guess. The engine asserts only what it can see in its own aggregate; everything else is asserted by whoever did the reasoning.
Variants§
Answers
This is the reply to what that one asked.
The engine asserts this: a contribution and the agenda item it was made against are both in the session, and which answers which is not a judgement.
Authorizes
That decision is what permitted this action.
Causal rather than motivational: a decision that permits an action is part of why the action was possible, not part of why anybody wanted it.
ChosenBecause
This was decided because of that.
Asserted by whoever decided. The engine cannot infer it — something being written down before a decision is not what made the decision, and recording it as though it were is how a coincidence becomes a precedent.
AchievedBy
This was brought about by doing that — the how.
Not a weaker form of cause. A reason says what made something necessary; this says what was actually done, and it is what makes a memory repeatable rather than only understandable. A session that recorded why it resolved and not how leaves a precedent nobody can turn into a procedure.
FollowsFrom
This came about because of that.
Asserted by whoever can vouch for it. The strongest claim available and the easiest to make carelessly: a session ending well after an action is not the action having worked.
SatisfiesConstraint
This honours a limit that one set.
ViolatesConstraint
This breaks a limit that one set, knowingly.
Supersedes
This replaces that as what is believed now.
What was superseded is not deleted: a later session asking what was thought at the time needs the belief that was replaced, and a session that quietly overwrote it would answer with today’s knowledge about yesterday’s decision.
Contradicts
These cannot both be true.
Kept rather than resolved. Two sessions that reached opposite conclusions are a fact about the problem, and flattening them into one would lose the only warning a third session gets.
Implementations§
Source§impl MemoryRelationKind
impl MemoryRelationKind
pub const fn as_label(self) -> &'static str
Sourcepub const fn is_observable_by_the_engine(self) -> bool
pub const fn is_observable_by_the_engine(self) -> bool
Whether this engine can assert the relation on its own.
Everything else needs someone who did the reasoning to say so. Kept as a property rather than as a comment so a caller that generates relations automatically can be stopped from generating the ones nobody is entitled to.
Sourcepub const fn is_method(self) -> bool
pub const fn is_method(self) -> bool
Whether this says how something was done rather than why.
Worth telling apart: a memory backend measuring how explanatory a memory is counts causes, motives and evidence, and does not count method. A session with method and no cause scores zero on that measure and is not thereby worthless — it is repeatable and unexplained, which is a different thing from explained and unrepeatable.
Trait Implementations§
Source§impl Clone for MemoryRelationKind
impl Clone for MemoryRelationKind
Source§fn clone(&self) -> MemoryRelationKind
fn clone(&self) -> MemoryRelationKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more