01must proveProposed | 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 | validation | api, service, database | test |
02must proveProposed | 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 | lifecycle | service | test |
03must proveProposed | Every change of an opening is made at the version read. no proof recorded yet | policy | api, service | test |
04must proveProposed | Publishing an opening tells the committee’s chair and staff liaison once each and records that it was published. no proof recorded yet | policy | service | test |
05must proveProposed | 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 | calculation | service, job | test |
06must proveProposed | 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 | permission | service | test |
07must proveProposed | 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 | invariant | service, database | test |
08must proveProposed | 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 | policy | service | test |
09must proveProposed | 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 | lifecycle | service | test |
10must proveProposed | 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 | policy | service | test |
11must proveProposed | Openings and interests of one association are invisible to another. no proof recorded yet | permission | database | test |
12must proveProposed | 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 | permission | api | test |
13Proposed | The links to a Volunteers opportunity and a Submissions process are only stored; nothing calls either service yet. | policy | service | observed |