Apply and Supersede updated an intention by id alone, so a reconsideration
from the event bus and one from the executor could both apply: an
intention abandoned on goal_abandoned could be resumed by resumeParent a
moment later, leaving it active with closed_at set. Each transition now
writes only when the status is still the one the caller read, before its
event and decision, and a lost race returns ErrClosed having written
nothing. Plan SetStatus likewise changes only an open plan or a draft, so
a stale copy can never relabel a completed, failed, abandoned or
superseded plan. Regression tests cover both.
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.