---
id: WF-CMT-MTG-007
title: Draft and Circulate Minutes
trigger: >-
  The secretary closes the meeting and subsequently assembles, edits and
  circulates minutes.
product_area: committees
module: meetings
revision: 1
status: draft
design_intent: proposed
implementation_evidence: inconsistent
inference: []
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
implements:
  - CAP-CMT-MTG-001
  - CAP-CMT-MTG-007
moves:
  - STATE-CMT-MTG-001
  - STATE-CMT-MTG-004
crosses:
  - SVC-CMT-MTG-meetings
  - SVC-PFM-NOT-communications
  - SVC-PFM-ELG-attention
idempotency: >-
  Closing creates an initial draft only if none exists. Circulation keys include
  revision and body hash, suppressing another notice for identical text.
concurrency: >-
  Meeting locks protect the record boundary; minutes operations compare their
  own version before changing an existing draft.
hops:
  - 'n': 1
    actor_or_service: Meetings API
    action: >-
      Close a scheduled or in-progress meeting as held, finalize its agenda,
      create missing draft minutes and publish the close event.
    anchor: >-
      services-committees:modules/meetings/services/persistence/meetings.ts:closeMeeting
    seam: sync
    on_failure: Reject an invalid close without committing it.
    left_inconsistent: No partial close.
    observer: The operation response.
    provenance: observed
    source: >-
      services-committees:modules/meetings/services/persistence/meetings.ts:closeMeeting
  - 'n': 2
    actor_or_service: Meetings API
    action: >-
      Build Markdown from attendance and agenda-ordered notes, omitting
      executive-session note text, then save through assets.
    anchor: >-
      services-committees:modules/meetings/services/minutes/minutes.ts:assembleMeetingMinutes
    seam: sync
    on_failure: Leave the draft text unchanged on failure.
    left_inconsistent: A prepared file can remain unattached.
    observer: The operation response.
    provenance: observed
    source: >-
      services-committees:modules/meetings/services/minutes/minutes.ts:assembleMeetingMinutes
  - 'n': 3
    actor_or_service: Meetings API
    action: Save the secretary’s edited draft and recalculate its body fingerprint.
    anchor: >-
      services-committees:modules/meetings/services/minutes/minutes.ts:saveMinutes
    seam: sync
    on_failure: Reject stale or non-draft minutes.
    left_inconsistent: Prepared content may await cleanup.
    observer: The operation response.
    provenance: observed
    source: >-
      services-committees:modules/meetings/services/minutes/minutes.ts:saveMinutes
  - 'n': 4
    actor_or_service: Meetings API
    action: >-
      Circulate the body, timestamp it, record its event and prepare participant
      notices together.
    anchor: >-
      services-committees:modules/meetings/services/minutes/minutes.ts:circulateMinutes
    seam: sync
    on_failure: Reject circulation or release skipped notice keys.
    left_inconsistent: Circulated minutes can exist without every participant being notified.
    observer: Warning entries in the function log.
    provenance: observed
    source: >-
      services-committees:modules/meetings/services/minutes/minutes.ts:circulateMinutes
  - 'n': 5
    actor_or_service: Meetings API
    action: >-
      Reevaluate minutes attention during writes; the definition remains
      withheld.
    anchor: >-
      services-committees:modules/meetings/services/attention/minutes-awaiting-approval.ts:refreshMinutesAttention
    seam: sync
    on_failure: Abort the write on a propagated attention error.
    left_inconsistent: No committed partial write.
    observer: Platform attention after registration.
    provenance: observed
    source: >-
      services-committees:modules/meetings/services/attention/minutes-awaiting-approval.ts:refreshMinutesAttention
branches: []
waits: []
evidence:
  - >-
    services-committees at 36129c24:
    modules/meetings/services/persistence/meetings.ts:closeMeeting;
    services/minutes/minutes.ts, minutes-rule.ts;
    services/attention/minutes-awaiting-approval.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-SEC-001
  - TC-SEC-004
  - TC-CRY-004
  - TC-DAT-001
  - TC-DAT-002
  - TC-DAT-003
  - TC-DAT-004
  - 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
---
# Draft and Circulate Minutes

## What It Does

The secretary closes the meeting and subsequently assembles, edits and circulates minutes. Each editor action is its own step, rather than an autonomous process that closes and writes minutes at once. Circulation requires a held meeting and a body. The approval attention definition is present but cannot publish while withheld.

## The Flow

```mermaid
flowchart TD
  H1["Close a scheduled or in-progress meeting as held, finalize its agenda, create missing draft minutes and publis"]

  H2["Build Markdown from attendance and agenda-ordered notes, omitting executive-session note text, then save throu"]
  H3["Save the secretary’s edited draft and recalculate its body fingerprint."]
  H4["Circulate the body, timestamp it, record its event and prepare participant notices together."]
  H5["Reevaluate minutes attention during writes"]
  H1 --> H2
  H2 --> H3
  H3 --> H4
  H4 --> H5
```

Close a scheduled or in-progress meeting as held, finalize its agenda, create missing draft minutes and publish the close event. Build Markdown from attendance and agenda-ordered notes, omitting executive-session note text, then save through assets. Save the secretary’s edited draft and recalculate its body fingerprint. Circulate the body, timestamp it, record its event and prepare participant notices together. Reevaluate minutes attention during writes; the definition remains withheld.

## When Something Fails

Reject an invalid close without committing it. No partial close. Leave the draft text unchanged on failure. A prepared file can remain unattached. Reject stale or non-draft minutes. Prepared content may await cleanup. Reject circulation or release skipped notice keys. Circulated minutes can exist without every participant being notified. Abort the write on a propagated attention error. No committed partial write.

## Open Design Questions

Each editor action is its own step, rather than an autonomous process that closes and writes minutes at once. Circulation requires a held meeting and a body. The approval attention definition is present but cannot publish while withheld.
