---
id: STATE-CMT-MTG-006
title: Decision Status
object: DOM-CMT-MTG-003
product_area: committees
module: meetings
revision: 2
status: draft
design_intent: proposed
implementation_evidence: observed
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
states:
  - name: draft
    meaning: A motion and intended consequence awaiting opening.
  - name: open
    meaning: Voting is active against the stored rules and participant snapshot.
  - name: carried
    meaning: >-
      The rule engine finds the motion carried and its database consequences
      commit.
  - name: failed
    meaning: The motion does not meet its required threshold.
  - name: no_quorum
    meaning: The motion is set aside without a voting result.
  - name: tabled
    meaning: The motion is withdrawn without a voting result.
  - name: withdrawn
    meaning: The required quorum is not met.
  - name: superseded
    meaning: >-
      A later carried amendment or rescission supersedes the original carried
      decision.
transitions:
  - from: draft
    to: open
    trigger: Staff or a calling business step opens the draft.
    guard: >-
      The supplied version matches; method, deadline and threshold pass opening
      checks, and secret voting needs an available ballot port. Meeting status
      was checked at drafting, not again here.
    side_effects:
      - >-
        Allocate the yearly committee number, freeze rule and voter snapshots,
        request a secret election through its port when applicable, and prepare
        the opened event and notices.
    who: 'Decision manager, a slate, or a minutes approval'
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:openRow
  - from: draft
    to: tabled
    trigger: Staff table the draft.
    guard: The decision version matches.
    side_effects:
      - Retain the record without sending voter notices.
    who: Staff holding decision management permission
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:setAside
  - from: draft
    to: withdrawn
    trigger: Staff withdraw the draft.
    guard: The decision version matches.
    side_effects:
      - Retain the record without sending voter notices.
    who: 'Decision manager, or the nomination''s withdrawal or decline'
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:setAside;
      modules/recruitment/services/nominations/nominations.ts:withdrawWithin
  - from: open
    to: tabled
    trigger: Staff table the open motion.
    guard: The decision version matches.
    side_effects:
      - Retain existing votes and send no tabling notice.
    who: Staff holding decision management permission
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/rules/decision-rules.ts:DECISION_TRANSITIONS
  - from: open
    to: withdrawn
    trigger: Staff withdraw the open motion.
    guard: The decision version matches.
    side_effects:
      - Retain existing records and send no withdrawal notice.
    who: 'Decision manager, or the nomination''s withdrawal or decline'
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:setAside
  - from: open
    to: carried
    trigger: 'The staff close, hourly sweep or certification evaluates a carried result.'
    guard: >-
      Required tally or certification is present, a chair-decides tie is
      resolved, and every consequence is accepted.
    side_effects:
      - >-
        Record outcome, arithmetic and author, apply consequences atomically,
        supersede the linked original when appropriate, and prepare closed event
        and notices.
    who: 'Decision staff, scheduled processing or certification'
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow;
      services/consequences/consequences.ts:applyConsequences
  - from: open
    to: failed
    trigger: 'The staff close, hourly sweep or certification evaluates a failed result.'
    guard: >-
      The engine finds insufficient support after required method evidence is
      available.
    side_effects:
      - >-
        Record the failed tally and explanation and prepare result event and
        notices without business consequences.
    who: 'Decision staff, scheduled processing or certification'
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow
  - from: open
    to: no_quorum
    trigger: 'The staff close, hourly sweep or certification evaluates no quorum.'
    guard: The engine finds that the applicable quorum is not satisfied.
    side_effects:
      - >-
        Record quorum arithmetic and prepare result event and notices without
        business consequences.
    who: 'Decision staff, scheduled processing or certification'
    provenance: observed
    source: 'services-committees:lib/governance/decision-engine.ts:evaluateDecision'
  - from: carried
    to: superseded
    trigger: A linked amendment or rescission carries.
    guard: The original remains carried when its supersession is recorded.
    side_effects:
      - >-
        Mark it superseded; supported rescission also ends the original
        appointments still serving on the reversal date.
    who: Closure of the later amendment or rescission
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow
      (supersededId)
