---
id: WF-CMT-MTG-010
title: Close Decisions With Their Consequences
trigger: >-
  A staff close, overdue recorded vote sweep or secret-ballot certification
  closes an open decision.
product_area: committees
module: meetings
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
implements:
  - CAP-CMT-MTG-010
  - CAP-CMT-MTG-011
  - CAP-CMT-MTG-012
  - CAP-CMT-MTG-018
moves:
  - STATE-CMT-MTG-006
  - STATE-CMT-MTG-009
  - STATE-CMT-MTG-004
crosses:
  - SVC-CMT-MTG-decisions
  - SVC-CMT-MTG-recruitment
  - SVC-CMT-MTG-meetings
  - SVC-PFM-NOT-communications
idempotency: >-
  Only open decisions close. Certification paths reuse appointments found under
  their certification source, and closed certifications are ignored.
concurrency: >-
  The decision lock serializes closure. Consequences use the relevant owner
  operations within the closing transaction.
hops:
  - 'n': 1
    actor_or_service: Decisions service
    action: >-
      Require the method’s tally or certification and evaluate the frozen rules;
      a chair-decides tie refuses closure.
    anchor: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow
    seam: sync
    on_failure: Leave the decision open with the reason.
    left_inconsistent: No result is committed.
    observer: The response or sweep list of unclosed decisions.
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow
  - 'n': 2
    actor_or_service: Decisions service
    action: >-
      For a carried result apply appointments, removals, minutes approval,
      charter or dissolution and slate election; rescission reverses the
      supported serving appointments.
    anchor: >-
      services-committees:modules/decisions/services/consequences/consequences.ts:applyConsequences
    seam: sync
    on_failure: Abort the entire close when an owner refuses.
    left_inconsistent: >-
      The decision remains open, including when an intended removal already
      ended.
    observer: The operation response.
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/consequences/consequences.ts:applyConsequences
  - 'n': 3
    actor_or_service: Decisions service
    action: >-
      Persist the result, arithmetic and consequence references and supersede
      the linked carried original when appropriate.
    anchor: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow
    seam: sync
    on_failure: Roll back all result and consequence changes.
    left_inconsistent: No partial database result.
    observer: The saved decision result.
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/decisions.ts:closeRow
  - 'n': 4
    actor_or_service: Decisions service
    action: Persist the closed event and prepare voter result notices.
    anchor: >-
      services-committees:modules/decisions/services/notifications/decision-notifications.ts:notifyVoters
    seam: sync
    on_failure: Log and discard skipped notice preparation.
    left_inconsistent: Voters can miss the result notice.
    observer: Warning entries in the function log.
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/notifications/decision-notifications.ts:notifyVoters
branches: []
waits: []
evidence:
  - >-
    services-committees at 36129c24:
    modules/decisions/services/persistence/decisions.ts:closeRow;
    services/consequences/consequences.ts; services/rules/rescission-rule.ts,
    removal-rule.ts; services/persistence/slated-nominations.ts,
    minutes-approvals.ts
controls:
  - TC-IAM-006
  - TC-AZ-001
  - TC-AZ-002
  - TC-AZ-003
  - TC-AZ-004
  - TC-AZ-006
  - TC-TEN-001
  - TC-TEN-002
  - TC-TEN-003
  - TC-TEN-004
  - TC-SEC-001
  - TC-SEC-004
  - TC-DAT-001
  - TC-DAT-002
  - TC-DAT-003
  - TC-LOG-001
  - TC-LOG-002
  - TC-LOG-003
  - TC-LOG-004
  - TC-LOG-005
  - TC-AVL-004
  - TC-MON-001
  - TC-MON-002
  - TC-PI-001
  - TC-PI-002
  - TC-PI-003
  - TC-PI-004
  - TC-PI-005
  - TC-PRV-001
  - TC-PRV-002
  - TC-PRV-004
---
# Close Decisions With Their Consequences

## What It Does

A staff close, overdue recorded vote sweep or secret-ballot certification closes an open decision. The atomicity applies to the shared database consequences. It does not prove that every external notification is delivered. Unsupported rescission reversals and already-ended removals still need product direction or staff intervention.

## The Flow

```mermaid
flowchart TD
  H1["Require the method’s tally or certification and evaluate the frozen rules"]

  H2["For a carried result apply appointments, removals, minutes approval, charter or dissolution and slate election"]
  H3["Persist the result, arithmetic and consequence references and supersede the linked carried original when appro"]
  H4["Persist the closed event and prepare voter result notices."]
  H1 --> H2
  H2 --> H3
  H3 --> H4
```

Require the method’s tally or certification and evaluate the frozen rules; a chair-decides tie refuses closure. For a carried result apply appointments, removals, minutes approval, charter or dissolution and slate election; rescission reverses the supported serving appointments. Persist the result, arithmetic and consequence references and supersede the linked carried original when appropriate. Persist the closed event and prepare voter result notices.

## When Something Fails

Leave the decision open with the reason. No result is committed. Abort the entire close when an owner refuses. The decision remains open, including when an intended removal already ended. Roll back all result and consequence changes. No partial database result. Log and discard skipped notice preparation. Voters can miss the result notice.

## Open Design Questions

The atomicity applies to the shared database consequences. It does not prove that every external notification is delivered. Unsupported rescission reversals and already-ended removals still need product direction or staff intervention.
