---
id: CAP-CMT-MTG-014
title: Collect conflict-of-interest disclosures from voting members each period
feature: FEAT-CMT-MTG-04
product_area: committees
module: meetings
revision: 1
status: draft
product_intent: proposed
implementation_evidence: partially-observed
supersedes:
- react-console acceptance inventory CAP-CMT-DEC-019, 020, 021, 022, 023
- react-console acceptance journeys CMT-ACC-0353, 0354, 0362
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
- services-committees:docs/milestones/CMTE-M6-disclosures-and-recusals.md#Objective
- services-committees:docs/milestones/CMTE-M7-governance-oversight.md#D1
purpose: Every voting member owes a conflict-of-interest disclosure for each period, which is collected and reviewed through Submissions.
outcomes:
- One disclosure owed per voting member per period
- Disclosed interests on record for recusal and reviewer checks
- Personal disclosures seen only by those allowed
concepts:
- CON-CMT-MTG-004
actors:
- ACT-CMT-002
- ACT-CMT-005
- ACT-CMT-011
- ACT-CMT-012
surfaces:
- api
- portal
- job
preconditions:
- The association’s disclosure period is annual or per term.
postconditions: []
permissions:
- key: committees.disclosures.read
  where_checked: api
  scope: tenant
- key: committees.disclosures.manage
  where_checked: api
  scope: tenant
- key: committees.portal.participate
  where_checked: api
  scope: record
rules:
- id: BR-CAP-CMT-MTG-014-01
  statement: Under the association’s disclosure period (none, annual or per term), each current voting appointment owes one disclosure per period, opened once by the daily run, and its holder is told once that it is due.
  kind: lifecycle
  enforced_at:
  - job
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/disclosures.integration.spec.ts#opens one obligation per voting appointment
  origin: none
- id: BR-CAP-CMT-MTG-014-02
  statement: An annual period is the calendar year; a per-term period is the appointment’s tenure, an open-ended one counted year by year.
  kind: calculation
  enforced_at:
  - job
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/unit/services/disclosure-period.spec.ts#is the calendar year of the day, due on 31 January
  origin: none
- id: BR-CAP-CMT-MTG-014-03
  statement: A disclosure is due thirty days after the later of the period’s first day and the appointment’s, and never after the period ends.
  kind: calculation
  enforced_at:
  - job
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/unit/services/disclosure-period.spec.ts#is due 30 days after an appointment seated during the year
  origin: none
- id: BR-CAP-CMT-MTG-014-04
  statement: 'Requesting a disclosure starts its form in Submissions once: a repeat answers it as it is, a disclosure already accepted or flagged is refused, and while Submissions cannot be reached the request is refused.'
  kind: lifecycle
  enforced_at:
  - service
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/disclosures.integration.spec.ts#refuses while the engine cannot be reached, saying so
  origin: none
- id: BR-CAP-CMT-MTG-014-05
  statement: A Submissions review accepts or flags the disclosure with the interests it records and who reviewed it when; a later review replaces it.
  kind: lifecycle
  enforced_at:
  - service
  - job
  must_prove: true
  provenance: test
  source: services-committees:modules/recruitment/tests/integration/services/submission-decisions.integration.spec.ts#accepts the disclosure with the summary its decision’s basis carried
  origin: none
- id: BR-CAP-CMT-MTG-014-06
  statement: The disclosure register is read under a sensitive permission, and a caller without it is refused.
  kind: permission
  enforced_at:
  - api
  must_prove: true
  provenance: test
  source: services-committees:modules/recruitment/tests/e2e/submissions.e2e.spec.ts#refuses the register to a caller without its sensitive key, 403
  origin: none
- id: BR-CAP-CMT-MTG-014-07
  statement: A member sees their own disclosures in the portal, newest period first, with whether each is due and by when.
  kind: policy
  enforced_at:
  - service
  must_prove: false
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/disclosures.integration.spec.ts#shows the member their disclosure due, and by when, in the portal
  origin: none
- id: BR-CAP-CMT-MTG-014-08
  statement: Disclosures of one association are invisible to another.
  kind: permission
  enforced_at:
  - database
  must_prove: true
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/disclosures.integration.spec.ts#lists none of it to tenant B
  origin: none
- id: BR-CAP-CMT-MTG-014-09
  statement: A disclosure still requested after its due date is a governance attention line, written but withheld from Home until the portal phase.
  kind: policy
  enforced_at:
  - service
  - job
  must_prove: false
  provenance: documented
  source: services-committees:aws/committees.attention.ts:ATTENTION_REGISTRATION
  origin: CMTE-M7 D1 (Andrew 2026-10-21, services-committees:docs/milestones/CMTE-M7-governance-oversight.md#Decisions)
- id: BR-CAP-CMT-MTG-014-10
  statement: Disclosed interests also inform the conflict check Submissions makes of its reviewers.
  kind: policy
  enforced_at:
  - database
  must_prove: false
  provenance: test
  source: services-committees:modules/decisions/tests/integration/services/disclosures.integration.spec.ts#answers a disclosed interest in the engine’s applicant organization
  origin: none
scenarios:
- id: SC-CAP-CMT-MTG-014-01
  given: An association turns on annual disclosures
  when: The daily run passes
  then: Each voting member owes one disclosure for the year and is told it is due
  provenance: test
  source: react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0353.spec.ts#CMT-ACC-0353
edge_cases: []
constraints: []
depends_on: []
related:
- CAP-CMT-MTG-015
- CAP-CMT-MTG-019
journeys:
- JNY-CMT-MTG-004
open_questions:
- OQ-CMT-MTG-002
- OQ-CMT-MTG-008
evidence:
- 'services-committees at 36129c24: disclosure routes, disclosures service and persistence, disclosure period rule, disclosure reader port, submissions consequences, attention definitions, conflict disclosures table, CMTE-M6 and CMTE-M7 records'
- 'react-console at baf6dae3: acceptance inventory CAP-CMT-DEC-019 to 023 and journeys CMT-ACC-0353, 0354, 0362'
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
---

# Collect conflict-of-interest disclosures from voting members each period

## Purpose

Every voting member owes a conflict-of-interest disclosure for each period, which is collected and reviewed through Submissions.

## How It Works

An association chooses how often its voting members disclose conflicts of interest: never, every calendar year, or once per term. Each day the product opens one disclosure for every current voting appointment that owes one for the period, due thirty days after the period or the appointment begins, and tells the member it is due. Staff start the disclosure form in Submissions for a member; the request is made once, and refused while Submissions cannot be reached. Submissions reviews what was disclosed and accepts or flags it, recording the interests named and who reviewed it; a later review replaces the earlier one. Accepted and flagged disclosures are then used to suggest recusals and to check Submissions reviewers for conflicts. What a member disclosed is personal, so the register is read only under a sensitive permission; members see their own disclosures in the portal. An overdue disclosure is an attention line, written but kept off Home until the portal phase. Collection through Submissions is wired only to a stand-in today, because the engine is not deployed for Committees.

## Relationships

- Relates to `CAP-CMT-MTG-015` because standing disclosures suggest recusals.
- Relates to `CAP-CMT-MTG-019` because Submissions delivers the review of a disclosure.
