An administrator configures the additional memberships associated with a package. A grant identifies another program and one of its classifications. Its dates can match the primary term or use a separate term rule. Staff also specify package-level affiliation counts and whether local dues accompany the offering. These choices specialize the program’s defaults for this package. The service validates submitted categories, counts and grant date rules. Each submitted list replaces its previous rows. Omitting a list retains it. Newly saved grants receive new identities, so consumers cannot treat a grant row as a permanent reference across replacements. Several target-program compatibility checks are absent. The product should define those checks and the handling of retained grants when a package’s program changes.
8 rules, 7 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.
Id
Rule
Kind
Enforced at
Provenance
01must prove
Proposed
A package accepts at most ten submitted grants, and rejects a submitted grant naming its own program.
Each grant must pair a membership type with its own program.
no proof recorded yet
validation
database
test
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 grant whose type is not of the granted program 400 naming grants: membership_type_id, and writes no package
03must prove
Proposed
A grant uses the primary term’s dates or a separately validated rule that the term engine can compute.
Package counts and dues choices override the corresponding program counts, while program primary, portal and suggestion choices remain; package-only kinds are allowed.
A student offering includes membership in the Section program.
The student completes the purchase.
The resulting holdings include both the primary program and Section.
test
services-membership:tests/acceptance/configuration/MBR-ACC-0111.acceptance.ts#MBR-ACC-0111: The well-known FAA configuration every developer and integration run starts from reads back exactly as the seed describes it, its packages' products exist with the right audiences, and a second seed run changes nothing
Edge Cases
Id
Given
When
Then
Provenance
02
A package adds a category absent from its program requirements.
A term is established under that package.
The category is permitted using its package counts and default program-specific choices.
test
services-membership:tests/acceptance/configuration/MBR-ACC-0104.acceptance.ts#MBR-ACC-0104: A package's unit rules override the program's counts: the Regular package demands a chapter the program leaves optional, a Section-only package names a type the program does not list, a region is refused, and clearing the rules hands control back to the program