---
title: 'Meetings, Decisions and Recruitment: Planning Examination and Continuation'
examined_at: '2026-10-23'
examiner: codex
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
branch: agent/committees-meetings-plan-exam-2
examination_status: incomplete
verification_changes:
  - id: ATS-CMT-MTG-001-01
    field: bound_to
    before:
      - >-
        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
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0212.spec.ts#CMT-ACC-0212
    after:
      - >-
        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
  - id: ATS-CMT-MTG-001-07
    field: bound_to
    before:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0213.spec.ts#CMT-ACC-0213
    after: []
  - id: ATS-CMT-MTG-001-07
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-001-07
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0213.spec.ts#CMT-ACC-0213
    after: 'services-committees:modules/meetings/services/persistence/meetings.ts:cancelMeetingIn'
  - id: ATS-CMT-MTG-001-08
    field: bound_to
    before:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0252.spec.ts#CMT-ACC-0252
    after: []
  - id: ATS-CMT-MTG-001-08
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-001-08
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0252.spec.ts#CMT-ACC-0252
    after: 'services-committees:modules/meetings/services/persistence/committee-dissolutions.ts'
  - id: ATS-CMT-MTG-001-11
    field: bound_to
    before:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0251.spec.ts#CMT-ACC-0251
    after: []
  - id: ATS-CMT-MTG-001-11
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-001-11
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0251.spec.ts#CMT-ACC-0251
    after: 'services-committees:modules/meetings/services/data-operations/meetings-data-operations.ts'
  - id: ATS-CMT-MTG-001-12
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses attendance after
        the close with 409, meeting_closed
    after:
      - >-
        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
  - id: ATS-CMT-MTG-003-12
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#records
        a joined event on the participant once, however often it is delivered
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0255.spec.ts#CMT-ACC-0255
    after:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#records
        a joined event on the participant once, however often it is delivered
  - id: ATS-CMT-MTG-005-04
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#shows Dana, a
        participant, the meeting with its five items and the published material
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0232.spec.ts#CMT-ACC-0232
    after: []
  - id: ATS-CMT-MTG-005-04
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-005-04
    field: source
    before: >-
      services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#shows Dana, a participant,
      the meeting with its five items and the published material
    after: FND-CMT-MTG-035
  - id: ATS-CMT-MTG-006-07
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#stores
        only the tokens’ hashes, the first revoked by the rotation
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#answers
        nobody for the rotated token
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0234.spec.ts#CMT-ACC-0234
    after:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#stores
        only the tokens’ hashes, the first revoked by the rotation
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#answers
        nobody for the rotated token
  - id: ATS-CMT-MTG-020-01
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#lets
        a current participant of the committee read a participants-only meeting
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#lets
        a participant row of the meeting read it, a guest with no seat
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#refuses
        a portal user who neither sits nor participates
      - >-
        services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#refuses Pat, who neither
        sits nor participates, a participants-only meeting with 404
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0232.spec.ts#CMT-ACC-0232
    after:
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#lets
        a current participant of the committee read a participants-only meeting
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#lets
        a participant row of the meeting read it, a guest with no seat
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#refuses
        a portal user who neither sits nor participates
      - >-
        services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#refuses Pat, who neither
        sits nor participates, a participants-only meeting with 404
  - id: ATS-CMT-MTG-020-02
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#shows the
        public page exactly the allow-listed fields
      - >-
        services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#never puts
        the notes, the join link or the passcode anywhere in the public page
      - >-
        services-committees:modules/meetings/tests/e2e/public-meeting.e2e.spec.ts#never returns
        notes or virtual on the public page
      - >-
        services-committees:modules/meetings/tests/e2e/public-meeting.e2e.spec.ts#carries no staff
        note, join link or passcode anywhere in the public page
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0235.spec.ts#CMT-ACC-0235
    after: []
  - id: ATS-CMT-MTG-020-02
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-020-02
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#shows the
      public page exactly the allow-listed fields
    after: FND-CMT-MTG-035
  - id: ATS-CMT-MTG-020-03
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#shows a
        member who is not on the meeting neither the notes nor the virtual block
      - >-
        services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#shows a
        participant the virtual block but not the notes
      - >-
        services-committees:modules/meetings/tests/e2e/public-meeting.e2e.spec.ts#shows a member who
        is not on the meeting neither its notes nor its join link
      - >-
        services-committees:modules/meetings/tests/e2e/public-meeting.e2e.spec.ts#shows a
        participant the join link but not the staff notes
    after: []
  - id: ATS-CMT-MTG-020-03
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-020-03
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#shows a member
      who is not on the meeting neither the notes nor the virtual block
    after: FND-CMT-MTG-036
  - id: ATS-CMT-MTG-020-04
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#lists Dana’s three
        meetings in the portal
    after: []
  - id: ATS-CMT-MTG-020-04
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-020-04
    field: source
    before: >-
      services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#lists Dana’s three
      meetings in the portal
    after: FND-CMT-MTG-035
  - id: ATS-CMT-MTG-020-05
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#lets
        the chair and a liaison manage from the portal
      - >-
        services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#refuses
        a member managing from the portal
      - 'services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#records Dana’s RSVP'
      - >-
        services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#refuses Pat’s RSVP with
        404
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0233.spec.ts#CMT-ACC-0233
    after: []
  - id: ATS-CMT-MTG-020-05
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-020-05
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#lets
      the chair and a liaison manage from the portal
    after: FND-CMT-MTG-035
  - id: ATS-CMT-MTG-020-06
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana nothing before
        the minutes are circulated
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana, a
        participant, the circulated minutes with their body and hash
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses Pat, a stranger,
        the minutes with 404
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0241.spec.ts#CMT-ACC-0241
    after:
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana nothing before
        the minutes are circulated
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana, a
        participant, the circulated minutes with their body and hash
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses Pat, a stranger,
        the minutes with 404
  - id: ATS-CMT-MTG-020-07
    field: bound_to
    before:
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#shows the voter the
        rule in plain words and their own vote
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#refuses a stranger the
        decision with 404
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#shows the tally and
        its explanation after the close
      - >-
        react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0338.spec.ts#CMT-ACC-0338
    after:
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#shows the voter the
        rule in plain words and their own vote
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#refuses a stranger the
        decision with 404
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#shows the tally and
        its explanation after the close
  - id: ATS-CMT-MTG-020-09
    field: bound_to
    before:
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#records the voter’s
        own vote through the portal
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#refuses the voter a
        second vote with 409, already_voted
      - >-
        services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#refuses a stranger’s
        vote with 404
      - >-
        react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0338.spec.ts#CMT-ACC-0338
      - >-
        react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0339.spec.ts#CMT-ACC-0339
    after: []
  - id: ATS-CMT-MTG-020-09
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-020-09
    field: source
    before: >-
      services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#records the voter’s own
      vote through the portal
    after: FND-CMT-MTG-035
  - id: ATS-CMT-MTG-020-11
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana, a
        participant, the circulated minutes with their body and hash
    after:
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana, a
        participant, the circulated minutes with their body and hash
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses Pat, a stranger,
        the minutes with 404
  - id: BR-CAP-CMT-MTG-001-01
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-001-01
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#allows
      exactly the seven transitions of the lifecycle, of the twenty-five pairs
    after: 'services-committees:modules/meetings/services/persistence/meetings.ts:closeMeeting'
  - id: BR-CAP-CMT-MTG-001-02
    field: enforced_at
    before:
      - api
      - service
      - database
    after:
      - api
      - service
  - id: BR-CAP-CMT-MTG-001-06
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-001-06
    field: source
    before: >-
      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
    after: 'services-committees:modules/meetings/services/persistence/meetings.ts:closeMeeting'
  - id: BR-CAP-CMT-MTG-001-10
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-001-12
    field: enforced_at
    before:
      - service
      - job
    after:
      - service
  - id: BR-CAP-CMT-MTG-020-01
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-01
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#refuses
      a portal user who neither sits nor participates
    after: 'services-committees:modules/meetings/services/portal/portal-meetings.ts:portalMeeting'
  - id: BR-CAP-CMT-MTG-020-03
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-03
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/public-meeting.spec.ts#shows a member
      who is not on the meeting neither the notes nor the virtual block
    after: 'services-committees:modules/meetings/services/portal/portal-meetings.ts:pageFor'
  - id: BR-CAP-CMT-MTG-020-05
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-05
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#refuses
      a member managing from the portal
    after: 'services-committees:modules/meetings/services/portal/portal-meetings.ts:rsvp'
  - id: BR-CAP-CMT-MTG-020-06
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-06
    field: source
    before: >-
      services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#shows Dana, a participant,
      the circulated minutes with their body and hash
    after: 'services-committees:modules/meetings/services/portal/portal-minutes.ts:portalMinutes'
  - id: BR-CAP-CMT-MTG-020-07
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-07
    field: source
    before: >-
      services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#shows the voter the rule
      in plain words and their own vote
    after: 'services-committees:modules/decisions/services/portal/portal-decisions.ts:portalDecision'
  - id: BR-CAP-CMT-MTG-020-09
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-09
    field: source
    before: >-
      services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#refuses the voter a
      second vote with 409, already_voted
    after: 'services-committees:modules/decisions/services/persistence/decisions.ts:castVote'
  - id: BR-CAP-CMT-MTG-020-10
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-020-10
    field: source
    before: >-
      services-committees:modules/decisions/tests/e2e/decisions.e2e.spec.ts#lists the open decision
      for the voter, not yet voted
    after: 'services-committees:modules/decisions/services/portal/portal-decisions.ts:myDecisions'
  - id: BR-CAP-CMT-MTG-020-11
    field: enforced_at
    before:
      - api
    after: []
  - id: BR-CAP-CMT-MTG-020-12
    field: enforced_at
    before:
      - api
    after: []
  - id: SC-CAP-CMT-MTG-020-01
    field: provenance
    before: test
    after: observed
  - id: SC-CAP-CMT-MTG-020-01
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0232.spec.ts#CMT-ACC-0232
    after: >-
      services-committees:modules/meetings/services/participation/participation-rule.ts:mayReadConfidential