invalid:
  - from: open
    to: draft
    why: Opening freezes the motion; there is no return-to-draft operation.
  - from: draft
    to: carried
    why: The decision must open and capture voters before being evaluated.
  - from: failed
    to: open
    why: A failed result is final; further consideration needs another decision.
  - from: superseded
    to: carried
    why: Supersession is not reversed by reopening the original.
concurrency: >-
  Decision locks serialize moves, while the committee lock serializes number
  allocation. Sweeps and certifications re-read status under lock. Database
  freeze triggers are declared but their migration definitions remain outside
  this examination.
invariants:
  - INV-DOM-CMT-MTG-003-01
  - INV-DOM-CMT-MTG-003-02
  - INV-DOM-CMT-MTG-003-04
  - INV-DOM-CMT-MTG-003-07
evidence:
  - >-
    services-committees at 36129c24:
    modules/decisions/services/rules/decision-rules.ts;
    services/persistence/decisions.ts; services/jobs/decisions-jobs.ts;
    services/certification/certified-election.ts;
    services/consequences/consequences.ts; lib/governance/decision-engine.ts
---
# Decision Status

## The Lifecycle

```mermaid
stateDiagram-v2
  [*] --> draft
  draft --> open
  draft --> tabled
  draft --> withdrawn
  open --> tabled
  open --> withdrawn
  open --> carried
  open --> failed
  open --> no_quorum
  carried --> superseded
```

draft: A motion and intended consequence awaiting opening.

open: Voting is active against the stored rules and participant snapshot.

carried: The rule engine finds the motion carried and its database consequences commit.

failed: The motion does not meet its required threshold.

no_quorum: The motion is set aside without a voting result.

tabled: The motion is withdrawn without a voting result.

withdrawn: The required quorum is not met.

superseded: A later carried amendment or rescission supersedes the original carried decision.

## Transitions Explained

Staff or a calling business step opens the draft. The supplied version matches; method, deadline and threshold pass opening checks, and secret voting needs an available ballot port. Meeting status was checked at drafting, not again here. Allocate the yearly committee number, freeze rule and voter snapshots, request a secret election through its port when applicable, and prepare the opened event and notices.

Staff table the draft. The decision version matches. Retain the record without sending voter notices.

Staff withdraw the draft. The decision version matches. Retain the record without sending voter notices.

Staff table the open motion. The decision version matches. Retain existing votes and send no tabling notice.

Staff withdraw the open motion. The decision version matches. Retain existing records and send no withdrawal notice.

The staff close, hourly sweep or certification evaluates a carried result. Required tally or certification is present, a chair-decides tie is resolved, and every consequence is accepted. Record outcome, arithmetic and author, apply consequences atomically, supersede the linked original when appropriate, and prepare closed event and notices.

The staff close, hourly sweep or certification evaluates a failed result. The engine finds insufficient support after required method evidence is available. Record the failed tally and explanation and prepare result event and notices without business consequences.

The staff close, hourly sweep or certification evaluates no quorum. The engine finds that the applicable quorum is not satisfied. Record quorum arithmetic and prepare result event and notices without business consequences.

A linked amendment or rescission carries. The original remains carried when its supersession is recorded. Mark it superseded; supported rescission also ends the original appointments still serving on the reversal date.

## What Cannot Happen

Opening freezes the motion; there is no return-to-draft operation. The decision must open and capture voters before being evaluated. A failed result is final; further consideration needs another decision. Supersession is not reversed by reopening the original. Some close attempts remain open because a chair vote or a valid consequence is missing. A terminal outcome is distinct from guaranteed communication delivery; notices can be skipped.

## Concurrency and Timing

Decision locks serialize moves, while the committee lock serializes number allocation. Sweeps and certifications re-read status under lock. Database freeze triggers are declared but their migration definitions remain outside this examination.
