Skip to content

Decision

A Decision is the immutable record of a choice: its options, the choice, the reason, who decided, and the stakes.

A newer Decision supersedes it, and both stay on record.

Properties

PropertyTypeRequiredDescription
choicetextrequiredWhat was chosen.
reasontextrequiredWhy it was chosen.
stakesstringOne of low, medium, or high, which sets the delay window.

Object

JSON
{
  "$id": "https://api.sb/tutorloop.com/decisions/decision_1",
  "$type": "Decision",
  "choice": "Example choice",
  "reason": "Example reason",
  "stakes": "low"
}

Relationships

  • A Decision has many Changes: every merged Change traces back to the Decision that authorized it. changes, inverse implementsDecision.
  • A Decision decides one Thing: a Decision records one choice about a Thing and stays on that Thing’s record forever. decides, inverse decidedBy.
  • A Decision is made in one Meeting: a Meeting records Decisions, each with its options, choice and reason. madeIn, inverse produces.
  • A Decision records one Demand Budget: each Demand Budget is committed as one Decision, read again when it closes. records, inverse recordedAs.

Lifecycle

Decision lifecycle: standing, superseded (ends)standing → superseded: Decision.supersedestandingsuperseded
StateMeaningMoves to
standing (first)It is the choice in force.superseded by Decision.supersede
supersededA newer Decision replaced it; both stay on record with the reason for the change.None: it ends here.

Verbs

  1. createCreates a Decision.
    POST /{namespace}/decisionsdoDecision.created
  2. getReturns one Decision by id.
    GET /{namespace}/decisions/{id}readNo Event
  3. listReturns Decisions, newest first, one page at a time.
    GET /{namespace}/decisionsreadNo Event
  4. supersedeSupersede replaces a Decision with a newer one, keeping both on record with the reason for the change.
    POST /{namespace}/decisions/{decision}/supersededoDecision.superseded

A Decision is kept forever and never edited: it has no update or delete.

Permissions

Which Access level may call each Verb. One-way Verbs wait their delay window.

Operationowneradminmemberviewer
Decision.createYesYesYesNo
Decision.getYesYesYesYes
Decision.listYesYesYesYes
Decision.supersedeYesYesYesNo

Call it

Text
Supersede the latest decision.

Example

The Founder picks usage pricing over per-seat pricing. The Decision records both options, choice: usage, the reason ("Customers already pay per call"), and stakes of $40,000 a year.