---
id: CAP-CMT-MTG-010
title: Put a motion to a committee and record how it was decided
feature: FEAT-CMT-MTG-03
product_area: committees
module: meetings
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes:
- react-console acceptance inventory CAP-CMT-DEC-001, 002, 005, 006, 007, 009, 012, 013, 014, 025, 026, 027
- react-console acceptance journeys CMT-ACC-0320, 0325, 0328 to 0332, 0338, 0339, 0341, 0345 to 0349, 0352, 0355 to 0357, 0364
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
- services-committees:docs/milestones/CMTE-M4-decisions-and-governance-register.md#Decisions
purpose: A committee records each motion, in a meeting or by e-mail, with who could vote, how they voted and the result.
outcomes:
- Every motion numbered and kept as a permanent record
- Who could vote fixed when voting opens
- E-mail votes closed on time without staff action
concepts:
- CON-CMT-MTG-003
actors:
- ACT-CMT-002
- ACT-CMT-008
- ACT-CMT-011
- ACT-CMT-012
surfaces:
- api
- job
preconditions:
- The committee exists and is not dissolved.
postconditions:
- A closed decision carries its tally, arithmetic and outcome.
permissions:
- key: committees.decisions.read
  where_checked: api
  scope: tenant
- key: committees.decisions.manage
  where_checked: api
  scope: tenant
rules:
- id: BR-CAP-CMT-MTG-010-01
  proved_by: [ATS-CMT-MTG-010-01, ATS-CMT-MTG-010-21, TST-CMT-MTG-047, TST-CMT-MTG-205]
  statement: A decision goes from draft to open; from draft or open to tabled or withdrawn; from open to carried, failed or no quorum by closing; and from carried to superseded; nothing else.
  kind: lifecycle
  enforced_at:
  - service
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/unit/services/decision-rules.spec.ts#opens, tables or withdraws a draft, and nothing else
  origin: none
- id: BR-CAP-CMT-MTG-010-02
  proved_by: [ATS-CMT-MTG-010-02, TST-CMT-MTG-197, TST-CMT-MTG-205]
  statement: When a decision opens it takes the committee’s next number in its year, written year and sequence such as 2026-14, starting again at 1 each year; a draft has no number.
  kind: calculation
  enforced_at:
  - service
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/unit/services/decision-rules.spec.ts#gives a committee’s first decision number 1 and leaves the counter at 2
  origin: none
  examples:
    positive: The fourteenth decision opened in 2026 is 2026-14.
    negative: A withdrawn draft never takes a number.
- id: BR-CAP-CMT-MTG-010-03
  proved_by: [ATS-CMT-MTG-010-03, ATS-CMT-MTG-010-18, ATS-CMT-MTG-010-20, ATS-CMT-MTG-011-15, ATS-CMT-MTG-013-07, TST-CMT-MTG-054, TST-CMT-MTG-197]
  statement: When a decision opens, the rules in force, its threshold and its voters (the committee’s voting roster on the meeting’s date, or today for an e-mail vote, ex officio occupants included) are frozen with it, and at a meeting so is who is present.
  kind: invariant
  enforced_at:
  - service
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/decisions.integration.spec.ts#snapshots the nine voting appointments as its voters
  origin: none
- id: BR-CAP-CMT-MTG-010-04
  proved_by: [ATS-CMT-MTG-010-04, TST-CMT-MTG-069, TST-CMT-MTG-191, TST-CMT-MTG-205]
  statement: A voice vote, show of hands, roll call, unanimous consent or paper ballot is taken at a meeting that is neither a draft nor cancelled and has no closing time; an e-mail vote has no meeting and needs a closing time.
  kind: validation
  enforced_at:
  - api
  - service
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/unit/services/decision-rules.spec.ts#refuses an asynchronous decision taken at a meeting
  origin: none
- id: BR-CAP-CMT-MTG-010-05
  proved_by: [ATS-CMT-MTG-010-05, TST-CMT-MTG-071, TST-CMT-MTG-195, TST-CMT-MTG-205]
  statement: An e-mail vote opens only when the committee’s rules allow them and its closing time is at least the rules’ minimum open hours away, 48 under Robert’s Rules.
  kind: validation
  enforced_at:
  - service
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#refuses an asynchronous decision the rules do not allow, 409 async_not_allowed
  origin: none
