---
id: WF-CMT-MTG-016
title: Manage Nominations and Their Slate Decisions
trigger: >-
  Staff or members nominate; staff or review decisions slate, decline or
  withdraw candidates.
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-018
moves:
  - STATE-CMT-MTG-009
  - STATE-CMT-MTG-006
crosses:
  - SVC-CMT-MTG-recruitment
  - SVC-CMT-MTG-decisions
  - SVC-PFM-NOT-communications
idempotency: >-
  Lifecycle checks refuse repeated final moves. A nomination-specific
  communication key distinguishes its consent request.
concurrency: >-
  Nomination changes and associated pending decision changes share a
  transaction. A later decision close re-reads which nominations remain slated.
hops:
  - 'n': 1
    actor_or_service: Recruitment API
    action: >-
      Create a nomination for an eligible live committee; ask another contact
      nominee for consent on the portal path.
    anchor: >-
      services-committees:modules/recruitment/services/nominations/nominations.ts:portalNominate
    seam: sync
    on_failure: >-
      Reject invalid nominations; skipped consent preparation is logged and
      lost.
    left_inconsistent: The nominee may never receive the consent request.
    observer: Warning entries in the function log.
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/nominations/nominations.ts:portalNominate
  - 'n': 2
    actor_or_service: Recruitment API
    action: >-
      Slate the record and, when required or requested, create a linked
      appointment decision as draft or open.
    anchor: >-
      services-committees:modules/recruitment/services/nominations/nominations.ts:slateWithin
    seam: sync
    on_failure: Reject a missing contact or missing meeting for a meeting voting method.
    left_inconsistent: No partial slate or decision.
    observer: The response or rejected owner acknowledgement.
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/nominations/nominations.ts:slateWithin
  - 'n': 3
    actor_or_service: Recruitment API
    action: >-
      Decline the candidate and withdraw a sole-candidate pending decision,
      remove them from a multi-candidate draft, or exclude them at an open
      decision’s close.
    anchor: >-
      services-committees:modules/recruitment/services/rules/slate-after-decline.ts:slateAfterDecline
    seam: sync
    on_failure: Roll back the decline and related decision edit.
    left_inconsistent: The previous state remains.
    observer: The operation response.
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/rules/slate-after-decline.ts:slateAfterDecline
  - 'n': 4
    actor_or_service: Recruitment API
    action: Withdraw the candidate and any draft or open slate decision.
    anchor: >-
      services-committees:modules/recruitment/services/nominations/nominations.ts:withdrawWithin
    seam: sync
    on_failure: Roll back the combined move on failure.
    left_inconsistent: No partial withdrawal.
    observer: The operation response.
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/nominations/nominations.ts:withdrawWithin
  - 'n': 5
    actor_or_service: Decisions service
    action: >-
      When the slate carries, link appointments and elect nominations still
      slated for appointed contacts.
    anchor: >-
      services-committees:modules/decisions/services/persistence/slated-nominations.ts:electSlatedNominations
    seam: sync
    on_failure: Roll back as part of a failed close.
    left_inconsistent: No partially elected slate.
    observer: The resulting nomination state.
    provenance: observed
    source: >-
      services-committees:modules/decisions/services/persistence/slated-nominations.ts:electSlatedNominations
branches: []
waits: []
evidence:
  - >-
    services-committees at 36129c24:
    modules/recruitment/services/nominations/nominations.ts;
    services/rules/nomination-lifecycle.ts, slate-after-decline.ts;
    services/persistence/nominations.ts;
    modules/decisions/services/persistence/slated-nominations.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-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
---
# Manage Nominations and Their Slate Decisions

## What It Does

Staff or members nominate; staff or review decisions slate, decline or withdraw candidates. Slating does not always open a decision: the default decision request creates a draft. No production caller takes the pure review action, though reopening a declined nomination reaches under review.

## The Flow

```mermaid
flowchart TD
  H1["Create a nomination for an eligible live committee"]

  H2["Slate the record and, when required or requested, create a linked appointment decision as draft or open."]
  H3["Decline the candidate and withdraw a sole-candidate pending decision, remove them from a multi-candidate draft"]
  H4["Withdraw the candidate and any draft or open slate decision."]
  H5["When the slate carries, link appointments and elect nominations still slated for appointed contacts."]
  H1 --> H2
  H2 --> H3
  H3 --> H4
  H4 --> H5
```

Create a nomination for an eligible live committee; ask another contact nominee for consent on the portal path. Slate the record and, when required or requested, create a linked appointment decision as draft or open. Decline the candidate and withdraw a sole-candidate pending decision, remove them from a multi-candidate draft, or exclude them at an open decision’s close. Withdraw the candidate and any draft or open slate decision. When the slate carries, link appointments and elect nominations still slated for appointed contacts.

## When Something Fails

Reject invalid nominations; skipped consent preparation is logged and lost. The nominee may never receive the consent request. Reject a missing contact or missing meeting for a meeting voting method. No partial slate or decision. Roll back the decline and related decision edit. The previous state remains. Roll back the combined move on failure. No partial withdrawal. Roll back as part of a failed close. No partially elected slate.

## Open Design Questions

Slating does not always open a decision: the default decision request creates a draft. No production caller takes the pure review action, though reopening a declined nomination reaches under review.
