Skip to content

ATS-CMT-CMT-009Record qualified committee service: Capability Test Specification

Markdown

ATS-CMT-CMT-009

Record qualified committee service: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaCommitteesModuleCommittee Structure, Service and Proposed AuthorityRevision7

Read atservices-committees 36129c24react-console baf6dae3

Coverage

  • Rule gap: FND-CMT-CMT-072
  • Transition gap: FND-CMT-CMT-072
  • Validation covered
  • Permission covered
  • Edge gap: FND-CMT-CMT-072
  • Failure covered
  • Boundary covered
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

12 scenarios proving CAP-CMT-CMT-009; 8 bound to an existing test.

01 CRM identity checksfailureapinegativetest
Proves
BR-CAP-CMT-CMT-009-01 BR-CAP-CMT-CMT-009-02 INV-DOM-CMT-CMT-003-01
Preconditions
CRM contains Pat while requested references are unknown; another database lacks CRM.
Steps
Submit unknown member, designator and organization references, then request service without CRM.
Expected
Each fails with reference or verification context and no appointment.
Data
CRM reference stand-ins.
Bound to
services-committees:modules/appointments/tests/integration/services/persistence/crm-and-reservations.integration.spec.ts#refuses the appointment, naming the person it could not check and why, rather than appointing unchecked (fails closed)
services-committees:modules/appointments/tests/integration/services/persistence/crm-and-reservations.integration.spec.ts#refuses a designating person CRM does not hold, naming designated_by_contact_id
Source
services-committees:modules/appointments/tests/integration/services/persistence/crm-and-reservations.integration.spec.ts#refuses a person CRM does not hold, naming contact_id and the person
02 Only people hold appointmentsvalidationapinegativetest
Proves
BR-CAP-CMT-CMT-009-03
Preconditions
A committee exists.
Steps
Submit an organization as its participant.
Expected
The service rejects the participant.
Data
An organization reference.
Bound to
Source
services-committees:modules/appointments/tests/integration/services/persistence/appointments.integration.spec.ts#refuses an organization as the member
03 Term-bound appointment datesboundaryapinegativetest
Proves
BR-CAP-CMT-CMT-009-04
Preconditions
A committee uses its annual term.
Steps
Request service without a term, with term-derived dates and beyond the term without explanation.
Expected
The missing and unexplained requests fail; the ordinary appointment takes term dates.
Data
A term-based body.
Bound to
Source
services-committees:modules/appointments/tests/integration/services/persistence/appointments.integration.spec.ts#refuses a seat without a term on a committee that uses terms
04 Capacity and seat consistencyvalidationapinegativetest
Proves
BR-CAP-CMT-CMT-009-05 BR-CAP-CMT-CMT-009-06 INV-DOM-CMT-CMT-003-03 INV-DOM-CMT-CMT-003-05
Preconditions
A board manages explicit places.
Steps
Request a seat-holder without a place, a seatless adviser, a foreign place and a mismatched position.
Expected
Only the adviser request succeeds.
Data
Two bodies and their places.
Bound to
Source
services-committees:modules/seats/tests/integration/services/persistence/seat-appointments.integration.spec.ts#requires a seat of a seat-holder when the committee manages seats
05 Concurrent and overlapping bookingsconcurrencyapinegativetest
Proves
BR-CAP-CMT-CMT-009-07 BR-CAP-CMT-CMT-009-08 INV-DOM-CMT-CMT-003-02 INV-DOM-CMT-CMT-002-03
Preconditions
A person already serves as Director and a place is available.
Steps
Race two requests for the place, overlap Director service and request distinct Treasurer and adviser service.
Expected
One raced request succeeds, duplicate Director service fails and the distinct capacities succeed.
Data
Concurrent appointment requests.
Bound to
services-committees:modules/seats/tests/unit/services/occupancy-rule.spec.ts#collides with a pending appointment, which books the seat
Source
services-committees:modules/seats/tests/integration/services/persistence/seat-appointments.integration.spec.ts#seats exactly one of them
06 Eligibility outcomes remain visiblevalidationapinegativetest
Proves
BR-CAP-CMT-CMT-009-09 BR-CAP-CMT-CMT-009-10
Preconditions
A type requires current membership; one candidate has lapsed membership and another environment lacks Membership.
Steps
Attempt ordinary and overridden service, then service without Membership.
Expected
The refusal can become a reasoned override; the absent dependency permits service with a skipped check.
Data
Membership verification fixtures.
Bound to
Source
services-committees:modules/appointments/tests/integration/services/eligibility/appointment-eligibility.integration.spec.ts#seats them with an override reason, and records it
07 Committee standing governs new servicetransitionapinegativetest
Proves
BR-CAP-CMT-CMT-009-11
Preconditions
Bodies are proposed, inactive and dissolved.
Steps
Request immediate service on each and an offer on the proposed body.
Expected
Immediate requests fail; the offer remains pending and inactive existing service continues.
Data
Three committee standings.
Bound to
services-committees:modules/committees/tests/integration/services/cmte-m1-rules.integration.spec.ts#refuses a proposed committee a request that asks for an appointment needing no acceptance, rather than turning it into an offer
services-committees:modules/committees/tests/integration/services/cmte-m1-rules.integration.spec.ts#lets existing service continue and stay readable while the committee is inactive
Source
services-committees:modules/committees/tests/integration/services/cmte-m1-rules.integration.spec.ts#refuses a new appointment to an inactive committee
08 Retry request identityinvariantapinegativeproposed
Proves
BR-CAP-CMT-CMT-009-12 INV-DOM-CMT-CMT-003-10
Preconditions
An appointment request carries a retry key.
Steps
Repeat it and reuse the key with different content.
Expected
The response replays once and different content is rejected.
Data
A stable retry key.
Source
services-committees:modules/seats/tests/e2e/s10-faa-board.e2e.spec.ts#seats Robin once
09 Versioned appointment retentioninvariantapiproposed
Proves
BR-CAP-CMT-CMT-009-13 INV-DOM-CMT-CMT-003-06
Preconditions
A new appointment is ready to record.
Steps
Create and end it, then inspect recorded versions.
Expected
Creation and ending remain attributed versions without deleting the appointment.
Data
An appointment lifecycle.
Source
services-committees:modules/appointments/tests/integration/services/persistence/appointments.integration.spec.ts#writes a version naming the actor
10 Read-only appointment controlspermissionbrowsernegativetest
Proves
BR-CAP-CMT-CMT-009-14
Preconditions
A reader and a staff caller can inspect a roster.
Steps
Open the roster as the reader and inspect appointment controls as staff.
Expected
The reader has no Appoint control; permitted staff can use the appointment action.
Data
Permission-specific callers.
Bound to
Source
react-console:acceptance/committees/playwright/journeys/console/CMTE-M1-S15.spec.ts#CMTE-M1-S15
11 Retry failure and interruptionfailureapinegativeproposed
Proves
BR-CAP-CMT-CMT-009-16
Preconditions
A claimed appointment request can fail or lose its completion after committing service.
Steps
Exercise work failure and interruption before response completion.
Expected
Work failure releases the claim; committed interruption retains the claim until its expiry and requires recovery review.
Data
Isolated failure injection.
Source
services-committees:modules/appointments/services/idempotency/idempotent-request.ts:idempotently
12 Qualification, acceptance, limits and access meet at placementinteractionapiproposed
Proves
BR-CAP-CMT-CMT-009-07 BR-CAP-CMT-CMT-008-01 BR-CAP-CMT-CMT-010-02 BR-CAP-CMT-CMT-012-01 BR-CAP-CMT-CMT-020-05
Preconditions
A qualified contact can hold a mapped reserved seat and has reached its normal term limit.
Steps
Request another term without and with a fresh limit reason, offer the permitted place, attempt a competing booking and accept the offer.
Expected
The limit refusal precedes placement, the reasoned offer reserves the place without a grant and acceptance creates serving participation and its mapped access.
Data
Run-owned governance records, named callers and controllable dependency responses; no shared customer data.
Source
rhythm-v2-docs:specs/committees/committees/planning/capabilities/CAP-CMT-CMT-009-seat-a-person-on-a-committee.md#BR-CAP-CMT-CMT-009-07; rhythm-v2-docs:specs/committees/committees/planning/capabilities/CAP-CMT-CMT-008-reserve-seats-and-fill-ex-officio-seats.md#BR-CAP-CMT-CMT-008-01; rhythm-v2-docs:specs/committees/committees/planning/capabilities/CAP-CMT-CMT-010-offer-a-seat-and-record-the-answer.md#BR-CAP-CMT-CMT-010-02; rhythm-v2-docs:specs/committees/committees/planning/capabilities/CAP-CMT-CMT-012-hold-people-to-term-limits-and-keep-seat-succession.md#BR-CAP-CMT-CMT-012-01; rhythm-v2-docs:specs/committees/committees/planning/capabilities/CAP-CMT-CMT-020-keep-derived-access-in-step-with-appointments-and-explain.md#BR-CAP-CMT-CMT-020-05; rhythm-v2-docs:specs/committees/committees/design/workflows/WF-CMT-CMT-003-appoint-a-person-or-offer-them-a-place.md; rhythm-v2-docs:specs/committees/committees/design/workflows/WF-CMT-CMT-007-change-many-appointments-as-one-background-job.md

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.