- id: BR-CAP-CMT-MTG-010-06
  proved_by: [ATS-CMT-MTG-004-13, ATS-CMT-MTG-010-06, ATS-CMT-MTG-010-16, TST-CMT-MTG-069]
  statement: 'A decision’s kind decides what it must carry: an appointment its proposed appointments, a removal the appointments it ends, a charter what it charters or dissolves, an approval the minutes it approves, and no other kind carries these.'
  kind: validation
  enforced_at:
  - api
  - service
  - database
  must_prove: true
  provenance: observed
  source: services-committees:modules/decisions/services/persistence/decisions.ts:requireConsequenceInputs
  origin: none
- id: BR-CAP-CMT-MTG-010-07
  proved_by: [ATS-CMT-MTG-010-06, TST-CMT-MTG-069]
  statement: A dissolved committee takes no new decision.
  kind: validation
  enforced_at:
  - service
  must_prove: true
  provenance: observed
  source: services-committees:modules/decisions/services/persistence/decisions.ts:insertDraft
  origin: none
- id: BR-CAP-CMT-MTG-010-08
  proved_by: [ATS-CMT-MTG-010-07, ATS-CMT-MTG-010-19, ATS-CMT-MTG-015-10, TST-CMT-MTG-067, TST-CMT-MTG-189, TST-CMT-MTG-197]
  statement: A roll call or recorded e-mail vote takes one vote per eligible, unrecused appointment while the decision is open, and a vote never changes.
  kind: validation
  enforced_at:
  - service
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/decisions.integration.spec.ts#refuses a second vote by the same appointment, 409 already_voted
  origin: none
- id: BR-CAP-CMT-MTG-010-09
  proved_by: [ATS-CMT-MTG-010-08, TST-CMT-MTG-062, TST-CMT-MTG-192, TST-CMT-MTG-195]
  statement: A vote by proxy needs the rules to allow proxies and the meeting to have a proxy participant for that appointment, and a named proxy appointment must be a current appointment of the committee.
  kind: validation
  enforced_at:
  - service
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#refuses a vote by proxy when the rules forbid proxies, 409 proxies_forbidden
  origin: none
- id: BR-CAP-CMT-MTG-010-10
  proved_by: [ATS-CMT-MTG-010-09, TST-CMT-MTG-051, TST-CMT-MTG-070, TST-CMT-MTG-197]
  statement: The other in-room methods record a tally of counts, objections or the chair’s declaration at the decision’s version, and such a decision cannot close without one.
  kind: validation
  enforced_at:
  - api
  - service
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/decisions.integration.spec.ts#refuses to close a voice vote with no tally recorded, 409 tally_required
  origin: none
- id: BR-CAP-CMT-MTG-010-11
  proved_by: [ATS-CMT-MTG-010-10, ATS-CMT-MTG-010-17, ATS-CMT-MTG-012-13, TST-CMT-MTG-082, TST-CMT-MTG-195, TST-CMT-MTG-197]
  statement: Once open, the motion cannot change; once closed, nothing changes but a carried decision becoming superseded; and no decision, vote or recusal is ever deleted.
  kind: invariant
  enforced_at:
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/decisions.integration.spec.ts#refuses a change of an open decision’s text
  origin: none
- id: BR-CAP-CMT-MTG-010-12
  proved_by: [ATS-CMT-MTG-010-11, TST-CMT-MTG-063, TST-CMT-MTG-195]
  statement: Every hour each open recorded e-mail vote past its closing time is closed as a close by hand would be, and voters who have not voted are reminded once within 24 hours of the close.
  kind: lifecycle
  enforced_at:
  - job
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#closes the decision past its closing time, carried 2 to 0
  origin: none
- id: BR-CAP-CMT-MTG-010-13
  proved_by: [ATS-CMT-MTG-010-12, TST-CMT-MTG-074, TST-CMT-MTG-196, TST-CMT-MTG-197, TST-CMT-MTG-204]
  statement: Every voter is told once when a decision opens and once when it closes; tabling or withdrawing tells nobody.
  kind: policy
  enforced_at:
  - service
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/decisions.integration.spec.ts#tells each of the nine voters it opened
  origin: none
