Skip to content

CAP-MBR-STR-018Maintain configuration with consistent change safeguards

Markdown

CAP-MBR-STR-018

Maintain configuration with consistent change safeguards

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaMembershipModuleOrganizational Structure, Membership Configuration and TermsRevision1

Read atservices-membership 5994c270react-console baf6dae3

The Formal Contract

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

Outcomes
Configuration mutations identify the version being changed.Record and owned-list changes succeed or fail together.
Surfaces
apijob

Controls

34 controls apply, from the corpus control catalogue.

TC-AVL-002 TC-AVL-003 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-005 TC-AZ-006 TC-CHG-001 TC-CHG-002 TC-CHG-003 TC-CHG-004 TC-CRY-001 TC-CRY-002 TC-CRY-003 TC-DAT-001 TC-DAT-004 TC-DAT-007 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-PI-001 TC-PI-003 TC-PI-005 TC-SEC-001 TC-SEC-004 TC-TEN-001 TC-TEN-002 TC-TEN-003

Permissions

KeyChecked atScope
membership.programs.readapitenant
membership.programs.manageapitenant
membership.configuration.readapitenant
membership.configuration.manageapitenant
membership.application.accessapitenant

Business Rules

11 rules, 9 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
Programs, types, reasons and policy sets use supplied or name-derived readable identifiers of at most 63 characters; packages use the product identity instead.
validationapi, service, databaseobserved
02must prove
Proposed
A retained record’s identifier is immutable and duplicate creation fails without changing it.
validationservice, databaseobserved
03must prove
Proposed
Changes and deletions require a positive version and reject stale versions without applying the mutation.
validationapi, serviceobserved
04must prove
Proposed
Configuration updates keep omitted keys, clear nullable keys when null is supplied, normalize empty strings, reject blank required text and unknown keys, and replace only submitted lists.
validationapi, serviceobserved
05must prove
Proposed
Foreign-key dependencies prevent deletion, while removal of an unreferenced record includes its owned lists.
lifecycledatabase, serviceobserved
06must prove
Proposed
A configuration record and its submitted lists are written transactionally, leaving no partial create or update when validation fails.
invariantserviceobserved
07must prove
Proposed
Known database checks and reference failures become field-naming refusals, with out-of-range values rejected by bounded input schemas or translated database errors.
validationservice, databasetest
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a type of a program that does not exist 400 naming program_id
08must prove
Proposed
Configuration lists default to 50 records in identifier order and cap oversized requests at 500; activity-filtered package pages can remain continuable even when empty.
calculationapi, serviceobserved
09must prove
Proposed
Another workspace’s record behaves as missing for reads, updates and deletions.
permissiondatabase, serviceobserved
10
Proposed
These configuration operations neither expose nor honor the stored lock flag.
policyserviceobserved
11
Proposed
An unchanged configuration save advances the version without creating a content revision.
policyservicedocumented

Scenarios

IdGivenWhenThenProvenance
01Two staff editors read the same package version.Each submits a change using that original version.The first change saves and the second must reconcile the newer record.test
services-membership:tests/acceptance/configuration/MBR-ACC-0084.acceptance.ts#MBR-ACC-0084: Two administrators edit the Regular package at the same time: the first save wins, the second is told to re-read, and the grants she re-sends get new ids

Edge Cases

IdGivenWhenThenProvenance
02An integration requests 501 configuration records.The configuration list handles the request.The response is limited to 500 without an oversized-request refusal.documented

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.