Skip to content

CAP-CMT-CMT-003Maintain the record of a governing body

Markdown

CAP-CMT-CMT-003

Maintain the record of a governing body

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationPartially observed

KindCapabilityProduct areaCommitteesModuleCommittee Structure, Service and Proposed AuthorityRevision6

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
Boards and working bodies remain findable as their people change.Committee parentage preserves separate bodies in a coherent tree.Corrections retain unrelated information.
Surfaces
consoleapi
Intent sources
services-committees:docs/milestones/plans/CMTE-M1-plan.md#2. Scopeservices-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#D1services-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#D6services-committees:docs/milestones/CMTE-M1-committees-seats-and-rosters.md#D12services-committees:docs/milestones/plans/CMTE-M1-plan.md#13. Later product rules applied to this plan (Andrew, 2026-10-19, after approval)services-committees:docs/milestones/plans/CMTE-M1-plan.md#CMTE-M1-S40

Controls

23 controls apply, from the corpus control catalogue.

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-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-003 TC-PI-005 TC-PRV-001 TC-PRV-002

Permissions

KeyChecked atScope
committees.committees.readapitenant
committees.committees.manageapitenant

Business Rules

14 rules, 11 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
Each committee references a known type and, when supplied, a code unique within the workspace.
validationservice, databasetest
02must prove
Proposed
A committee parent must exist and cannot be the committee itself or any descendant.
invariantdatabasetest
03
Proposed
Committee parentage supports navigation without passing membership, counts or access to the parent.
policydocumented
04must prove
Proposed
Committee edits change supplied fields and preserve omitted parentage, unit, status, portal choices and other information.
✓ Correcting Finance’s name leaves its board parent and unit attached.✗ A descriptive correction cannot silently remove the existing parent.
policyapi, service, consoletest
05must prove
Proposed
A committee update using an obsolete version is rejected without replacing the newer record.
invariantservicetest
services-committees:modules/committees/tests/e2e/cmte-m1-rules.e2e.spec.ts#refuses a PUT made against a stale version with 409
06must prove
Proposed
Committee creation copies its type's use of terms unless staff explicitly choose a different value.
calculationservice, consoletest
07must prove
Proposed
Omitted committee settings survive edits, and the effective profile identifies inherited sources while use of terms and portal visibility remain committee choices.
calculationservice, consoleobserved
08must prove
Proposed
Staff create and edit actions cannot enter dissolved status, and a dissolved committee cannot return to another status through editing.
origin: services-committees:docs/milestones/plans/CMTE-M1-plan.md#D12. Approve the remaining build-time rules as a group? (item 7)
lifecycleservicetest
services-committees:tests/integration/api/committee-status.integration.spec.ts#refuses a replace moving the dissolved committee back to active, 409 committee_dissolved
09
Proposed
Staff may edit a committee from any of proposed, active and inactive to either of the others.
lifecycleserviceobserved
10must prove
Proposed
Adopting terms requires every current or future appointment to identify a term, while past termless service and declined or cancelled offers do not prevent the switch.
origin: services-committees:docs/milestones/plans/CMTE-M1-plan.md#D12. Approve the remaining build-time rules as a group? (item 9)
validationservicetest
services-committees:modules/committees/tests/integration/services/cmte-m1-rules.integration.spec.ts#refuses a switch while a current appointment names no term, naming why
11must prove
Proposed
The product should support committee custom values and shared forms and layouts on committees as the sole extensible Committees record.
origin: services-committees:docs/milestones/plans/CMTE-M1-plan.md#13. Later product rules applied to this plan (Andrew, 2026-10-19, after approval)
no proof recorded yet
policyconsole, apiunknown
12
Proposed
Declared committee-layout permissions describe administration but do not demonstrate available form or layout operations.
permissionobserved
services-committees:aws/committees.service.ts:COMMITTEE_LAYOUTS_PERMISSIONS
13must prove
Proposed
Committee management permits creation and changes, while a reader receives the records without change controls and cannot write through the API.
permissionapi, consoletest
14must prove
Proposed
Committee creation and dissolution state their business events within the writing transaction; ordinary corrections state no committee event.
lifecycleserviceobserved

Scenarios

IdGivenWhenThenProvenance
01The committee explorer is open.Create Board of Trustees using the board type and populated fields.Use of terms follows the initial type choice and the record appears on its page, explorer and reporting dataset.test
02Finance belongs beneath the board and to a unit.Save a description-only correction.The description changes while parentage, unit and portal choices remain.test
03Audit belongs beneath Finance, which belongs beneath the board.Choose Audit as the board's parent.The circular parentage is refused.test

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.