---
id: ATS-CMT-MTG-001
scope: CAP-CMT-MTG-001
product_area: committees
module: meetings
revision: 2
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-CMT-MTG-001-01
    title: Ended meeting states have no outgoing transition
    level: unit
    proves:
      - BR-CAP-CMT-MTG-001-01
    preconditions: The meeting lifecycle functions are available.
    steps: Evaluate all twenty-five pairs of meeting statuses.
    expected: >-
      The transition grid permits seven moves and rejects every move out of held
      or cancelled.
    negative: false
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#allows
        exactly the seven transitions of the lifecycle, of the twenty-five pairs
      - >-
        services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#lets
        nothing leave held or cancelled
    provenance: test
    source: >-
      services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#allows
      exactly the seven transitions of the lifecycle, of the twenty-five pairs
  - id: ATS-CMT-MTG-001-02
    title: Invalid times and zones leave no meeting
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-02
    preconditions: A live committee is available.
    steps: >-
      Submit coincident and reversed times and an unknown zone, then save a
      meeting spanning midnight in Los Angeles.
    expected: >-
      Invalid requests create no meeting; the valid overnight gathering is
      saved.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0211.spec.ts#CMT-ACC-0211
    provenance: test
    source: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0211.spec.ts#CMT-ACC-0211
  - id: ATS-CMT-MTG-001-03
    title: Dissolution prevents further scheduling
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-03
    preconditions: The committee has been dissolved on the current day.
    steps: Try to add a meeting and a recurring series.
    expected: Both creations are rejected for dissolution without adding records.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0252.spec.ts#CMT-ACC-0252
    provenance: test
    source: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0252.spec.ts#CMT-ACC-0252
  - id: ATS-CMT-MTG-001-04
    title: Completed meeting details remain fixed
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-04
    preconditions: A closed meeting has held status.
    steps: Attempt to replace the meeting title and schedule.
    expected: The edit fails and the previously saved details remain intact.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0212.spec.ts#CMT-ACC-0212
    provenance: test
    source: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0212.spec.ts#CMT-ACC-0212
  - id: ATS-CMT-MTG-001-05
    title: A second editor cannot overwrite a newer save
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-05
    preconditions: Two secretaries hold the same meeting version.
    steps: 'Save one editor’s change, then submit the other editor’s older version.'
    expected: >-
      The later submission is rejected as stale without replacing the first
      change.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#refuses
        a replace at a version the meeting no longer has
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0214.spec.ts#CMT-ACC-0214
    provenance: test
    source: >-
      services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#refuses
      a replace at a version the meeting no longer has
  - id: ATS-CMT-MTG-001-06
    title: Closing hands a held meeting to minutes preparation
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-06
    preconditions: A scheduled gathering has an agenda and no minutes.
    steps: Close the meeting and retrieve its minutes.
    expected: >-
      The meeting is held, the agenda is final and the first minutes revision is
      an empty draft.
    negative: false
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#creates
        the draft at the close with no body, and points the meeting at it
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#makes
        the agenda final at the close
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#closes
        the meeting with its agenda final and its minutes drafted
    provenance: test
    source: >-
      services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#creates
      the draft at the close with no body, and points the meeting at it
  - id: ATS-CMT-MTG-001-07
    title: Cancellation retains the reason and requests room cancellation
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-07
    preconditions: A scheduled meeting has a recorded video room.
    steps: Cancel the meeting because a quorum is not expected.
    expected: >-
      The reason appears in the cancelled meeting’s notes, room cancellation is
      queued and the calendar file carries cancellation.
    negative: false
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to: []
    provenance: proposed
    source: >-
      services-committees:modules/meetings/services/persistence/meetings.ts:cancelMeetingIn
  - id: ATS-CMT-MTG-001-08
    title: Dissolution preserves history while stopping future gatherings
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-08
    preconditions: >-
      The committee has an active series and meetings before, on and after its
      dissolution date in several statuses.
    steps: >-
      Dissolve the committee and inspect the series, meetings and notice
      records.
    expected: >-
      The active series ends and later draft and scheduled gatherings are
      silently cancelled; on-date, earlier, in-progress and held records retain
      their previous standing.
    negative: false
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to: []
    provenance: proposed
    source: >-
      services-committees:modules/meetings/services/persistence/committee-dissolutions.ts
  - id: ATS-CMT-MTG-001-09
    title: Continuation links cannot point back to the same meeting
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-09
    preconditions: A scheduled meeting and a later continuation exist.
    steps: >-
      Try a self-reference, then select the later meeting and finally clear the
      reference.
    expected: >-
      The self-reference is refused; selecting and clearing the later meeting
      both succeed.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0216.spec.ts#CMT-ACC-0216
    provenance: test
    source: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0216.spec.ts#CMT-ACC-0216
  - id: ATS-CMT-MTG-001-10
    title: Continuation restrictions reject other committees and earlier dates
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-10
    preconditions: Two committees each have meetings.
    steps: >-
      Choose another committee’s meeting as a continuation, then choose an
      earlier meeting of the same committee.
    expected: Both continuation requests are rejected.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to: []
    provenance: proposed
    source: 'services-committees:docs/milestones/plans/CMTE-M3-plan.md#D12'
  - id: ATS-CMT-MTG-001-11
    title: Bulk definitions retain ordinary creation behaviour
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-12
    preconditions: An import carries a historical meeting and a recurring series.
    steps: Apply the import through the declared data operations.
    expected: >-
      Ordinary persistence creates the series occurrences and snapshots the
      roster for every new meeting.
    negative: false
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to: []
    provenance: proposed
    source: >-
      services-committees:modules/meetings/services/data-operations/meetings-data-operations.ts
  - id: ATS-CMT-MTG-001-12
    title: The closed-meeting journey leaves preparation records fixed
    level: api
    proves:
      - AS-JNY-CMT-MTG-001-02
    preconditions: The secretary has completed the preparation steps of the meeting journey.
    steps: >-
      Close the gathering, inspect its agenda and attempt an ordinary attendance
      edit.
    expected: The agenda is final and ordinary attendance changes are rejected.
    negative: false
    data_needs: The secretary journey’s records in an isolated workspace
    bound_to:
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses
        attendance after the close with 409, meeting_closed
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#makes
        the agenda final at the close
    provenance: test
    source: >-
      services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses
      attendance after the close with 409, meeting_closed
  - id: ATS-CMT-MTG-001-13
    title: Unsupported request values create no meeting
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-15
    preconditions: A committee is available for scheduling.
    steps: >-
      Submit blank titles, invalid kinds, visibility or statuses, a start
      without an offset and an undeclared caller-supplied identity.
    expected: Every invalid request fails without saving a meeting.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0211.spec.ts#CMT-ACC-0211
    provenance: test
    source: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0211.spec.ts#CMT-ACC-0211
  - id: ATS-CMT-MTG-001-14
    title: A missing continuation cannot alter the meeting
    level: api
    proves:
      - BR-CAP-CMT-MTG-001-16
    preconditions: A meeting is scheduled with no continuation.
    steps: Set the continuation reference to a meeting that does not exist.
    expected: >-
      The request fails and leaves both the reference and meeting version
      unchanged.
    negative: true
    data_needs: >-
      A live committee and the necessary meeting fixtures in an isolated
      workspace
    bound_to:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0216.spec.ts#CMT-ACC-0216
    provenance: test
    source: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0216.spec.ts#CMT-ACC-0216