intent_anchor_changes:
  - artifact: CAP-CMT-MTG-001
    before: '4. Assumptions (A10, A11)'
    after: 4. Assumptions
  - artifact: CAP-CMT-MTG-005
    before: '4. Assumptions (A2, A12)'
    after: 4. Assumptions
  - artifact: CAP-CMT-MTG-009
    before: 4. Assumptions (A3)
    after: 4. Assumptions
  - artifact: CAP-CMT-MTG-010
    before: Decisions (none recorded)
    after: Decisions
new_ids:
  - FND-CMT-MTG-033
  - FND-CMT-MTG-034
  - FND-CMT-MTG-035
  - FND-CMT-MTG-036
  - BR-CAP-CMT-MTG-001-15
  - BR-CAP-CMT-MTG-001-16
  - ATS-CMT-MTG-001-13
  - ATS-CMT-MTG-001-14
  - BR-CAP-CMT-MTG-020-13
  - ATS-CMT-MTG-020-12
continuation_verification_changes:
  - id: BR-CAP-CMT-MTG-002-03
    field: enforced_at
    before:
      - service
      - database
      - job
    after:
      - service
      - database
  - id: BR-CAP-CMT-MTG-002-04
    field: enforced_at
    before:
      - job
    after:
      - service
  - id: BR-CAP-CMT-MTG-002-06
    field: enforced_at
    before:
      - service
      - job
    after: []
  - id: BR-CAP-CMT-MTG-002-07
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-002-08
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-002-10
    field: source
    before: 'services-committees:modules/meetings/db/meeting-series.table.ts'
    after: 'services-committees:modules/meetings/services/persistence/meeting-series.ts:materializeSeries'
  - id: ATS-CMT-MTG-002-08
    field: proves
    before:
      - BR-CAP-CMT-MTG-002-08
      - BR-CAP-CMT-MTG-002-09
    after:
      - BR-CAP-CMT-MTG-002-08
  - id: BR-CAP-CMT-MTG-003-02
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#keeps
      a contact with two seats once, by the chair seat
    after: >-
      services-committees:modules/meetings/services/participants/snapshot-rule.ts:snapshotParticipants
  - id: BR-CAP-CMT-MTG-003-02
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-003-03
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-003-07
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-003-09
    field: enforced_at
    before:
      - service
      - database
    after:
      - database
  - id: BR-CAP-CMT-MTG-003-11
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-003-14
    field: enforced_at
    before:
      - service
    after: []
  - id: ATS-CMT-MTG-003-08
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#records
        attendance for every participant in one write
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0224.spec.ts#CMT-ACC-0224
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0254.spec.ts#CMT-ACC-0254
    after:
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#records
        attendance for every participant in one write
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0224.spec.ts#CMT-ACC-0224
  - id: ATS-CMT-MTG-003-09
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        attendance after the close without reopen
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#records
        attendance after the close for a manager who reopens it
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#audits
        each reopened write with its actor, subjects, outcome and time
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        an update of the audit to the application role
      - >-
        services-committees:modules/meetings/tests/e2e/minutes.e2e.spec.ts#refuses attendance after
        the close with 409, meeting_closed
    after:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        attendance after the close without reopen
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#records
        attendance after the close for a manager who reopens it
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#audits
        each reopened write with its actor, subjects, outcome and time
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        an update of the audit to the application role
      - >-
        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#refuses
        a delete of the audit to the application role
  - id: BR-CAP-CMT-MTG-004-04
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/agenda-item-delete.spec.ts#names
      every holder found, in one sentence
    after: 'services-committees:modules/meetings/services/persistence/agenda-items.ts:deleteAgendaItem'
  - id: BR-CAP-CMT-MTG-004-04
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-004-08
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/snapshot-and-participation.spec.ts#shows
      confidential items to voting participants and liaisons
    after: >-
      services-committees:modules/meetings/services/participation/participation-rule.ts:mayReadConfidential
  - id: BR-CAP-CMT-MTG-004-08
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-004-09
    field: must_prove
    before: false
    after: true
  - id: BR-CAP-CMT-MTG-004-10
    field: must_prove
    before: false
    after: true
  - id: ATS-CMT-MTG-004-07
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#makes the
        agenda final at the call to order
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        an agenda change after the close
      - >-
        services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#freezes a
        final agenda
    after:
      - >-
        services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#makes the
        agenda final at the call to order
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        an agenda change after the close
      - >-
        services-committees:modules/meetings/tests/unit/services/meeting-lifecycle.spec.ts#freezes a
        final agenda
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0229.spec.ts#CMT-ACC-0229
  - id: BR-CAP-CMT-MTG-005-06
    field: source
    before: 'services-committees:modules/meetings/aws/api/meetings.routes.ts:deleteMeetingMaterial'
    after: 'services-committees:modules/meetings/services/persistence/meeting-materials.ts:deleteMaterial'
  - id: BR-CAP-CMT-MTG-005-06
    field: enforced_at
    before:
      - service
      - job
    after:
      - service
  - id: BR-CAP-CMT-MTG-005-07
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-005-08
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-005-09
    field: origin
    before: 'CMTE-M3 plan A2 (architecture D-07, approved 2026-10-18)'
    after: none
  - id: ATS-CMT-MTG-005-01
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0230.spec.ts#CMT-ACC-0230
    after: 'services-committees:modules/meetings/services/persistence/meeting-materials.ts:addMaterial'
  - id: ATS-CMT-MTG-005-01
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-005-01
    field: bound_to
    before:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0230.spec.ts#CMT-ACC-0230
    after: []
  - id: ATS-CMT-MTG-005-02
    field: proves
    before:
      - BR-CAP-CMT-MTG-005-02
      - BR-CAP-CMT-MTG-005-03
    after:
      - BR-CAP-CMT-MTG-005-02
  - id: ATS-CMT-MTG-005-05
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0230.spec.ts#CMT-ACC-0230
    after: FND-CMT-MTG-027
  - id: ATS-CMT-MTG-005-05
    field: provenance
    before: test
    after: proposed
  - id: ATS-CMT-MTG-005-05
    field: bound_to
    before:
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0230.spec.ts#CMT-ACC-0230
    after: []
  - id: BR-CAP-CMT-MTG-006-01
    field: source
    before: >-
      services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#calls
      the notifier once per participant and purpose: called, agenda, the 48-hour reminder
    after: >-
      services-committees:modules/meetings/services/persistence/meeting-notifications.ts:notifyParticipants;
      services-committees:modules/meetings/services/notifications/reminders.ts:sendDueReminders
  - id: BR-CAP-CMT-MTG-006-01
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-006-01
    field: enforced_at
    before:
      - service
      - job
    after:
      - service
  - id: BR-CAP-CMT-MTG-006-02
    field: enforced_at
    before:
      - service
      - database
      - job
    after:
      - service
      - database
  - id: BR-CAP-CMT-MTG-006-04
    field: source
    before: >-
      services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#leaves
      no ledger row while blocked, so the keys stay free for the later run
    after: >-
      services-committees:modules/meetings/services/persistence/meeting-notifications.ts:notifyParticipants
  - id: BR-CAP-CMT-MTG-006-04
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-006-05
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-006-08
    field: source
    before: >-
      services-committees:modules/meetings/tests/e2e/meetings.e2e.spec.ts#answers the personal feed
      with Dana’s three meetings for her token, with no session
    after: 'services-committees:modules/meetings/services/persistence/calendar-feeds.ts:personalFeed'
  - id: BR-CAP-CMT-MTG-006-08
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-006-09
    field: source
    before: >-
      services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#makes
      one create call after commit, keyed by the meeting
    after: >-
      services-committees:modules/meetings/services/persistence/meeting-room-requests.ts:drainRoomRequests
  - id: BR-CAP-CMT-MTG-006-09
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-006-09
    field: enforced_at
    before:
      - service
      - job
    after:
      - service
  - id: BR-CAP-CMT-MTG-006-10
    field: enforced_at
    before:
      - console
    after: []
  - id: BR-CAP-CMT-MTG-006-11
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-006-13
    field: enforced_at
    before:
      - job
    after:
      - service
  - id: SC-CAP-CMT-MTG-006-01
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0245.spec.ts#CMT-ACC-0245
    after: >-
      services-committees:modules/meetings/services/persistence/meeting-notifications.ts:notifyParticipants
  - id: SC-CAP-CMT-MTG-006-01
    field: provenance
    before: test
    after: observed
  - id: ATS-CMT-MTG-006-03
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/unit/ports/contact-addresses.spec.ts#is the
        primary address of a contact with one
      - >-
        services-committees:modules/meetings/tests/unit/ports/contact-addresses.spec.ts#is the next
        position’s when the contact holds no primary
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#skips
        Lee, who has no address in this tenant, with the reason it always gave, though another
        tenant’s Lee has one
    after:
      - >-
        services-committees:modules/meetings/tests/unit/ports/contact-addresses.spec.ts#is the
        primary address of a contact with one
      - >-
        services-committees:modules/meetings/tests/unit/ports/contact-addresses.spec.ts#is the next
        position’s when the contact holds no primary
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#skips
        Lee, who has no address in this tenant, with the reason it always gave, though another
        tenant’s Lee has one
      - >-
        services-committees:modules/meetings/tests/integration/services/meetings.integration.spec.ts#addresses
        the request to Dana’s primary address
  - id: ATS-CMT-MTG-006-11
    field: source
    before: OQ-CMT-MTG-007
    after: 'services-committees:modules/meetings/services/persistence/calendar-feeds.ts:icsMeetingOf'
  - id: BR-CAP-CMT-MTG-007-01
    field: source
    before: >-
      services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#records
      a note with who recorded it and when
    after: 'services-committees:modules/meetings/services/persistence/meeting-item-notes.ts:addItemNote'
  - id: BR-CAP-CMT-MTG-007-01
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-007-03
    field: source
    before: >-
      services-committees:modules/meetings/tests/unit/services/minutes-rule.spec.ts#writes the
      heading, the attendance, one section per item in the agenda’s order with its notes as
      recorded, and the decisions block
    after: 'services-committees:modules/meetings/services/minutes/minutes-rule.ts:assembleMinutes'
  - id: BR-CAP-CMT-MTG-007-03
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-007-05
    field: enforced_at
    before:
      - service
      - database
    after:
      - service
  - id: BR-CAP-CMT-MTG-007-07
    field: source
    before: 'services-committees:modules/meetings/services/minutes/minutes-body.ts:MINUTES_BODY_MAX_BYTES'
    after: >-
      services-committees:modules/meetings/aws/api/meetings.schemas.ts:minutesSaveSchema;
      services-committees:modules/meetings/services/minutes/minutes-body.ts:MINUTES_BODY_MAX_BYTES
  - id: ATS-CMT-MTG-007-09
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#reverts
        circulated minutes to a draft, clearing when they were circulated
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#recomputes
        the hash when the reverted draft is saved again
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#tells
        each participant again about the changed text
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0239.spec.ts#CMT-ACC-0239
    after:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#reverts
        circulated minutes to a draft, clearing when they were circulated
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#recomputes
        the hash when the reverted draft is saved again
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#tells
        each participant again about the changed text
  - id: BR-CAP-CMT-MTG-008-02
    field: source
    before: >-
      services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#approves
      them by a carried decision of kind approval, taken by voice at the next meeting
    after: >-
      services-committees:modules/decisions/services/minutes/minutes-approval.ts:approveMeetingMinutes
  - id: BR-CAP-CMT-MTG-008-02
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-008-04
    field: source
    before: >-
      services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#keeps
      the circulated text’s hash on approval
    after: 'services-committees:db/migrations/20261018142034_decisions.sql:minutes_approved_frozen_check'
  - id: BR-CAP-CMT-MTG-008-04
    field: provenance
    before: test
    after: observed
  - id: BR-CAP-CMT-MTG-008-05
    field: enforced_at
    before:
      - service
      - database
    after:
      - service
  - id: BR-CAP-CMT-MTG-008-08
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-008-09
    field: source
    before: 'services-committees:aws/committees.attention.ts:ATTENTION_REGISTRATION'
    after: >-
      services-committees:aws/committees.attention.ts:ATTENTION_REGISTRATION;
      services-committees:lib/attention.ts:committeesAttention
  - id: BR-CAP-CMT-MTG-008-09
    field: provenance
    before: documented
    after: observed
  - id: BR-CAP-CMT-MTG-008-09
    field: enforced_at
    before:
      - service
      - job
    after:
      - service
  - id: SC-CAP-CMT-MTG-008-01
    field: source
    before: >-
      react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0240.spec.ts#CMT-ACC-0240
    after: >-
      services-committees:modules/decisions/services/minutes/minutes-approval.ts:approveMeetingMinutes
  - id: SC-CAP-CMT-MTG-008-01
    field: provenance
    before: test
    after: observed
  - id: ATS-CMT-MTG-008-01
    field: bound_to
    before:
      - >-
        react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0342.spec.ts#CMT-ACC-0342
    after:
      - >-
        react-console:acceptance/committees/playwright/journeys/decisions/CMT-ACC-0342.spec.ts#CMT-ACC-0342
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0240.spec.ts#CMT-ACC-0240
  - id: ATS-CMT-MTG-008-09
    field: bound_to
    before:
      - >-
        services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#refuses
        any change of approved minutes
    after:
      - >-
        services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#refuses
        any change of approved minutes
      - >-
        services-committees:modules/decisions/tests/integration/services/consequences.integration.spec.ts#keeps
        the circulated text’s hash on approval
  - id: BR-CAP-CMT-MTG-009-02
    field: enforced_at
    before:
      - service
      - database
    after:
      - service
  - id: BR-CAP-CMT-MTG-009-04
    field: origin
    before: 'CMTE-M3 plan A3 (architecture D-13, approved 2026-10-18)'
    after: none
  - id: BR-CAP-CMT-MTG-009-04
    field: enforced_at
    before:
      - service
    after: []
  - id: BR-CAP-CMT-MTG-009-05
    field: source
    before: 'services-committees:modules/meetings/db/proposed-action-items.table.ts'
    after: >-
      services-committees:modules/meetings/services/persistence/proposed-action-items.ts:proposeActionItem;
      services-committees:modules/meetings/ports/task-creator.ts:taskCreator
  - id: ATS-CMT-MTG-009-02
    field: bound_to
    before:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        to accept an item already decided
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#dismisses
        the other with no link
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#lists
        both with their decisions
    after:
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#refuses
        to accept an item already decided
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#dismisses
        the other with no link
      - >-
        services-committees:modules/meetings/tests/integration/services/minutes.integration.spec.ts#lists
        both with their decisions
      - >-
        react-console:acceptance/committees/playwright/journeys/meetings/CMT-ACC-0243.spec.ts#CMT-ACC-0243
