feat(volition): wants, intentions, commitments and their decisions
A model of volition that keeps wanting, intending and committing as separate states (PLAN §8.2 items 1–6, 14): - Wants (migration 0026) carry origin, strength with a six-hour half-life, urgency, valence, drives, values, goal, commitment and an optional proposed means. Derivation is deterministic and selective: failed predictions, contradictions, operator goals, stalled goals, questions and requests, and due commitments; drives and configured values modulate strength with recorded terms; candidates below 0.35 are not stored; identical subjects reinforce; faded and excess wants expire. - Conflicts are first-class and resolved by explicit scores with no fixed hierarchy: urgency scales strength, goals add priority, commitments add normative weight; an approach opposed by a value-derived avoid want wins outright only when clearly stronger, otherwise with a constraint or is deferred. Neither side is discarded. - Commitments (do/refrain with capability, target, access and risk matchers, optional "unless approval", due, expiry, revocability) are checked for due, overdue, impossible, conflicting and superseded states. They constrain means and never grant authority. - Formation weighs strength, urgency, goal, commitment, expected utility, risk scaled by caution, cost, privacy and autonomy; it returns formed or not formed with a reason (forbidden by commitment, denied, unavailable, no possible plan, below threshold, capacity, duplicate, deferred), and a commitment requiring approval turns an action into a request for approval. - Reconsideration maps triggers (denied or expired approval, capability or commitment change, failed step or expectation, weakened belief, budget, goal completion, world change, operator correction) to keep, block, suspend, resume, replan, require approval, abandon or fulfil, with bounded replanning. - The store records every transition as an event and every choice in the append-only volition_decisions ledger; fulfilling an intention satisfies its wants and fulfils its commitment. - Event vocabulary gains volition and plan categories.
This commit is contained in:
+41
-1
@@ -65,6 +65,39 @@ const (
|
||||
ResponseGenerated Type = "response_generated"
|
||||
CycleCompleted Type = "cycle_completed"
|
||||
Redaction Type = "redaction" // content of an earlier row was made irrecoverable under a policy
|
||||
|
||||
// Volition (docs/volition.md): wants, intentions and commitments are
|
||||
// distinct states; each transition is recorded.
|
||||
WantCreated Type = "want_created"
|
||||
WantReinforced Type = "want_reinforced"
|
||||
WantSuppressed Type = "want_suppressed" // a want was not pursued because of a commitment, conflict or policy; it stays represented
|
||||
WantConflictDetected Type = "want_conflict_detected"
|
||||
IntentionFormed Type = "intention_formed"
|
||||
IntentionBlocked Type = "intention_blocked"
|
||||
IntentionSuspended Type = "intention_suspended"
|
||||
IntentionResumed Type = "intention_resumed"
|
||||
IntentionReconsidered Type = "intention_reconsidered"
|
||||
IntentionAbandoned Type = "intention_abandoned"
|
||||
IntentionFulfilled Type = "intention_fulfilled"
|
||||
IntentionSuperseded Type = "intention_superseded"
|
||||
CommitmentCreated Type = "commitment_created"
|
||||
CommitmentDue Type = "commitment_due"
|
||||
CommitmentConflict Type = "commitment_conflict"
|
||||
CommitmentFulfilled Type = "commitment_fulfilled"
|
||||
CommitmentBroken Type = "commitment_broken"
|
||||
CommitmentRevoked Type = "commitment_revoked"
|
||||
|
||||
// Planning (docs/planning.md). Action requests, authorisation and
|
||||
// completion reuse policy_decision and tool_*; expectation resolution
|
||||
// reuses prediction_resolved and prediction_error.
|
||||
PlanCreated Type = "plan_created"
|
||||
PlanValidated Type = "plan_validated"
|
||||
PlanStepStarted Type = "plan_step_started"
|
||||
PlanStepCompleted Type = "plan_step_completed"
|
||||
PlanStepFailed Type = "plan_step_failed"
|
||||
PlanReplanned Type = "plan_replanned"
|
||||
PlanCompleted Type = "plan_completed"
|
||||
PlanAbandoned Type = "plan_abandoned"
|
||||
)
|
||||
|
||||
// Category groups types for filtering and colouring in the UI.
|
||||
@@ -83,6 +116,8 @@ const (
|
||||
CatLLM Category = "llm"
|
||||
CatOperator Category = "operator"
|
||||
CatSystem Category = "system"
|
||||
CatVolition Category = "volition"
|
||||
CatPlan Category = "plan"
|
||||
)
|
||||
|
||||
var categories = map[Type]Category{
|
||||
@@ -100,6 +135,11 @@ var categories = map[Type]Category{
|
||||
NotificationCreated: CatAction, NotificationSuppressed: CatAction, PolicyDecision: CatAction,
|
||||
LLMRequest: CatLLM, LLMResponse: CatLLM,
|
||||
SelfModelUpdated: CatSystem, OperatorAction: CatOperator,
|
||||
WantCreated: CatVolition, WantReinforced: CatVolition, WantSuppressed: CatVolition, WantConflictDetected: CatVolition,
|
||||
IntentionFormed: CatVolition, IntentionBlocked: CatVolition, IntentionSuspended: CatVolition, IntentionResumed: CatVolition, IntentionReconsidered: CatVolition,
|
||||
IntentionAbandoned: CatVolition, IntentionFulfilled: CatVolition, IntentionSuperseded: CatVolition,
|
||||
CommitmentCreated: CatVolition, CommitmentDue: CatVolition, CommitmentConflict: CatVolition, CommitmentFulfilled: CatVolition, CommitmentBroken: CatVolition, CommitmentRevoked: CatVolition,
|
||||
PlanCreated: CatPlan, PlanValidated: CatPlan, PlanStepStarted: CatPlan, PlanStepCompleted: CatPlan, PlanStepFailed: CatPlan, PlanReplanned: CatPlan, PlanCompleted: CatPlan, PlanAbandoned: CatPlan,
|
||||
}
|
||||
|
||||
// CategoryOf returns the category of a type (CatSystem for unknown types).
|
||||
@@ -135,7 +175,7 @@ func sortTypes(ts []Type) {
|
||||
// memory, belief, another event, an entity, a document, an LLM call, a
|
||||
// prediction, a message.
|
||||
type EvidenceRef struct {
|
||||
Kind string `json:"kind"` // event | memory | belief | entity | document | llm_call | prediction | goal | message | approval
|
||||
Kind string `json:"kind"` // event | memory | belief | entity | document | llm_call | prediction | goal | message | approval | want | intention | commitment | plan | plan_step | capability_request | execution
|
||||
ID string `json:"id"`
|
||||
Note string `json:"note,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user