evidence:
  - >-
    services-committees at 36129c24: lifecycle matrix, stale-version integration
    assertion, close and agenda assertions, attendance refusal and scheduling
    persistence inspected
  - >-
    react-console at baf6dae3: invalid-input and continuation assertions
    inspected; bulk-load skipping, stale dissolution expectations and absent
    room-cancellation proof recorded as findings
---

# Schedule a Committee Meeting and Preserve Its Outcome: Acceptance Test Set

## Coverage

| Rule | Proved by |
|---|---|
| `BR-CAP-CMT-MTG-001-01` | `ATS-CMT-MTG-001-01` |
| `BR-CAP-CMT-MTG-001-02` | `ATS-CMT-MTG-001-02` |
| `BR-CAP-CMT-MTG-001-03` | `ATS-CMT-MTG-001-03` |
| `BR-CAP-CMT-MTG-001-04` | `ATS-CMT-MTG-001-04` |
| `BR-CAP-CMT-MTG-001-05` | `ATS-CMT-MTG-001-05` |
| `BR-CAP-CMT-MTG-001-06` | `ATS-CMT-MTG-001-06` |
| `BR-CAP-CMT-MTG-001-07` | `ATS-CMT-MTG-001-07` |
| `BR-CAP-CMT-MTG-001-08` | `ATS-CMT-MTG-001-08` |
| `BR-CAP-CMT-MTG-001-09` | `ATS-CMT-MTG-001-09` |
| `BR-CAP-CMT-MTG-001-10` | `ATS-CMT-MTG-001-10` |
| `BR-CAP-CMT-MTG-001-12` | `ATS-CMT-MTG-001-11` |

| `BR-CAP-CMT-MTG-001-15` | `ATS-CMT-MTG-001-13` |
| `BR-CAP-CMT-MTG-001-16` | `ATS-CMT-MTG-001-14` |