continuation_new_ids:
  - ATS-CMT-MTG-002-09
  - BR-CAP-CMT-MTG-003-15
  - BR-CAP-CMT-MTG-003-16
  - ATS-CMT-MTG-003-14
  - ATS-CMT-MTG-003-15
  - ATS-CMT-MTG-004-09
  - ATS-CMT-MTG-004-10
  - ATS-CMT-MTG-005-08
  - BR-CAP-CMT-MTG-007-11
  - ATS-CMT-MTG-007-10
  - BR-CAP-CMT-MTG-008-10
  - ATS-CMT-MTG-008-12
  - FND-CMT-MTG-037
  - FND-CMT-MTG-038
  - FND-CMT-MTG-039
continuation_unrewritten_artifacts:
  - >-
    planning/capabilities/CAP-CMT-MTG-010-put-a-motion-to-a-committee-and-record-how-it-was-decided.md
  - planning/capabilities/CAP-CMT-MTG-011-judge-quorum-and-outcome-by-the-committee-s-own-rules.md
  - planning/capabilities/CAP-CMT-MTG-012-let-a-carried-decision-act-on-the-committee-s-roster.md
  - >-
    planning/capabilities/CAP-CMT-MTG-013-find-any-decision-in-the-register-and-report-on-governance.md
  - planning/capabilities/CAP-CMT-MTG-014-collect-conflict-of-interest-disclosures-from-voting.md
  - planning/capabilities/CAP-CMT-MTG-015-stand-conflicted-voters-aside-from-a-decision.md
  - planning/capabilities/CAP-CMT-MTG-016-advertise-a-committee-opening-and-see-who-is-interested.md
  - planning/capabilities/CAP-CMT-MTG-017-forecast-who-leaves-and-draft-openings-for-their-seats.md
  - planning/capabilities/CAP-CMT-MTG-018-take-nominations-to-a-committee-and-carry-a-slate-to-a.md
  - planning/capabilities/CAP-CMT-MTG-019-apply-review-decisions-from-submissions-exactly-once.md
  - planning/acceptance/ATS-CMT-MTG-010-put-a-motion-to-a-committee-and-record-how-it-was-decided.md
  - planning/acceptance/ATS-CMT-MTG-011-judge-quorum-and-outcome-by-the-committee-s-own-rules.md
  - planning/acceptance/ATS-CMT-MTG-012-let-a-carried-decision-act-on-the-committee-s-roster.md
  - >-
    planning/acceptance/ATS-CMT-MTG-013-find-any-decision-in-the-register-and-report-on-governance.md
  - planning/acceptance/ATS-CMT-MTG-014-collect-conflict-of-interest-disclosures-from-voting.md
  - planning/acceptance/ATS-CMT-MTG-015-stand-conflicted-voters-aside-from-a-decision.md
  - planning/acceptance/ATS-CMT-MTG-016-advertise-a-committee-opening-and-see-who-is-interested.md
  - planning/acceptance/ATS-CMT-MTG-017-forecast-who-leaves-and-draft-openings-for-their-seats.md
  - planning/acceptance/ATS-CMT-MTG-018-take-nominations-to-a-committee-and-carry-a-slate-to-a.md
  - planning/acceptance/ATS-CMT-MTG-019-apply-review-decisions-from-submissions-exactly-once.md
  - planning/concepts/CON-CMT-MTG-002-minutes.md
  - planning/concepts/CON-CMT-MTG-003-decision.md
  - planning/concepts/CON-CMT-MTG-004-conflict-of-interest-disclosure.md
  - planning/concepts/CON-CMT-MTG-005-opening.md
  - planning/concepts/CON-CMT-MTG-006-nomination.md
  - planning/journeys/JNY-CMT-MTG-001-a-secretary-takes-a-board-meeting-from-the-calendar-to.md
  - planning/journeys/JNY-CMT-MTG-002-the-board-approves-last-meeting-s-minutes-and-later.md
  - planning/journeys/JNY-CMT-MTG-003-a-board-votes-on-motions-that-change-its-roster-and-later.md
  - planning/journeys/JNY-CMT-MTG-004-a-member-weighs-a-conflict-and-votes-on-an-e-mail-motion.md
  - planning/journeys/JNY-CMT-MTG-005-staff-fill-a-coming-vacancy-from-the-forecast-to-an-elected.md
  - MODULE.md
  - FINDINGS.md