- id: BR-CAP-CMT-MTG-010-14
  proved_by: [ATS-CMT-MTG-010-13, TST-CMT-MTG-077, TST-CMT-MTG-078, TST-CMT-MTG-197, TST-CMT-MTG-198]
  statement: A secret ballot opens its election in Surveys & Voting and is refused while no ballot service exists; it cannot be closed by hand and closes once from the certified result, a redelivery being ignored.
  kind: lifecycle
  enforced_at:
  - service
  - job
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/decisions.integration.spec.ts#refuses to close a secret vote by hand, 409 awaiting_certification
  origin: none
- id: BR-CAP-CMT-MTG-010-15
  proved_by: [ATS-CMT-MTG-010-14, TST-CMT-MTG-198]
  statement: Staff applying a certified result by hand must name the election the decision opened.
  kind: validation
  enforced_at:
  - service
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/disclosures.integration.spec.ts#refuses staff applying another election to it
  origin: none
scenarios:
- id: SC-CAP-CMT-MTG-010-01
  given: A roll-call motion at the October board meeting
  when: Seven members vote six to one and the chair closes it
  then: It is carried as 2026-01 with its arithmetic
  provenance: test
  source: services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#carries the roll call 6 to 1, with its arithmetic
edge_cases:
- id: SC-CAP-CMT-MTG-010-02
  given: A newly formed committee with nobody seated
  when: A decision opens
  then: It has no voters and can never carry
  provenance: test
  source: react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0364.spec.ts#CMT-ACC-0364
constraints: []
depends_on:
- CAP-CMT-MTG-011
related:
- CAP-CMT-MTG-012
- CAP-CMT-MTG-013
- CAP-CMT-MTG-015
journeys:
- JNY-CMT-MTG-003
- JNY-CMT-MTG-004
open_questions:
- OQ-CMT-MTG-008
evidence:
- 'services-committees at 36129c24: decisions routes and schemas, decisions persistence, decision rules, ballot port, certification handlers, decisions jobs and notifications, decisions, voters, votes and counters tables, CMTE-M4 record'
- 'react-console at baf6dae3: acceptance inventory CAP-CMT-DEC-001 to 014, 025 to 027 and the decisions journeys cited'
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
exercised_by: [FAS-CMT-MTG-03-01, FAS-CMT-MTG-03-02, FAS-CMT-MTG-03-03, FAS-CMT-MTG-03-04, FAS-CMT-MTG-03-05, FAS-CMT-MTG-04-05]
suites: [TST-CMT-MTG-047, TST-CMT-MTG-051, TST-CMT-MTG-054, TST-CMT-MTG-062, TST-CMT-MTG-063, TST-CMT-MTG-067, TST-CMT-MTG-069, TST-CMT-MTG-070, TST-CMT-MTG-071, TST-CMT-MTG-074, TST-CMT-MTG-077, TST-CMT-MTG-078, TST-CMT-MTG-082, TST-CMT-MTG-189, TST-CMT-MTG-191, TST-CMT-MTG-192, TST-CMT-MTG-195, TST-CMT-MTG-196, TST-CMT-MTG-197, TST-CMT-MTG-198, TST-CMT-MTG-204, TST-CMT-MTG-205]
---

# Put a motion to a committee and record how it was decided

## Purpose

A committee records each motion, in a meeting or by e-mail, with who could vote, how they voted and the result.

## How It Works

Staff draft a decision of a committee: its title and text, its kind (motion, resolution, consent item, approval, appointment, removal, charter or other), the voting method, the meeting and agenda item it is taken under, who moved and seconded it, whether it is confidential, and what it does if it carries. In-room methods (voice, show of hands, roll call, unanimous consent and paper ballot) belong to a meeting; e-mail votes have no meeting and a closing time. When the decision opens it takes the committee’s next number for the year, and the rules, threshold, voters and (at a meeting) who is present are frozen with it, so later changes to the board never rewrite who could vote. A roll call and a recorded e-mail vote take one vote per voter, never changed; the other in-room methods take a tally. Closing asks the committee’s rules for the result and records the arithmetic. A draft or open decision can be tabled or withdrawn instead. E-mail votes close themselves on the hour after their closing time, with a reminder to those who have not voted the day before. Secret ballots run in Surveys & Voting and close from its certified result. Voters are told when a decision opens and closes. Nothing about a closed decision ever changes or is deleted.

## Relationships

- Relates to `CAP-CMT-MTG-011` because the result is the committee’s rules applied to what was frozen and recorded.
- Relates to `CAP-CMT-MTG-012` because a carried decision does what it proposed.
- Relates to `CAP-CMT-MTG-015` because recused voters cannot vote.
