Skip to content

CAP-CMT-MTG-016Advertise a committee opening and see who is interested

Markdown

CAP-CMT-MTG-016

Advertise a committee opening and see who is interested

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationInconsistent

KindCapabilityProduct areaCommitteesModuleMeetings, Decisions and RecruitmentRevision1

Read atservices-committees 36129c24react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Vacancies advertised to the right audienceInterest recorded in one placeOpenings that close themselves when filled
Surfaces
apiportaljob
Preconditions
The committee exists and is not dissolved.
Intent sources
services-committees:docs/milestones/CMTE-M5-openings-and-nominations.md#Objectiveservices-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#D1services-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#D5

Controls

31 controls apply, from the corpus control catalogue.

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-DAT-004 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-AVL-004 TC-AVL-005 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

Permissions

KeyChecked atScope
committees.openings.readapitenant
committees.openings.manageapitenant
committees.rosters.readapitenant
committees.portal.participateapirecord

Business Rules

13 rules, 12 to be proved before approval. A rule's product intent is derived from its origin: 0 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
An opening is made for a live committee, for one of its seats, a position or any seat, offering 1 to 100 places with an optional window whose end is not before its start; a seat’s position becomes the opening’s.
no proof recorded yet
validationapi, service, databasetest
02must prove
Proposed
An opening goes from draft to open by publishing, from open to closed by staff, from open to filled when its places are taken, and from draft or open to cancelled; it changes only while draft or open, and closed, filled and cancelled are final.
no proof recorded yet
lifecycleservicetest
services-committees:modules/recruitment/tests/unit/services/opening-lifecycle.spec.ts#answers the whole grid of statuses and actions as the table says
03must prove
Proposed
Every change of an opening is made at the version read.
no proof recorded yet
policyapi, servicetest
04must prove
Proposed
Publishing an opening tells the committee’s chair and staff liaison once each and records that it was published.
no proof recorded yet
policyservicetest
services-committees:modules/recruitment/tests/integration/services/openings.integration.spec.ts#tells the committee’s chair (its President) and its staff liaison, once each
05must prove
Proposed
An open opening counts each seat-holder appointment that starts on what it offers once, and becomes filled when its places are taken; a pending offer, another seat, a staff liaison or a repeated report fills nothing.
no proof recorded yet
calculationservice, jobtest
services-committees:modules/recruitment/tests/unit/services/fill-rule.spec.ts#counts the appointment and makes a one-place opening full
06must prove
Proposed
Outside the console an opening is shown only while it is open and before its application deadline, as the committee’s directory listing allows: to anyone when public, to portal users when authenticated, and to nobody when none.
no proof recorded yet
permissionservicetest
services-committees:modules/recruitment/tests/e2e/openings.e2e.spec.ts#shows anyone, through the public route, the public board’s opening alone
07must prove
Proposed
A portal member says they are interested in an opening the portal shows them once, and saying it again replaces the note.
no proof recorded yet
invariantservice, databasetest
services-committees:modules/recruitment/tests/e2e/openings.e2e.spec.ts#keeps one interest when it is said again, with the new note
08must prove
Proposed
Today an open opening whose deadline has passed stays open, fillable and in the forecast, and an opening fills before its window opens.
no proof recorded yet
policyservicetest
09must prove
Proposed
Dissolving a committee cancels its draft and open openings and takes them off the website and the portal.
origin: CMTE-M1 D5 (Andrew 2026-10-19 17:53 ET, services-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#Decisions)
no proof recorded yet
lifecycleservicetest
10must prove
Proposed
An edit saves what it carries and keeps what it does not: a text-only edit keeps the seat, places and window, and a field sent empty is cleared.
origin: CMTE-M1 D1 (Andrew 2026-10-19 17:45 ET, services-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#Decisions)
no proof recorded yet
policyservicetest
services-committees:modules/recruitment/tests/integration/services/edits.integration.spec.ts#keeps the seat, position, places, window and link the text-only edit did not carry
11must prove
Proposed
Openings and interests of one association are invisible to another.
no proof recorded yet
permissiondatabasetest
12must prove
Proposed
Opening permissions are checked across the whole association; a grant limited to one organizational unit does not reach them.
origin: CMTE-M1 D11 (Andrew 2026-10-19 18:05 ET, services-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#Decisions)
no proof recorded yet
permissionapitest
13
Proposed
The links to a Volunteers opportunity and a Submissions process are only stored; nothing calls either service yet.
policyserviceobserved

Scenarios

IdGivenWhenThenProvenance
01A two-place board opening published on the websiteA member says they are interested and two directors are appointedThe opening reads filled and leaves the websitetest

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.