---

# Meetings, Decisions and Recruitment: Planning Examination and Continuation

## Scope and Result

This report records an unfinished independent examination at the two pinned source commits. The first pass completed five feature texts, the Meeting concept, scheduling and portal participation capabilities with their acceptance sets, and seven shared actor rows. Pass 2 adds eight completed capability-and-acceptance pairs and final registry text; it does not certify the remaining planning layer.

The planning and examination briefs are both available in this checkout. The authoring contract, planning templates and approved CRM concepts supply the review standard. Source-location existence checks from the first pass are retained as preliminary work, not semantic proof of every statement or binding.

## Continuation (pass 2)

This pass examines and rewrites recurring schedules, participant capture and attendance, agenda preparation, packet materials, participant communications, minutes drafting, minutes approval and corrections, and follow-up proposals. Each capability and acceptance pair has its own commit. Every rule statement, illustration, scenario procedure, expected result and body section in those pairs has OpenAI text; descriptive evidence fields are also rewritten. The registry introduction is rewritten, and its shared actor allocation is corrected against the actor catalog.

Four rules and eight acceptance scenarios are added after identifier allocation. Two findings record previously unstated implementation boundaries, and a third records the unfinished examination. The minutes-approval question is rewritten to distinguish staff permission from chair verification and to address omitted tally evidence. The charter’s table labels follow the rewritten capability titles; its narrative remains draft text.

Room limits end this continuation before the decisions and recruitment pairs and the higher-level rewrites are finished. The exact remaining files are listed below; the findings file has three new OpenAI findings and one rewritten question, but its earlier narrative still requires examination and final text.

- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-010-put-a-motion-to-a-committee-and-record-how-it-was-decided.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-011-judge-quorum-and-outcome-by-the-committee-s-own-rules.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-012-let-a-carried-decision-act-on-the-committee-s-roster.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-013-find-any-decision-in-the-register-and-report-on-governance.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-014-collect-conflict-of-interest-disclosures-from-voting.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-015-stand-conflicted-voters-aside-from-a-decision.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-016-advertise-a-committee-opening-and-see-who-is-interested.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-017-forecast-who-leaves-and-draft-openings-for-their-seats.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-018-take-nominations-to-a-committee-and-carry-a-slate-to-a.md`
- `specs/committees/meetings/planning/capabilities/CAP-CMT-MTG-019-apply-review-decisions-from-submissions-exactly-once.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-010-put-a-motion-to-a-committee-and-record-how-it-was-decided.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-011-judge-quorum-and-outcome-by-the-committee-s-own-rules.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-012-let-a-carried-decision-act-on-the-committee-s-roster.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-013-find-any-decision-in-the-register-and-report-on-governance.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-014-collect-conflict-of-interest-disclosures-from-voting.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-015-stand-conflicted-voters-aside-from-a-decision.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-016-advertise-a-committee-opening-and-see-who-is-interested.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-017-forecast-who-leaves-and-draft-openings-for-their-seats.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-018-take-nominations-to-a-committee-and-carry-a-slate-to-a.md`
- `specs/committees/meetings/planning/acceptance/ATS-CMT-MTG-019-apply-review-decisions-from-submissions-exactly-once.md`
- `specs/committees/meetings/planning/concepts/CON-CMT-MTG-002-minutes.md`
- `specs/committees/meetings/planning/concepts/CON-CMT-MTG-003-decision.md`
- `specs/committees/meetings/planning/concepts/CON-CMT-MTG-004-conflict-of-interest-disclosure.md`
- `specs/committees/meetings/planning/concepts/CON-CMT-MTG-005-opening.md`
- `specs/committees/meetings/planning/concepts/CON-CMT-MTG-006-nomination.md`
- `specs/committees/meetings/planning/journeys/JNY-CMT-MTG-001-a-secretary-takes-a-board-meeting-from-the-calendar-to.md`
- `specs/committees/meetings/planning/journeys/JNY-CMT-MTG-002-the-board-approves-last-meeting-s-minutes-and-later.md`
- `specs/committees/meetings/planning/journeys/JNY-CMT-MTG-003-a-board-votes-on-motions-that-change-its-roster-and-later.md`
- `specs/committees/meetings/planning/journeys/JNY-CMT-MTG-004-a-member-weighs-a-conflict-and-votes-on-an-e-mail-motion.md`
- `specs/committees/meetings/planning/journeys/JNY-CMT-MTG-005-staff-fill-a-coming-vacancy-from-the-forecast-to-an-elected.md`
- `specs/committees/meetings/MODULE.md`
- `specs/committees/meetings/FINDINGS.md`

## Counts Examined

| Content | Current module total | Cumulative final-text progress |
|---|---:|---|
| Module charter | 1 | Labels updated; narrative and complete inventory outstanding |
| Features | 5 | 5 rewritten in pass 1 |
| Concepts | 6 | Meeting rewritten; 5 outstanding |
| Capabilities | 20 | 10 rewritten; 10 outstanding |
| Rules | 222 | 114 in rewritten capabilities; 108 outside those capabilities |
| Illustrations, including edge cases | 24 | 13 in rewritten capabilities; 11 outstanding |
| Journeys | 5 | All 5 outstanding |
| Journey steps / assertions | 42 / 15 | Full semantic examination and rewrite outstanding |
| Acceptance sets | 20 | 10 rewritten; 10 outstanding |
| Acceptance scenarios | 208 | 105 in rewritten sets; 103 outside them |
| Shared actor rows used by this module | 7 | Rewritten in pass 1 |
| Findings / questions | 39 / 8 | Pass 1 added 4 findings; pass 2 adds 3 findings and rewrites question 003; earlier text remains outstanding |

The illustration count includes both normal scenarios and edge cases, correcting the earlier report’s narrower total. These figures describe authored review progress; they do not count proposed scenarios as passing tests or establish that every inherited binding proves its entire scenario.

## Coverage Progress

The catalog denominators remain inherited from the draft. This pass traces further source behaviour through the rewritten pairs, but does not independently certify the complete operation, table or deployment inventory.

| Category | Examined basis | Remaining examination |
|---|---|---|
| Product operations; draft total 93 | Scheduling and portal sources from pass 1; series, participants, agenda, materials, calendar, minutes and action-item service operations from pass 2 | Decision, recusal, disclosure, opening, forecast and nomination operations; independent route recount and capability mapping |
| Tables and views; draft total 28 | Meeting and participant declarations; series, attendance audit, agenda, material, notification, token, room, note, minutes, proposal and task-link declarations inspected where relevant | Managed-assets and all query views need complete catalog checks; decision counters, decisions, voters, votes, recusals, disclosures, openings, interests, alternates, nominations and submission ledgers |
| Permissions; draft total 13 | Meeting read/manage and portal participation from pass 1; calendar and minutes management in pass 2 | Decision read/manage, disclosure read/manage, opening read/manage and nomination read/manage; complete declaration-and-route mapping |
| Service e2e files; draft total 6 | Meeting, minutes, public-meeting and decision assertions selected by earlier and current proofs | Openings and Submissions files; complete body examination for retained bindings |
| Acceptance journey specifications; draft total 130 | Selected meeting bodies examined for skipped actions, actual assertions and refusal cases | Complete recount of all three areas, all decisions and recruitment bindings, and the draft’s thirteen uncited journeys |
| Schedules; draft total 4 groups | Meeting job behaviour informs recurrence, reminders and room settlement | Full deployment examination of meeting daily/hourly and decision daily/hourly schedules |
| Queues and handlers; draft total 5 groups | Material cleanup and meeting event handling inspected where cited | Full infrastructure map for meeting events, cleanup, appointment intake, submission processing and certified elections |
| State machines; draft asserts none | No complete deployment inventory established | Verify the absence claim across scoped infrastructure |
| Hosted console pages; draft asserts none | No hosted workflow is asserted by the rewritten pairs | Complete scoped Committees page inventory and dissolution projection examination |
| Query datasets; draft total 9 | No completed independent dataset audit | Meetings, attendance, minutes, action items, decisions, votes, openings, nominations and disclosures |
| Attention definitions; draft total 3 | Minutes approval definition and registration guards inspected: withheld from publication, resolution and sweeps | Overdue disclosures and nominations to review; complete registration-and-enforcement mapping |

Capability and concept grain remains a module-wide examination item. The remaining reviewer must assess minutes, disclosures and nominations as broad concepts or facets and compare the combined portal capability with grouping by outcome. Retaining twenty capabilities does not establish complete coverage.

## Changes by Artifact

| Artifact pair | Source corrections and final text |
|---|---|
| Capability and acceptance 002 | Remove unsupported job enforcement and enforcement of future policies; distinguish repeated materialisation from later-window generation; narrow the daylight-saving illustration; add dissolved-committee refusal proof. |
| Capability and acceptance 003 | Describe roster tie handling accurately, separate database chronology from service checks, add version and reference-boundary rules, and extend proof for immutable identity and mismatched appointment references. |
| Capability and acceptance 004 | Include task-link deletion guards, correct optional duration and confidential chair access, and add duration and classification refusal scenarios. |
| Capability and acceptance 005 | Separate detachment from later retirement, remove enforcement of deferred policies and an unsupported approval origin, and leave partially demonstrated attachment and retirement outcomes proposed. |
| Capability and acceptance 006 | Distinguish explicit retry from automatic resend, current-roster calendar access from meeting rows, and retryable room failures from provider-unavailable settlement; expose calendar notes in the proposed proof expectation. |
| Capability and acceptance 007 | Restrict confidentiality guarantees to assembly, distinguish protected note APIs from immutable storage, clarify body limits and lifecycle, and add input-normalisation proof. |
| Capability and acceptance 008 | Describe the actual authorised approver and default tally, narrow database freezing to content, state correction preconditions, and replace the claim of unpublished attention writes with the actual withheld registration behaviour. |
| Capability and acceptance 009 | Separate proposal assignment metadata from task execution, remove an unsupported architecture approval origin, and demonstrate accepted and dismissed outcomes without claiming a CRM task exists. |
| Registry | Allocate new rules, acceptance scenarios and findings; advance only affected series; correct the shared actor range without changing any actor id. |
| Charter | Synchronise eight capability labels; retain the outstanding narrative and inventory for further review. |
| Findings and question 003 | Record participant-reference and approval-authority boundaries, rewrite the approval decision question, and record examination debt. |

The frontmatter retains the first pass’s change ledger and adds exact before-and-after values for every protected field changed in the eight pairs. Product intent, artifact status, pinned source hashes and supersedes values are preserved. Two rule origins become none because the inspected records do not establish the earlier claimed approval. Existing ids are never renumbered or reused.

## Disagreements Left Open

Findings 033 through 036 from the first pass still identify incomplete acceptance proof, qualified meeting finality, stale portal expectations and the wider video audience. The eight rewritten pairs correct related claims where inspected; their completion does not resolve unsupported portal outcomes or product-policy conflicts.

Finding 037 records manual participant references that do not verify the contact-to-appointment relationship. Finding 038 records direct approval without chair verification and tally-based approval with a default carried declaration. Finding 039 records the remaining examination, final-text and coverage work, including the exact artifact list above. Earlier findings and all material product questions remain open unless Andrew settles them; their inherited text is not reaffirmed by this continuation.

## Validation and Handoff

The required command `npm ci && npm run check` passes with zero errors, and `npm test` passes all four repository tests. These results validate the corpus tooling; no source-service integration suite, browser run or dev operation is claimed. Source inventories, skipped assertions and missing proof must still be examined individually before this module is marked planning examined.

The work is authored in a task worktree and transferred to the fleet branch by fast-forward. No push or deployment is performed. This report removes Partial from the title as requested while retaining an explicit incomplete examination status and the full remaining list.

## Verdict for Andrew

The rewritten portions follow the inspected pinned sources more closely, but this module is not yet a complete, independently sourced planning layer. Its weakest areas are unfinished decisions and recruitment text, incomplete acceptance proof and an unverified module-wide inventory. Before design begins, finish the listed rewrites and coverage checks, assess grain, and decide the recorded policy and approval-authority questions.
